48 Repos
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.
Dieses Projekt ist ein kompromissloser, deterministischer Code-Formatter für Python. Er funktioniert, indem er Quellcode in einen abstrakten Syntaxbaum parst und ihn gemäß einer starren, meinungsstarken Menge von Stilregeln neu generiert. Durch die Automatisierung des Formatierungsprozesses werden manuelle Stildiskussionen und Konfigurationsaufwand eliminiert, wodurch sichergestellt wird, dass der Code über ganze Projekte hinweg konsistent bleibt, unabhängig von der ursprünglichen Eingabe. Das Tool zeichnet sich durch seinen Fokus auf Geschwindigkeit und nahtlose Integration in Entwicklungsworkflows aus. Es nutzt inhaltsbasiertes Datei-Caching und parallele Verarbeitung, um eine hohe Leistung bei großen Codebasen aufrechtzuerhalten, während es gleichzeitig Versionskontroll-Hooks unterstützt, um die Stil-Konsistenz vor dem Commit sicherzustellen. Um die Projekthistorie zu bewahren, bietet es Mechanismen, um spezifische Commits in der Versionskontroll-Blame-Verfolgung zu ignorieren, wodurch sichergestellt wird, dass automatisierte Stiländerungen die ursprüngliche Autorenschaft nicht verdecken. Über Standard-Quelldateien hinaus erweitert der Formatter seine Fähigkeiten auf Jupyter-Notebooks, Typ-Stubs und eingebettete Codebeispiele innerhalb der Dokumentation. Er bietet breite Kompatibilität durch Plugins für gängige Texteditoren und integrierte Entwicklungsumgebungen sowie Unterstützung für das Language Server Protocol. Die Konfiguration wird über projektweite Dateien verwaltet, die automatisch innerhalb der Verzeichnishierarchie entdeckt werden, was ein konsistentes Verhalten über verschiedene Entwicklungsumgebungen hinweg ermöglicht.
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 ist ein mehrsprachiger statischer Code-Analysator, der verwendet wird, um Programmierfehler, ungenutzte Variablen und toten Code zu identifizieren, ohne das Programm auszuführen. Es fungiert als Code-Smell-Detektor und Durchsetzer von Codierungsstandards und stellt sicher, dass der Quellcode spezifischen Namenskonventionen, strukturellen Anforderungen und Projekt-Styleguides entspricht. Das Projekt verfügt über eine XPath-basierte Regel-Engine, die es Benutzern ermöglicht, benutzerdefinierte Analysemuster mittels Abfragen gegen einen abstrakten Syntaxbaum zu definieren. Es enthält zudem einen Copy-Paste-Detektor zur Identifizierung duplizierter Codeblöcke über mehrere Dateien hinweg sowie einen visuellen Regel-Designer zum Erstellen und Testen benutzerdefinierter Erkennungsmuster. Die Analyseoberfläche deckt die Fehlererkennung, die Identifizierung von Wartbarkeitsproblemen zur Reduzierung technischer Schulden sowie die Verifizierung von Testimplementierungen ab. Zudem bietet es Funktionen zur Identifizierung übermäßig komplexer Methoden und zu langer Parameterlisten.
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 ist ein Tool zur statischen Analyse und ein Linter für Elixir. Es fungiert als Code-Qualitätsanalysator, der den Quellcode scannt, um stilistische Inkonsistenzen, häufige Fehler und potenzielle Sicherheitslücken zu identifizieren. Das Tool bietet ein anpassbares Framework zum Definieren und Testen spezialisierter Regeln, um projektspezifische Codierungsstandards durchzusetzen. Es identifiziert komplexe Codefragmente und Duplikate, um Möglichkeiten für Refactoring und Vereinfachung aufzuzeigen. Seine Funktionen decken automatisierte Code-Reviews, die Durchsetzung von Elixir-Codierungsstandards und Echtzeit-Feedback für Entwickler durch Editor-Integrationen ab.
Static code analysis for consistency and style.
Typeshed ist eine Sammlung statischer Typdefinitionen und Stubs für die Python-Standardbibliothek und Drittanbieter-Pakete. Es dient als standardisierte Ressource für statische Analysetools und integrierte Entwicklungsumgebungen (IDEs), um die Korrektheit von Code zu validieren und typbasierte Code-Vervollständigung bereitzustellen, ohne den ursprünglichen Quellcode der Bibliotheken zu verändern. Das Projekt konzentriert sich auf die Erstellung und Wartung externer Type-Hint-Dateien, die Typannotationen von der Laufzeitimplementierung trennen. Es nutzt ein System zur Versionierung und zum Mapping dieser Stubs auf spezifische Versionen von Laufzeitpaketen, um die Kompatibilität zu wahren. Das Repository enthält eine Validierungssuite, um die Genauigkeit dieser Definitionen sicherzustellen. Dies umfasst die Validierung von Laufzeit zu Stub, um Diskrepanzen zwischen deklarierten und tatsächlichen Typen zu identifizieren, die Überprüfung der Verzeichnisstruktur sowie Regressionstests, um die Wiedereinführung bekannter Typ-Checking-Fehler zu verhindern.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Pytype ist ein Tool zur statischen Code-Analyse und eine Typinferenz-Engine für Python. Es fungiert als statischer Typ-Analysator, der Typ-Diskrepanzen erkennt und Typ-Annotationen verifiziert, ohne dass vollständige manuelle Hinweise erforderlich sind, und dient gleichzeitig als Typ-Stub-Generator zur Erstellung eigenständiger Definitionsdateien. Das Projekt zeichnet sich dadurch aus, dass es Variablen- und Funktionstypen durch eine Analyse von Codemustern und Zuweisungen automatisch bestimmt. Diese Inferenz-Engine ermöglicht eine strukturelle Code-Verifizierung und die Generierung von Typ-Stubs, die die Schnittstellen von Modulen und Funktionen beschreiben. Das System deckt breite statische Analyseoperationen ab, einschließlich struktureller Validierung von Klassenhierarchien und Funktionsaufrufen sowie Symbol-Tracking zur Erkennung von Namespace-Fehlern und Zugriffen auf ungültige Attribute. Es bietet zudem Typ-Prüf-Primitive zur Durchsetzung von Annotationen und ein Typsystem, das in der Lage ist, komplexe Datenstrukturen unter Verwendung von Unions und Optionals zu modellieren.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
MonkeyType ist ein Laufzeit-Typ-Inferenz- und Analysetool für Python. Es sammelt tatsächliche Argument- und Rückgabetypen von Funktionsaufrufen während der Programmausführung, um die Erstellung statischer Typ-Annotationen und kompatibler Stub-Dateien zu automatisieren. Das System konvertiert erfasste Ausführungs-Traces in statische Typ-Hinweise, die direkt in Funktionsdefinitionen des Quellcodes eingefügt oder zur Generierung externer Typ-Stubs verwendet werden können. Dieser Prozess ermöglicht das Hinzufügen von Typsicherheit zu bestehenden Codebasen durch die Analyse realer Datentypen anstelle manueller Audits. Die Funktionen des Tools decken die Laufzeit-Typ-Sammlung, dynamische Typ-Inferenz und die Generierung statischer Typ-Definitionen ab. Es nutzt Quellcode-Modifikation und Call-Trace-Persistenz, um beobachtete Laufzeitmuster auf statische Signaturen abzubilden.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Vulture ist ein statisches Analysetool und Linter, das entwickelt wurde, um ungenutzte Variablen, Funktionen und Klassen im Python-Quellcode zu finden. Es arbeitet als Dead-Code-Detektor und Finder für ungenutzten Code, der Quelldateien scannt, um nicht erreichbare Ausdrücke und Importe zu identifizieren, ohne den Code auszuführen. Das Tool verwendet ein konfidenzbasiertes heuristisches Bewertungssystem, um Erkennungen Wahrscheinlichkeitswerte zuzuweisen und so zwischen tatsächlich ungenutzten Symbolen und potenziellen False Positives zu unterscheiden. Es unterstützt zudem das Bereinigen von Dead-Code, indem erkannte ungenutzte Klassen und Funktionen nach Zeilenanzahl sortiert werden, um die Entfernung der größten Codeblöcke zu priorisieren. Die Analyseoberfläche umfasst Control-Flow-Reachability-Analyse, Symbol-Referenz-Tracking und die Möglichkeit, False Positives durch Namensmuster, Decorators oder Ignore-Kommentare zu unterdrücken. Vulture unterstützt zudem die Erstellung und Verwaltung von Whitelists über Mock-Module, um spezifische Elemente von nachfolgenden Scans auszuschließen. Projektweite Analyseregeln und Zielpfade können über Konfigurationsdateien verwaltet werden, einschließlich Unterstützung für das TOML-Format.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
code2flow ist ein statischer Programmfluss-Mapper und Generator für Quellcode-Aufrufdiagramme (Call Graphs). Er analysiert Quellcode, um visuelle Flussdiagramme zu erstellen, die Funktionsaufrufbeziehungen und Ausführungspfade abbilden. Das Projekt enthält einen Visualisierer für asynchrone Aufruf-Traces, der Ausführungspfade durch Async- und Await-Aufrufe verfolgt, um die Logik asynchroner Programme abzubilden. Es bietet zudem eine programmierbare Code-Analyse-Schnittstelle, die es ermöglicht, die Logik zur Generierung von Aufrufdiagrammen in andere Softwareanwendungen zu integrieren. Das System handhabt statische Code-Analyse durch die Konvertierung von Quellcode in abstrakte Syntaxbäume, um Funktionsdefinitionen und Aufrufstellen zu identifizieren. Es unterstützt das Filtern von Aufrufdiagrammen, um den Umfang der Visualisierungen durch Inhaltsfilter und tiefenbegrenzte Pfad-Extraktion einzuschränken, während es visuelles Styling zur Unterscheidung von Logikflüssen bietet.
Listed in the “Code Analysis” section of the Awesome Python awesome list.