23 repositorios
Tools that parse code to identify structures and map them to tokens.
Distinguishing note: Focuses on the analysis aspect of the parsing engine.
Explore 23 awesome GitHub repositories matching software engineering & architecture · Static Code Analyzers. Refine with filters or upvote what's useful.
Awesome Copilot is a comprehensive framework for autonomous software development, providing the infrastructure to orchestrate multi-agent teams and automate complex coding workflows. It functions as a centralized platform for managing AI-driven development, enabling developers to deploy specialized agents that interact with local files, terminal commands, and external APIs to execute end-to-end software delivery tasks. The project distinguishes itself through its focus on governance and extensibility, offering a suite of security controls, policy-based execution guardrails, and audit trails t
Parses function signatures and type definitions to ensure generated code aligns with project logic.
YouCompleteMe is a completion engine and semantic code analyzer for the Vim editor. It provides an integrated suite of development tools, including a Language Server Protocol client and a semantic analyzer that utilizes Clang to offer context-aware symbols and type-based highlighting. The project distinguishes itself through specialized semantic completion for C-family languages and JavaScript, offering identifiers, snippets, and automatic imports. It provides advanced visual feedback such as inlay hints for type information and parameter names, as well as semantic highlighting based on the a
Utilizes Clang to perform deep static analysis of C-family source code for context-aware intelligence.
Highlight.js is a syntax highlighting library that automatically detects and applies color-coded styling to source code blocks within web pages. It functions as a language-agnostic formatting engine, utilizing a modular processor that applies consistent visual themes to diverse programming languages based on their specific grammatical rules. By decoupling the core parsing logic from language-specific definitions, the library provides a unified execution environment that operates without requiring internal knowledge of the target language. The project is distinguished by its modular architectu
Parses text input to identify programming language structures for improved readability.
Cheat Engine is a software reverse engineering suite and memory editor designed for the Windows environment. It functions as a comprehensive platform for inspecting, analyzing, and modifying the internal logic and data structures of running applications. The tool provides capabilities for real-time memory scanning and manipulation, allowing users to locate and alter specific values within a process's address space. It distinguishes itself through advanced debugging features, including hardware-assisted debugging, kernel-mode driver injection for bypassing memory protections, and dynamic binar
Dissects and inspects structures and methods within managed applications to facilitate targeted modifications.
This project is a static analysis framework and linting engine designed to inspect TypeScript codebases. It functions as a plugin suite that enables standard linting workflows to parse source code into abstract syntax trees, allowing for the automated enforcement of coding standards and the identification of potential bugs through a modular, rule-based visitor pattern. The engine distinguishes itself by integrating directly with the TypeScript compiler to perform type-aware analysis. By accessing compiler type information, it can identify complex errors and unsafe patterns that standard synta
Accesses the compiler type checker to identify nuanced bugs and best practice violations that require deep understanding of code structure.
Swift Evolution serves as the central governance and design platform for the Swift programming language. It provides a structured, collaborative framework for tracking, discussing, and managing the formal proposals and technical goals that define the language's syntax, semantics, and core features. By maintaining a comprehensive collection of design documentation, the project ensures the long-term stability and consistency of the language as it matures. The repository acts as the primary hub for the language's evolution, coordinating community feedback and technical decisions through a transp
Transforms raw syntax trees into fully checked representations to identify logical errors and validate type safety.
This project is a CommonJS module bundler and resolver designed to combine interdependent JavaScript files into a single script for execution in web browsers. It functions as a Node.js JavaScript bundler that emulates server-side core modules and resolves dependencies to ensure compatibility between server-side logic and browser environments. The system features an extensible bundling pipeline and a browser-side module resolver. It provides a plugin architecture for transforming source code and a source map generator to correlate bundled output back to original files for debugging. The proje
Allows specific dependencies to be excluded from the internal bundle to be loaded as separate external scripts.
Swag is a documentation tool for Go that generates standardized API specification files by parsing declarative annotations within source code. It functions by analyzing source files to extract metadata from comments and function signatures, transforming them into machine-readable formats such as JSON or YAML. This process ensures that technical documentation remains synchronized with the underlying code structure throughout the development lifecycle. The tool distinguishes itself through its ability to perform static source code parsing and type-system reflection, which allows it to map compl
Analyzes source code using abstract syntax trees to extract metadata without executing the application.
Nitro is a cross-platform server engine and JavaScript server framework designed to bundle backend code for deployment across diverse cloud providers, edge functions, and serverless environments. It functions as a platform-agnostic backend runtime that translates platform-specific event objects into a standardized request and response format. The project utilizes a file-system based router to map the physical directory structure of the server folder directly to URL endpoints. It employs a build process to generate platform-agnostic bundles, ensuring the same server logic can run across differ
Analyzes the dependency graph to separate shared logic from route-specific code to reduce final deployment size.
TypeResolver is a PHP namespace resolver and type parser designed to convert partial class and element names into fully qualified names. It functions as a utility for static code analysis, transforming complex type expressions and primitives into structured value objects. The project implements PSR-5 standards to ensure consistent type referencing. It manages the resolution of structural elements by tracking current namespaces and alias contexts to expand partial identifiers into their full definitions. The tool covers the parsing of compound type strings and the management of PHP imports an
Parses type expressions and compound strings into value objects for static analysis without execution.
Hatch is a unified tool for managing Python environments, building packages, scaffolding projects, and installing Python versions. It provides a single command-line interface for automating common development workflows, including running scripts, tests, and static analysis with automatic dependency resolution and configuration. The tool manages project settings, dependencies, and build instructions through a declarative TOML configuration file, ensuring reproducibility across environments. It creates and manages isolated virtual environments across all major shells, installs and manages multi
Analyzes code statically with Ruff using current, sensible default configurations.
TSLint is an extensible static analysis tool that checks TypeScript source files against a configurable set of lint rules. It scans code by walking the parsed TypeScript abstract syntax tree, applying rule objects to detect readability, maintainability, and functionality errors. The tool supports rule severity configuration, inline suppression through comment directives, and automatic attachment of fix objects for correcting violations. The project provides a framework for developing custom lint rules and formatters, allowing teams to enforce project-specific coding conventions beyond the bui
Scans TypeScript source code against configurable rules to catch errors and enforce coding standards.
Pylint es una herramienta de análisis estático de código para Python que verifica el código fuente en busca de errores, violaciones de estándares de codificación y olores de código sin ejecutar el programa. Analiza el código en un árbol de sintaxis abstracta y recorre el árbol para detectar problemas, aplica reglas de estilo configurables y convenciones de nomenclatura, e identifica bloques de código duplicados comparando secuencias de origen tokenizadas. La herramienta también incluye un motor de inferencia que deduce los tipos de variables simulando rutas de código, permitiendo un análisis más profundo incluso en código sin tipos. Lo que distingue a Pylint es su arquitectura de verificador basada en complementos, que permite a los usuarios extender el análisis cargando módulos externos de Python que registran verificadores personalizados y reglas de inferencia en tiempo de ejecución. Admite la estratificación de archivos de configuración, fusionando configuraciones de múltiples archivos y argumentos de línea de comandos para que los valores predeterminados de todo el proyecto puedan ser anulados por opciones locales o específicas de complementos. Pylint también rastrea la calidad del código a lo largo del tiempo comparando los resultados del análisis actual con una puntuación de referencia almacenada, informando sobre mejoras o regresiones en ejecuciones sucesivas, y puede generar diagramas de clases y paquetes UML desde el árbol de sintaxis abstracta en formatos Graphviz, PlantUML o MermaidJS. La herramienta se integra en tuberías de integración continua y ganchos de pre-confirmación para ejecutar verificaciones en múltiples versiones del intérprete de Python automáticamente. Se puede instalar a través de pip, conda o un gestor de paquetes del sistema, y ofrece corrección ortográfica opcional de identificadores de código a través de la biblioteca enchant. Pylint también proporciona integración de editor para entornos como Emacs y TextMate, e incluye un visor de explicación de mensajes que imprime la descripción completa y el contexto de cualquier código de advertencia o error específico directamente desde la línea de comandos.
Checks Python source code for errors, coding standard violations, and code smells without execution.
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
Scans Python source code for errors, coding standard violations, and code smells without executing the program.
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.
Parses Elixir code to identify structures and map them to tokens for consistency and quality analysis.
gocode es un backend de servidor de lenguaje y demonio de autocompletado para el lenguaje Go. Funciona como un analizador de código estático e indexador de símbolos que proporciona sugerencias de identificadores y símbolos en tiempo real a los editores de texto. El proyecto utiliza una arquitectura de demonio cliente-servidor para mantener un proceso en segundo plano persistente, evitando la sobrecarga de recargar los metadatos del paquete en cada solicitud. Emplea un sistema de caché de metadatos de dos niveles y analiza binarios de paquetes compilados para permitir búsquedas rápidas de símbolos y recuperación de declaraciones. El sistema cubre amplias áreas de capacidad, incluyendo autocompletado sensible al contexto para campos de miembros, firmas de funciones y variables, así como formato automático de código. Gestiona el seguimiento del alcance léxico y la resolución recursiva de símbolos para garantizar completados precisos de tipos y variables. Las utilidades administrativas permiten la gestión de la configuración del demonio, el control de estado y un modo de depuración con registro detallado para monitorear el proceso en segundo plano.
Tracks lexical scopes and resolves package imports to ensure accurate type and variable completions.
preact-cli es una herramienta de línea de comandos para andamiaje, desarrollo y construcción de aplicaciones utilizando la biblioteca Preact. Proporciona una tubería de construcción basada en Webpack para coordinar la transformación de código, la optimización de activos y la compilación de producción. El kit de herramientas incluye un pre-renderizador de sitios estáticos para convertir rutas de aplicación en archivos HTML estáticos y un kit de herramientas de desarrollo PWA para generar service workers y caché de activos offline. También funciona como un servidor de desarrollo frontend con recarga de módulos en caliente (HMR) y un proxy para la iteración de aplicaciones en tiempo real. El proyecto cubre una amplia gama de capacidades, incluyendo andamiaje de proyectos, optimización de construcción mediante división automática de código basada en rutas y la integración de tuberías de preprocesamiento CSS. También admite la gestión de variables de entorno y la personalización de configuraciones de construcción mediante plugins y anulaciones.
Implements automatic route-based code splitting to reduce the initial bundle size for faster page loads.
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.
Scans source files for unreachable expressions and unused imports without executing the code.
Este proyecto es una referencia técnica y guía para optimizar el rendimiento de las aplicaciones Angular. Proporciona una lista de verificación integral para mejorar la velocidad y la eficiencia centrándose en la optimización de paquetes (bundles), mejores prácticas de renderizado y ejecución en tiempo de ejecución. La guía cubre una amplia gama de diferenciadores, incluyendo la implementación de estrategias de aplicaciones web progresivas (PWA) a través de service workers y caché offline. También detalla métodos para mejorar los tiempos de carga percibidos utilizando renderizado del lado del servidor (SSR) y shells de aplicación. El repositorio proporciona orientación sobre áreas de capacidad más amplias, como el ajuste de la detección de cambios, el uso de web workers para descargar cálculos pesados y la gestión del DOM mediante desplazamiento virtual (virtual scrolling). También cubre la reducción del tamaño del paquete mediante tree-shaking, minificación y división de módulos de carga perezosa (lazy-loading).
Divides the application into smaller chunks that load only when specific routes are accessed.
after.js es un framework de renderizado del lado del servidor (SSR) para aplicaciones React que se integra con React Router para coordinar la carga de datos, el enrutamiento y la hidratación. Funciona tanto como un framework de renderizado como un generador de sitios estáticos, capaz de exportar páginas como archivos HTML y JSON estáticos para su entrega a través de redes de entrega de contenido (CDN). El framework proporciona una capa de obtención de datos del lado del servidor que rellena las propiedades de los componentes durante el proceso de renderizado. Gestiona la navegación a través de un sistema de redirecciones impulsadas por códigos de estado y manejo dinámico de errores, permitiendo que la aplicación active redirecciones o páginas de error de respaldo antes de que comience el renderizado. El proyecto cubre una amplia superficie de capacidades, incluyendo hidratación del lado del cliente, división de código basada en rutas y pre-obtención de datos para cachear información de rutas antes de la navegación. También permite la personalización de la estructura base del documento HTML y la implementación de motores de renderizado del lado del servidor personalizados.
Defines lazy-loaded routes to divide application bundles into smaller chunks, reducing initial load times.