A set of tools and APIs for static analysis, code visualization, navigation, and style-preserving source transformations across multiple languages.
pfff is a set of tools and APIs for static analysis, code visualization, navigation, and style-preserving source-to-source transformations like refactoring. It supports multiple programming languages and provides libraries for embedding code processing capabilities into custom applications.
Developers and researchers working on code analysis, refactoring tools, or IDE enhancements who need to programmatically process, query, or visualize source code across multiple languages.
It offers a unified framework with deep language support, style-preserving transformations, and powerful tools like syntactical grep and dependency visualization, making it a versatile choice for code analysis tasks.
Tools for code analysis, visualizations, or style-preserving source transformation.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers good support for C, Java, JavaScript, and PHP, with preliminary support for others like C++ and Rust, enabling cross-language code processing and bug detection with tools like scheck.
Tools such as spatch allow for refactoring and syntactical patching while maintaining original code formatting, as highlighted in the project's philosophy for non-invasive changes.
Includes a suite of tools like sgrep for pattern matching, codemap for visualization, and codegraph for dependency analysis, providing a full range for code investigation.
codequery enables interactive SQL-like queries using Prolog as the engine, allowing for complex structural analysis of entire codebases beyond simple grep searches.
For modern languages like Python, Rust, and C++, support is only preliminary, meaning parsers and tools may be buggy or lack features, limiting usefulness for these stacks.
Extending or embedding pfff requires OCaml knowledge, and the framework itself is built in OCaml, creating a steep learning curve for developers unfamiliar with the language.
As part of facebookarchive, the project is no longer actively developed, which risks compatibility issues with newer language versions and lack of support or updates.
Visualization tools like codemap and codegraph depend on GTK and Cairo, making them less suitable for headless servers or teams preferring web-based or modern UI frameworks.