A static analysis engine for PHP that detects type mismatches in function arguments, return values, and method calls.
Tuli is a static analysis engine for PHP that automatically detects type mismatches in function arguments, return values, and method calls. It analyzes PHP source code to identify potential type errors before code execution, helping developers maintain type safety in their codebases.
PHP developers working with typed codebases who want to catch type-related bugs early, particularly those using PHP's type hinting features in functions and methods.
Tuli provides focused, practical type analysis specifically for PHP, with inheritance-aware checking that handles complex class hierarchies and type widening scenarios that simpler linters might miss.
A static analysis engine
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Specializes in detecting type mismatches in function arguments and return values, as shown in the example where it catches float-to-int conversions in function calls.
Handles complex class hierarchies by analyzing all possible method definitions, ensuring type safety across inheritance, demonstrated in the second example with classes A, B, and C.
Installation is straightforward via Composer with a single command, making it simple to add to existing PHP projects without complex setup.
Prioritizes real-world type errors over theoretical completeness, catching issues like missing return statements in typed functions, as indicated in the output examples.
The README explicitly states 'Todo: * A lot', indicating many planned features are missing, limiting its scope compared to full-fledged static analyzers.
Installed via 'dev-master', suggesting it's in active development with potential unstable releases or breaking changes, not ideal for production use.
The README is brief and primarily provides examples; lack of comprehensive documentation could hinder advanced usage, configuration, or troubleshooting.
Only checks type-related issues and does not cover other static analysis aspects like code smells or performance issues, necessitating additional tools for broader analysis.