For cpg data flow analysis, the strongest matches are secure-software-engineering/phasar (Phasar is a C++ static analysis framework built specifically), ajinabraham/nodejsscan (This project is a static application security testing tool) and github/codeql (CodeQL is a flagship code property graph analysis tool). bearer/bearer and presidentbeef/brakeman round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Hand-picked open-source tools for code property graph and data flow analysis, ranked by stars and activity. Compare and find the right one.
Phasar is a static analysis framework designed for the inspection of software logic through the processing of compiler intermediate representations. It provides a modular pipeline for building program representations, including call graphs, control flow graphs, and type hierarchies, which serve as the foundation for deep structural analysis of software behavior. The framework specializes in interprocedural data flow analysis and pointer alias resolution, enabling the tracking of information movement across function boundaries and the identification of indirect memory access patterns. By lever
Phasar is a C++ static analysis framework built specifically for interprocedural data flow analysis, pointer resolution, and program representation generation to support security auditing and vulnerability detection.
nodejsscan is a static analysis security tool and vulnerability detection engine designed to scan Node.js source code for security flaws and common coding vulnerabilities. It functions as a static application security testing tool that analyzes code without executing the program. The tool operates as a security linter that can be integrated into continuous integration pipelines to block insecure code from merging into main branches. It automates the auditing process through rule-based detection and pattern-based static analysis. The project provides capabilities for vulnerability alert autom
This project is a static application security testing tool for Node.js source code, though it relies on pattern-based detection and AST parsing rather than full code property graph based data flow analysis.
CodeQL is a semantic code analysis engine and vulnerability scanning tool that treats source code as data. It utilizes a static analysis query language to define complex patterns and security vulnerabilities within a code graph database. The system represents source code as a relational database, enabling the execution of structural queries and data flow analysis. This approach allows for the detection of security flaws and coding errors across large-scale repositories. The tool provides capabilities for automated code auditing, static analysis security testing, and custom vulnerability dete
CodeQL is a flagship code property graph analysis tool that treats source code as a database, providing a powerful declarative query language for advanced data flow analysis and static application security testing across multiple languages.
Bearer is a static analysis security testing tool and privacy compliance auditor. It identifies security vulnerabilities, hard-coded secrets, and privacy risks in source code through static analysis and data flow tracing. The tool distinguishes itself by tracking the movement of sensitive data through code to identify leaks and by mapping personal and health-related information flows to generate evidence for privacy impact assessments. It also provides differential scanning for pull requests and uses fingerprint-based suppression to exclude known false positives from reports. The platform co
Bearer is a static application security testing tool that performs data flow tracing to identify vulnerabilities and privacy risks, though it uses a purpose-built scanning engine rather than an explicit, queryable code property graph.
Brakeman is a static analysis security tool and scanner specifically designed for Ruby on Rails source code. It identifies common security vulnerabilities, such as injection and cross-site scripting, by analyzing the application codebase without executing the application. The tool functions as a security auditor that detects mass assignment risks and template vulnerabilities. It evaluates the final output of rendered views and identifies unrestricted assignment patterns that could allow unauthorized modification of model attributes. The system provides vulnerability management through the us
Brakeman is a static analysis security scanner for Ruby on Rails that performs targeted vulnerability detection, making it a fitting domain tool even though it is specialized for a single language and lacks a general code property graph engine.
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 is a static analysis tool that supports pattern matching and taint analysis for vulnerability detection, though it relies on abstract syntax tree structural patterns rather than a full code property graph.
Infer is a static analysis toolset for Java, C, C++, and Objective-C designed to detect memory leaks, null dereferences, and resource bugs. It functions as a multi-language bug finder that identifies race conditions, deadlocks, and memory safety issues by translating source code into a common intermediate representation for analysis. The project distinguishes itself through an inter-procedural data flow analyzer that tracks movement between sources and sinks to detect tainted flows and generate data flow graphs. It also includes a framework for verifying temporal properties and reachability u
Infer is a static analysis toolset that translates source code into intermediate representations to perform inter-procedural data flow analysis and detect security and resource bugs, though it relies on its own analysis engine rather than a distinct code property graph query model.
SVF is an open-source static program analysis framework and points-to analysis library that tracks memory references, variable aliases, and data dependencies across whole programs. The platform translates compiled intermediate code formats into unified internal representations, constructing constraint graphs, call graphs, and control-flow graphs to model interprocedural execution behavior and memory state. The framework incorporates specialized engines for flow-sensitive, flow-insensitive, and context-sensitive pointer analysis alongside sparse value-flow graph generation. It features memory
This LLVM-based static analysis framework focuses on value-flow and pointer analysis for C and C++, serving as a powerful building block for data flow auditing even though it lacks a dedicated vulnerability query language or multi-language support beyond C/C++/LLVM IR.
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 tool for Python security auditing, but it relies on abstract syntax tree parsing rather than constructing a code property graph (CPG) for data flow analysis.
Flare-floss is a security utility and static binary string extractor designed to uncover hidden text and configuration data within compiled binaries. It functions as an obfuscated string decoder and reverse engineering tool to translate encoded strings into readable text for security auditing. The project employs emulated execution to capture the decrypted state of strings in memory by running small chunks of binary code in a virtual CPU. It further utilizes static analysis disassembly, intermediate representation analysis, and heuristic-based pattern matching to identify and decode strings t
This repository is a binary string extraction and malware deobfuscation tool rather than a code property graph analysis framework for data flow vulnerability detection.
This project provides an integration of Tree-sitter into the Neovim editor to enable structural code analysis. It serves as a framework for structural code navigation, context-aware syntax highlighting, and the management of language-specific parsers. The system distinguishes itself through a multi-language injection handler that identifies and parses embedded languages within a single document. It uses a dedicated parser manager to install, update, and remove grammar definitions and their associated query files. The tool covers several capability areas including incremental text selection,
This project provides a syntax parsing and navigation framework for an editor rather than a code property graph tool for static security auditing and data flow analysis.
Secguide is an API security hardening framework and a comprehensive knowledge base of secure coding guidelines. It provides a multi-language security standard and a set of static analysis rules designed to identify security flaws and protect application programming interfaces from common exploits. The project functions as a reference library of security patterns and remediation guides, maintaining consistent security requirements across various programming languages. It utilizes rule-based pattern matching and a static analysis pipeline to detect dangerous API calls and vulnerabilities within
Secguide is a static analysis and secure coding guideline framework focused on pattern matching rather than code property graph (CPG) construction and data flow analysis.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| secure-software-engineering/phasar | 1K | C++ | NOASSERTION | |
| ajinabraham/nodejsscan | 2.6K | CSS | GPL-3.0 | |
| github/codeql | 9.3K | CodeQL | mit | |
| bearer/bearer | 2.6K | Go | other | |
| presidentbeef/brakeman | 7.2K | Ruby | NOASSERTION | |
| semgrep/semgrep | 15.6K | OCaml | LGPL-2.1 | |
| facebook/infer | 15.6K | OCaml | MIT | |
| svf-tools/svf | 1.7K | C++ | NOASSERTION | |
| pycqa/bandit | 8.1K | Python | Apache-2.0 | |
| mandiant/flare-floss | 3.9K | Python | apache-2.0 |