48 dépôts
Static analysis tools for linting, quality checking, and refactoring.
Explore 48 awesome GitHub repositories matching part of an awesome list · Code Analysis. Refine with filters or upvote what's useful.
Ruff is a high-performance static analysis and code formatting tool designed for Python. Built in Rust, it functions as a comprehensive engine that scans source code to detect programming errors, security vulnerabilities, and deviations from established coding standards. By parsing source code into a structured tree representation, it provides both automated linting and style enforcement across entire projects. The tool distinguishes itself through its speed and deep integration into the development lifecycle. It utilizes parallelized file processing to maximize throughput on large codebases
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Ce projet est un formateur de code déterministe et sans compromis pour Python. Il fonctionne en analysant le code source dans un arbre de syntaxe abstraite et en le régénérant selon un ensemble rigide et opinionné de règles de style. En automatisant le processus de formatage, il élimine les débats manuels sur le style et la surcharge de configuration, garantissant que le code reste cohérent sur l'ensemble des projets, indépendamment de l'entrée originale. L'outil se distingue par son accent sur la vitesse et l'intégration transparente dans les flux de travail de développement. Il utilise la mise en cache de fichiers basée sur le contenu et le traitement parallèle pour maintenir des performances élevées sur de grandes bases de code, tout en prenant en charge les hooks de contrôle de version pour appliquer la cohérence du style avant que le code ne soit validé. Pour préserver l'historique du projet, il fournit des mécanismes pour ignorer des commits spécifiques dans le suivi des auteurs du contrôle de version, garantissant que les changements de style automatisés n'obscurcissent pas la paternité originale. Au-delà des fichiers sources standard, le formateur étend ses capacités pour inclure les notebooks Jupyter, les stubs de type et les exemples de code intégrés dans la documentation. Il offre une large compatibilité via des plugins pour les principaux éditeurs de texte et environnements de développement intégrés, ainsi qu'un support pour le protocole de serveur de langage. La configuration est gérée via des fichiers au niveau du projet qui sont automatiquement découverts dans la hiérarchie des répertoires, permettant un comportement cohérent sur divers environnements de développement.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
p3c is a Java static analysis tool and code quality linter designed to enforce professional coding guidelines and quality standards. It utilizes a set of custom rules based on the PMD engine to scan source code for style violations, performance bottlenecks, and potential bugs. The project is distributed as an IDE linting plugin that provides real-time feedback and warnings during development. It also includes functionality for pre-commit code quality gates, allowing modified files to be scanned and blocked if they violate defined rules before being committed to version control. The analysis
Alibaba coding guidelines for static analysis tools.
mypy is a static type checker for Python that analyzes source code to detect type errors and inconsistencies without executing the program. It functions as a static analysis tool and type inference engine, providing a gradual typing system that allows type hints to be added to a codebase incrementally while maintaining compatibility with dynamic typing. The project distinguishes itself through a combination of performance and precision features. It utilizes a daemon-based incremental checking system and multi-process parallel analysis to manage large codebases, supported by binary cache persi
Listed in the “Code Analysis” section of the Awesome Python awesome list.
This project is a high-performance static type checker and comprehensive development toolkit for Python. It functions as a core analysis engine that identifies type inconsistencies and enforces code correctness, while simultaneously providing a language server implementation to deliver real-time diagnostics and intelligence directly within development environments. The tool distinguishes itself through a parallelized execution engine that maximizes performance across large-scale codebases and monorepo structures. It supports gradual type adoption, allowing developers to integrate type checkin
Listed in the “Code Analysis” section of the Awesome Python awesome list.
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
Static analysis tool for identifying potential bugs in mobile code.
This project is a comprehensive, curated directory of static analysis, linting, and security scanning utilities. It serves as a central resource for developers to discover, compare, and select tools based on specific programming languages, licensing models, and integration requirements. The directory distinguishes itself by providing deep metadata for each listed utility, including community-driven popularity rankings, maintenance status, and deployment methods. By aggregating these tools into a single searchable index, it enables teams to identify solutions for enforcing coding standards, ma
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Checkstyle is a Java static analysis tool and linter designed to identify and enforce coding standards and best practices. It functions as a code quality auditor and Javadoc validation tool, checking source code against configurable rulesets to ensure structural and stylistic consistency. The project allows for the creation of custom linting rules by extending a core API to inspect the abstract syntax tree. It further enables specialized validation through the use of XPath expressions to query the syntax tree for specific code patterns and violations. Capability areas include the enforcement
Static analysis of coding conventions and standards.
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
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Error Prone is a static code analyzer and Java compiler extension that identifies common programming mistakes during the build process. It functions as a compiler wrapper that flags potential errors as compile-time failures to prevent bugs from reaching execution. The tool integrates directly into the Java compilation workflow to provide compile-time validation. It allows for the definition of custom linting rules and analysis checks to enforce specific coding standards and detect prohibited API usage. The system utilizes abstract syntax tree analysis and type-aware pattern matching to inspe
Catches common programming mistakes at compile-time.
isort is a Python import sorter and code formatter that organizes import statements into alphabetical groups and sections. It functions as both a utility to automatically rearrange imports for a consistent layout and as a linting tool to verify if code follows specific ordering rules. The project provides configurable layout settings for indentation, wrapping modes, and section ordering to ensure compliance with project style guides and PEP 8. It allows for the exclusion of specific lines or files through inline comments and docstrings. The tool integrates into development workflows via IDE
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Pylint is a static code analyzer for Python that scans source code for errors, coding standard violations, code smells, and type-related issues without executing the program. It functions as a plugin-based linter framework, allowing users to extend its analysis capabilities with custom or third-party checks for project-specific rules and framework support. The tool also includes a duplicate code detector that identifies identical or near-identical code blocks across a project to help reduce redundancy. Beyond its core linting functionality, Pylint can generate UML class and package diagrams f
Listed in the “Code Analysis” section of the Awesome Python awesome list.
PMD est un analyseur de code statique multi-langage utilisé pour identifier les défauts de programmation, les variables inutilisées et le code mort sans exécuter le programme. Il fonctionne comme un détecteur de code smell et un enforcer de standards de codage, garantissant que le code source adhère à des conventions de nommage spécifiques, des exigences structurelles et des guides de style de projet. Le projet dispose d'un moteur de règles basé sur XPath qui permet aux utilisateurs de définir des patterns d'analyse personnalisés en utilisant des requêtes sur un arbre de syntaxe abstraite. Il inclut également un détecteur de copier-coller pour identifier les blocs de code dupliqués à travers plusieurs fichiers et un concepteur de règles visuel pour créer et tester des patterns de détection personnalisés. La surface d'analyse couvre la détection de bugs, l'identification de problèmes de maintenabilité pour réduire la dette technique, et la vérification des implémentations de tests. Il fournit également des capacités pour identifier les méthodes trop complexes et les listes de paramètres excessives.
Source code analysis for finding bad coding practices.
Pyrefly is a static type checker for Python that operates as a language server, delivering real-time diagnostics, completions, and navigation in any editor supporting the Language Server Protocol. It also performs static tensor shape analysis, using symbolic dimension variables and arithmetic to verify shape consistency in deep learning models without runtime execution. Beyond core type checking, Pyrefly supports gradual adoption workflows: it can generate a baseline of known errors so only new issues are reported, migrate configuration from other type checkers, and automatically suppress exi
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Credo est un outil d'analyse statique et un linter pour Elixir. Il fonctionne comme un analyseur de qualité de code qui scanne le code source pour identifier les incohérences stylistiques, les erreurs courantes et les vulnérabilités de sécurité potentielles. L'outil fournit un framework personnalisable pour définir et tester des règles spécialisées afin d'appliquer des normes de codage spécifiques au projet. Il identifie les fragments de code complexes et la duplication pour mettre en évidence les opportunités de refactorisation et de simplification. Ses capacités couvrent les revues de code automatisées, l'application des normes de codage Elixir et les retours en temps réel aux développeurs via des intégrations d'éditeurs.
Static code analysis for consistency and style.
Typeshed est une collection de définitions de types statiques et de stubs pour la bibliothèque standard Python et les paquets tiers. Il sert de ressource standardisée pour les analyseurs statiques et les environnements de développement intégrés (IDE) afin de valider l'exactitude du code et de fournir une complétion de code basée sur les types sans modifier le code source original des bibliothèques. Le projet se concentre sur la création et la maintenance de fichiers d'annotations de type externes qui séparent les annotations de type de l'implémentation à l'exécution. Il utilise un système de versioning et de mappage de ces stubs vers des versions spécifiques de paquets runtime pour maintenir la compatibilité. Le dépôt inclut une suite de validation pour assurer l'exactitude de ces définitions. Cela couvre la validation runtime-vers-stub pour identifier les discordances entre les types déclarés et réels, la vérification de la structure des répertoires et les tests de régression pour empêcher la réintroduction de bugs de typage connus.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Pytype est un outil d'analyse de code statique et un moteur d'inférence de type pour Python. Il fonctionne comme un analyseur de type statique qui détecte les incompatibilités de type et vérifie les annotations de type sans nécessiter d'indices manuels complets, tout en servant également de générateur de stubs de type pour produire des fichiers de définition autonomes. Le projet se distingue en déterminant automatiquement les types de variables et de fonctions par une analyse des motifs de code et des affectations. Ce moteur d'inférence permet une vérification structurelle du code et la génération de stubs de type qui décrivent les interfaces des modules et fonctions. Le système couvre de larges opérations d'analyse statique, incluant la validation structurelle des hiérarchies de classes et des appels de fonction, et le suivi des symboles pour détecter les erreurs d'espace de noms et les violations d'accès aux attributs. Il fournit également des primitives de vérification de type pour appliquer les annotations et un système de type capable de modéliser des structures de données complexes utilisant des unions et des optionnels.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
MonkeyType est un outil d'inférence de type et d'analyse au runtime pour Python. Il collecte les types réels des arguments et des retours à partir des appels de fonction pendant l'exécution du programme pour automatiser la production d'annotations de type statiques et de fichiers stub compatibles. Le système convertit les traces d'exécution capturées en indices de type statiques, qui peuvent être insérés directement dans les définitions de fonction du code source ou utilisés pour générer des stubs de type externes. Ce processus permet l'ajout de sécurité de type aux bases de code existantes en analysant les types de données réels plutôt que par un audit manuel. Les capacités de l'outil couvrent la collecte de types au runtime, l'inférence de type dynamique et la génération de définitions de type statiques. Il utilise la modification du code source et la persistance des traces d'appel pour mapper les modèles observés au runtime vers des signatures statiques.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Vulture est un outil d'analyse statique et un linter conçu pour trouver les variables, fonctions et classes inutilisées dans le code source Python. Il opère comme un détecteur de code mort et un chercheur de code inutilisé qui scanne les fichiers sources pour identifier les expressions et importations inaccessibles sans exécuter le code. L'outil emploie un système de score heuristique basé sur la confiance pour attribuer des valeurs de probabilité aux détections, aidant à distinguer les symboles réellement inutilisés des faux positifs potentiels. Il aide en outre à élaguer la logique morte en triant les classes et fonctions inutilisées détectées par nombre de lignes pour prioriser la suppression des plus gros blocs de code. La surface d'analyse inclut l'analyse de l'accessibilité du flux de contrôle, le suivi des références de symboles et la capacité de supprimer les faux positifs via des modèles de noms, des décorateurs ou des commentaires d'ignorance. Vulture prend également en charge la génération et la gestion de listes blanches via des modules mock pour exclure des éléments spécifiques des scans ultérieurs. Les règles d'analyse à l'échelle du projet et les chemins cibles peuvent être gérés via des fichiers de configuration, incluant la prise en charge du format TOML.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
code2flow est un mapper de flux de programme statique et un générateur de graphe d'appels de code source. Il analyse le code source pour produire des diagrammes de flux visuels qui mappent les relations d'appel de fonction et les chemins d'exécution. Le projet inclut un visualiseur de trace d'appel asynchrone qui suit les chemins d'exécution à travers les appels async et await pour mapper la logique des programmes asynchrones. Il fournit également une interface d'analyse de code programmable, permettant à la logique de génération de graphe d'appels d'être intégrée dans d'autres applications logicielles. Le système gère l'analyse de code statique en convertissant le code source en arbres de syntaxe abstraits pour identifier les définitions de fonction et les sites d'appel. Il prend en charge le filtrage de graphe d'appels pour restreindre la portée des visualisations via des filtres de contenu et l'extraction de chemin limitée en profondeur, tout en fournissant un style visuel pour distinguer les flux logiques.
Listed in the “Code Analysis” section of the Awesome Python awesome list.