48 repositorios
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.
Este proyecto es un formateador de código determinista e intransigente para Python. Funciona analizando el código fuente en un árbol de sintaxis abstracta y regenerándolo de acuerdo con un conjunto rígido y opinado de reglas de estilo. Al automatizar el proceso de formato, elimina los debates manuales sobre estilo y la sobrecarga de configuración, asegurando que el código permanezca consistente en proyectos completos independientemente de la entrada original. La herramienta se distingue por su enfoque en la velocidad y la integración fluida en los flujos de trabajo de desarrollo. Utiliza el almacenamiento en caché de archivos basado en contenido y el procesamiento paralelo para mantener un alto rendimiento en grandes bases de código, mientras admite ganchos de control de versiones para aplicar la consistencia de estilo antes de que se confirme el código. Para preservar el historial del proyecto, proporciona mecanismos para ignorar confirmaciones específicas en el seguimiento de autoría del control de versiones, asegurando que los cambios de estilo automatizados no oscurezcan la autoría original. Más allá de los archivos fuente estándar, el formateador extiende sus capacidades para incluir cuadernos Jupyter, stubs de tipo y ejemplos de código incrustados dentro de la documentación. Ofrece una amplia compatibilidad a través de complementos para los principales editores de texto y entornos de desarrollo integrados, así como soporte para el protocolo de servidor de lenguaje. La configuración se gestiona a través de archivos a nivel de proyecto que se descubren automáticamente dentro de la jerarquía de directorios, lo que permite un comportamiento consistente en diversos entornos de desarrollo.
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 es un analizador de código estático multilingüe utilizado para identificar fallos de programación, variables no utilizadas y código muerto sin ejecutar el programa. Funciona como un detector de olores de código (code smells) y ejecutor de estándares de codificación, asegurando que el código fuente se adhiera a convenciones de nomenclatura específicas, requisitos estructurales y guías de estilo del proyecto. El proyecto cuenta con un motor de reglas basado en XPath que permite a los usuarios definir patrones de análisis personalizados usando consultas contra un árbol de sintaxis abstracta. También incluye un detector de copiar y pegar para identificar bloques de código duplicados en múltiples archivos y un diseñador visual de reglas para crear y probar patrones de detección personalizados. La superficie de análisis cubre la detección de errores, la identificación de problemas de mantenibilidad para reducir la deuda técnica y la verificación de implementaciones de pruebas. También proporciona capacidades para identificar métodos excesivamente complejos y listas de parámetros excesivas.
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 es una herramienta de análisis estático y linter para Elixir. Funciona como un analizador de calidad de código que escanea el código fuente para identificar inconsistencias estilísticas, errores comunes y posibles vulnerabilidades de seguridad. La herramienta proporciona un framework personalizable para definir y probar reglas especializadas para hacer cumplir los estándares de codificación específicos del proyecto. Identifica fragmentos de código complejos y duplicación para resaltar oportunidades de refactorización y simplificación. Sus capacidades cubren revisiones de código automatizadas, la aplicación de estándares de codificación de Elixir y comentarios en tiempo real para el desarrollador a través de integraciones en el editor.
Static code analysis for consistency and style.
Typeshed es una colección de definiciones de tipos estáticos y stubs para la biblioteca estándar de Python y paquetes de terceros. Sirve como un recurso estandarizado para analizadores estáticos y entornos de desarrollo integrados (IDE) para validar la corrección del código y proporcionar autocompletado basado en tipos sin modificar el código fuente original de las bibliotecas. El proyecto se centra en la creación y mantenimiento de archivos de pistas de tipo externos que separan las anotaciones de tipo de la implementación en tiempo de ejecución. Utiliza un sistema para versionar y mapear estos stubs a versiones específicas de paquetes en tiempo de ejecución para mantener la compatibilidad. El repositorio incluye una suite de validación para garantizar la precisión de estas definiciones. Esto cubre la validación de tiempo de ejecución a stub para identificar discrepancias entre tipos declarados y reales, verificación de la estructura de directorios y pruebas de regresión para evitar la reintroducción de errores de verificación de tipos conocidos.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Pytype es una herramienta de análisis de código estático y motor de inferencia de tipos para Python. Funciona como un analizador de tipos estático que detecta desajustes de tipos y verifica anotaciones de tipos sin requerir pistas manuales completas, sirviendo también como un generador de stubs de tipos para producir archivos de definición independientes. El proyecto se distingue por determinar automáticamente los tipos de variables y funciones mediante un análisis de patrones de código y asignaciones. Este motor de inferencia permite la verificación estructural del código y la generación de stubs de tipos que describen las interfaces de módulos y funciones. El sistema cubre operaciones amplias de análisis estático, incluyendo validación estructural de jerarquías de clases y llamadas a funciones, y seguimiento de símbolos para detectar errores de espacio de nombres y violaciones de acceso a atributos. También proporciona primitivas de verificación de tipos para aplicar anotaciones y un sistema de tipos capaz de modelar estructuras de datos complejas utilizando uniones y opcionales.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
MonkeyType es una herramienta de inferencia de tipos en tiempo de ejecución y análisis para Python. Recopila tipos reales de argumentos y retornos de llamadas a funciones durante la ejecución del programa para automatizar la producción de anotaciones de tipo estáticas y archivos stub compatibles. El sistema convierte trazas de ejecución capturadas en sugerencias de tipo estáticas, que pueden insertarse directamente en las definiciones de funciones del código fuente o utilizarse para generar stubs de tipo externos. Este proceso permite añadir seguridad de tipos a bases de código existentes analizando tipos de datos del mundo real en lugar de mediante auditoría manual. Las capacidades de la herramienta cubren la recopilación de tipos en tiempo de ejecución, inferencia de tipos dinámica y la generación de definiciones de tipo estáticas. Utiliza la modificación del código fuente y la persistencia de trazas de llamadas para mapear patrones observados en tiempo de ejecución a firmas estáticas.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
Vulture es una herramienta de análisis estático y linter diseñada para encontrar variables, funciones y clases no utilizadas en código fuente Python. Opera como un detector de código muerto y buscador de código no utilizado que escanea archivos fuente para identificar expresiones e importaciones inalcanzables sin ejecutar el código. La herramienta emplea un sistema de puntuación heurística basado en confianza para asignar valores de probabilidad a las detecciones, ayudando a distinguir símbolos verdaderamente no utilizados de posibles falsos positivos. Además, ayuda a podar lógica muerta ordenando las clases y funciones no utilizadas detectadas por conteo de líneas para priorizar la eliminación de los bloques de código más grandes. La superficie de análisis incluye análisis de alcanzabilidad de flujo de control, seguimiento de referencias de símbolos y la capacidad de suprimir falsos positivos mediante patrones de nombres, decoradores o comentarios de ignorar. Vulture también soporta la generación y gestión de listas blancas (whitelists) mediante módulos mock para excluir elementos específicos de escaneos posteriores. Las reglas de análisis de todo el proyecto y las rutas de destino pueden gestionarse mediante archivos de configuración, incluyendo soporte para el formato TOML.
Listed in the “Code Analysis” section of the Awesome Python awesome list.
code2flow es un mapeador de flujo de programas estático y generador de grafos de llamadas de código fuente. Analiza el código fuente para producir diagramas de flujo visuales que mapean las relaciones de llamadas a funciones y las rutas de ejecución. El proyecto incluye un visualizador de trazas de llamadas asíncronas que sigue las rutas de ejecución a través de llamadas async y await para mapear la lógica de programas asíncronos. También proporciona una interfaz de análisis de código programable, permitiendo que la lógica de generación de grafos de llamadas se integre en otras aplicaciones de software. El sistema maneja el análisis de código estático convirtiendo el código fuente en árboles de sintaxis abstracta para identificar definiciones de funciones y sitios de llamadas. Admite el filtrado de grafos de llamadas para restringir el alcance de las visualizaciones a través de filtros de contenido y extracción de rutas con límite de profundidad, mientras proporciona un estilo visual para distinguir los flujos lógicos.
Listed in the “Code Analysis” section of the Awesome Python awesome list.