For a static analysis tool for code security, the first results are millionco/react-doctor (React Doctor is a static analysis tool focused on React codebases, offering CI integration and AST pattern matching, but it lacks the multi-language support and general-purpose rule writing that defines Semgrep, so it is a narrower match for this search), pmd/pmd (PMD is a multi-language static analyzer with a CLI, custom XPath-based rules, and CI integration, making it a related pattern-matching tool to Semgrep, though it uses AST queries rather than Semgrep's surface-pattern syntax) and semgrep/semgrep (Semgrep itself: an open-source static analysis security testing tool that matches source code against declarative patterns, supports many languages, custom rules, CLI, and CI integration — exactly the tool you're looking for). eslint/eslint and crytic/slither round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
We curate open-source GitHub repositories matching “semgrep semgrep”. Results are ranked by relevance to your query — pick filters below to narrow, or refine with AI.
React Doctor is a static analysis tool for React codebases designed to identify security, performance, and architectural issues. It functions as a codebase health diagnostic engine that produces numeric health scores and structured diagnostics to improve maintainability. The tool features an incremental code scanner that evaluates only the files changed between branches or staged in the working tree to provide fast feedback. It is designed to operate as a quality gate within CI pipelines, allowing for the enforcement of codebase health standards by failing builds on critical errors. The anal
React Doctor is a static analysis tool focused on React codebases, offering CI integration and AST pattern matching, but it lacks the multi-language support and general-purpose rule writing that defines Semgrep, so it is a narrower match for this search.
PMD is a multi-language static code analyzer used to identify programming flaws, unused variables, and dead code without executing the program. It functions as a code smell detector and coding standard enforcer, ensuring source code adheres to specific naming conventions, structural requirements, and project style guides. The project features an XPath-based rule engine that allows users to define custom analysis patterns using queries against an abstract syntax tree. It also includes a copy-paste detector to identify duplicated code blocks across multiple files and a visual rule designer for
PMD is a multi-language static analyzer with a CLI, custom XPath-based rules, and CI integration, making it a related pattern-matching tool to Semgrep, though it uses AST queries rather than Semgrep's surface-pattern syntax.
Semgrep is a static analysis security testing tool designed to identify vulnerabilities and logic errors by matching source code against declarative patterns. It functions as an automated scanner that integrates into development workflows to detect insecure code patterns and enforce coding standards before deployment. The engine utilizes a language-agnostic intermediate representation and a modular parser architecture to normalize diverse programming languages into a unified format. This allows for consistent rule execution across different codebases, enabling users to perform custom structur
Semgrep itself: an open-source static analysis security testing tool that matches source code against declarative patterns, supports many languages, custom rules, CLI, and CI integration — exactly the tool you're looking for.
This project is a static analysis engine designed to identify patterns, enforce coding standards, and automate code quality improvements in software projects. By parsing source code into structured abstract syntax trees, it enables deep programmatic inspection and the automated remediation of identified programming issues. The engine functions as a pluggable linting framework, allowing developers to extend its core capabilities through a modular architecture. Users can inject custom rules, parsers, and processors to support non-standard file formats or domain-specific logic. This extensibilit
ESLint is a pluggable linting framework for static code analysis and pattern matching, but it primarily targets JavaScript/TypeScript, making it a related but narrower tool than the multi-language Semgrep you are looking for.
Slither is a static analysis tool for Solidity and Vyper smart contracts, which fits the pattern-matching static analysis category but is limited to Ethereum-specific languages, whereas the visitor likely wants a general-purpose tool like Semgrep.
Bandit is a static analysis security testing tool and vulnerability detection scanner for Python source code. It functions as a security-focused linter and static analyzer that identifies common vulnerabilities and architectural flaws without executing the program. The tool utilizes an abstract syntax tree to analyze code patterns and identifies risky function calls or insecure configurations. It employs a plugin-based rule engine to decouple scanning logic from individual security checks and supports configuration-driven filtering to exclude specific files or ignore certain warnings. The sy
Bandit is a static analysis security tool for Python code that uses AST-based pattern matching and supports custom rules, fitting the type of tool the visitor is after, though it is Python-specific rather than multi-language.
eslint-plugin-unicorn is an ESLint plugin that provides a large set of opinionated lint rules for JavaScript and TypeScript projects. Its primary purpose is to enforce code quality, prevent common errors and anti-patterns, and promote a consistent coding style across a codebase. The plugin distinguishes itself by offering an opinionated preset configuration that imposes a specific coding style rather than leaving all choices to the user. Its rules are specifically designed to catch logical mistakes and code smells that go beyond standard ESLint rules. As an added capability, the plugin also e
eslint-plugin-unicorn is an opinionated ESLint plugin for JavaScript and TypeScript linting, not a general-purpose multi-language static analysis tool like Semgrep with CLI and CI integration for custom pattern rules across many languages.
This project is a React ESLint plugin and static analysis tool designed to validate React component syntax and enforce recommended framework patterns. It functions as a JavaScript static analysis utility that scans source code to identify errors and maintain consistent coding standards. The plugin focuses on the enforcement of React best practices and the prevention of common bugs, such as missing keys in iterators and improper prop usage. It provides a system for validating JSX syntax and style to ensure a uniform codebase. The tool covers broader capabilities in frontend code quality autom
This is a static analysis plugin for React code, but it’s specific to JavaScript/JSX and works as a linting plugin rather than a general-purpose, multi-language pattern-matching tool like Semgrep.
Credo is a static analysis tool and linter for Elixir. It functions as a code quality analyzer that scans source code to identify stylistic inconsistencies, common mistakes, and potential security vulnerabilities. The tool provides a customizable framework for defining and testing specialized rules to enforce project-specific coding standards. It identifies complex code fragments and duplication to highlight opportunities for refactoring and simplification. Its capabilities cover automated code reviews, the enforcement of Elixir coding standards, and real-time developer feedback through edit
Credo is a static analysis and linting tool for Elixir, but unlike Semgrep it is language-specific and focuses on code quality and style rather than multi-language pattern-based matching, making it a related but narrower tool for your search.
gosec is a static analysis security tool designed to scan Go source code for vulnerabilities and common coding flaws. It functions as a security analyzer that inspects the abstract syntax tree to identify insecure function calls, API usage, and potential security risks. The tool distinguishes itself by mapping detected vulnerabilities to Common Weakness Enumeration identifiers for standardized reporting and integrating with external AI models to suggest code fixes for identified issues. Its capabilities cover the detection of injection vulnerabilities, hardcoded credentials, weak cryptograph
gosec is a static analysis security tool focused specifically on Go source code and known vulnerability patterns, not a multi-language pattern-matching engine like Semgrep—so it's related but serves a different, narrower purpose.
Mobile Security Framework is an automated security testing platform designed for the analysis of Android, iOS, and Windows mobile application binaries. It functions as a comprehensive suite for identifying security vulnerabilities, privacy risks, and malicious code within mobile software packages. The framework distinguishes itself by combining static and dynamic analysis techniques to evaluate application behavior. It performs static inspection of source code and binaries to detect insecure patterns, while simultaneously utilizing dynamic instrumentation and containerized sandboxing to monit
MobSF is a mobile‑app security testing framework, not the general‑purpose code‑pattern‑matching tool like Semgrep you are looking for; it performs static analysis on mobile binaries but is focused on mobile security rather than multi‑language pattern matching with custom rules.
Standard is a suite of static analysis tools for JavaScript, comprising a linter, formatter, and a predefined style guide. It functions as a static code analyzer that scans source code for style violations and potential errors without executing the program. The project provides an automatic code fixer that rewrites source code to resolve formatting issues and enforce syntax consistency. It implements a standardized set of rules for JavaScript formatting and syntax to ensure a uniform appearance across different projects. The system covers a wide range of static analysis capabilities, includi
Standard is a JavaScript linter and formatter with a fixed style guide, not a multi-language, pattern-matching static analysis tool like Semgrep that supports custom rules across many languages.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| millionco/react-doctor | 12.8K | TypeScript | MIT | |
| pmd/pmd | 5.4K | Java | NOASSERTION | |
| semgrep/semgrep |
| 15.6K |
| OCaml |
| LGPL-2.1 |
| eslint/eslint | 27.3K | JavaScript | MIT |
| crytic/slither | 6.1K | Python | agpl-3.0 |
| pycqa/bandit | 8.1K | Python | Apache-2.0 |
| sindresorhus/eslint-plugin-unicorn | 4.9K | JavaScript | mit |
| yannickcr/eslint-plugin-react | 9.3K | JavaScript | MIT |
| rrrene/credo | 5.2K | Elixir | MIT |
| securego/gosec | 8.9K | Go | Apache-2.0 |