23 Repos
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 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.
Pylint ist ein statisches Code-Analysetool für Python, das Quellcode auf Fehler, Verstöße gegen Codierungsstandards und Code-Smells prüft, ohne das Programm auszuführen. Es parst Code in einen abstrakten Syntaxbaum und durchläuft diesen, um Probleme zu erkennen, erzwingt konfigurierbare Stilregeln und Namenskonventionen und identifiziert doppelte Codeblöcke durch den Vergleich tokenisierter Quellsequenzen. Das Tool enthält zudem eine Inferenz-Engine, die Variablentypen durch Simulation von Codepfaden ableitet, was eine tiefere Analyse selbst in nicht typisiertem Code ermöglicht. Was Pylint auszeichnet, ist seine Plugin-basierte Checker-Architektur, die es Benutzern ermöglicht, die Analyse durch das Laden externer Python-Module zu erweitern, die benutzerdefinierte Checker und Inferenzregeln zur Laufzeit registrieren. Es unterstützt das Layering von Konfigurationsdateien, wobei Einstellungen aus mehreren Konfigurationsdateien und Befehlszeilenargumenten zusammengeführt werden, sodass projektweite Standardeinstellungen durch lokale oder Plugin-spezifische Optionen überschrieben werden können. Pylint verfolgt zudem die Codequalität im Zeitverlauf, indem aktuelle Analyseergebnisse mit einem gespeicherten Basiswert verglichen werden, berichtet über Verbesserungen oder Regressionen in aufeinanderfolgenden Durchläufen und kann UML-Klassen- und Paketdiagramme aus dem abstrakten Syntaxbaum in Graphviz-, PlantUML- oder MermaidJS-Formaten generieren. Das Tool lässt sich in Continuous-Integration-Pipelines und Pre-Commit-Hooks integrieren, um Prüfungen automatisch über mehrere Python-Interpreter-Versionen hinweg auszuführen. Es kann über pip, conda oder einen Systempaketmanager installiert werden und bietet eine optionale Rechtschreibprüfung für Code-Bezeichner durch die enchant-Bibliothek. Pylint bietet zudem Editor-Integration für Umgebungen wie Emacs und TextMate und enthält einen Nachrichten-Erklärungs-Viewer, der die vollständige Beschreibung und den Kontext jedes spezifischen Warn- oder Fehlercodes direkt über die Befehlszeile ausgibt.
Checks Python source code for errors, coding standard violations, and code smells without execution.
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.
Parses Elixir code to identify structures and map them to tokens for consistency and quality analysis.
gocode ist ein Language-Server-Backend und Autovervollständigungs-Daemon für die Programmiersprache Go. Er fungiert als statischer Code-Analysator und Symbol-Indexer, der Texteditoren Echtzeit-Vorschläge für Bezeichner und Symbole liefert. Das Projekt nutzt eine Client-Server-Daemon-Architektur, um einen persistenten Hintergrundprozess aufrechtzuerhalten und den Overhead beim Neuladen von Paket-Metadaten für jede Anfrage zu vermeiden. Es verwendet ein zweistufiges Metadaten-Caching-System und parst kompilierte Paket-Binaries, um schnelle Symbol-Lookups und das Abrufen von Deklarationen zu ermöglichen. Das System deckt breite Funktionsbereiche ab, einschließlich kontextsensitiver Autovervollständigung für Member-Felder, Funktionssignaturen und Variablen sowie automatischer Code-Formatierung. Es verwaltet die lexikalische Scope-Verfolgung und rekursive Symbolauflösung, um präzise Typ- und Variablenvervollständigungen zu gewährleisten. Administrative Dienstprogramme ermöglichen die Daemon-Konfiguration, Steuerung des Zustands und einen Debug-Modus mit detailliertem Logging zur Überwachung des Hintergrundprozesses.
Tracks lexical scopes and resolves package imports to ensure accurate type and variable completions.
preact-cli is a command line tool for scaffolding, developing, and building applications using the Preact library. It provides a Webpack-based build pipeline to coordinate code transformation, asset optimization, and production compilation. The toolkit includes a static site prerenderer to convert application routes into static HTML files and a PWA development toolkit for generating service workers and offline asset caching. It also functions as a frontend development server featuring hot module replacement and a proxy for real-time application iteration. The project covers a broad range of
Implements automatic route-based code splitting to reduce the initial bundle size for faster page loads.
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.
Scans source files for unreachable expressions and unused imports without executing the code.
This project is a technical reference and guide for optimizing the performance of Angular applications. It provides a comprehensive checklist for improving speed and efficiency by focusing on bundle optimization, rendering best practices, and runtime execution. The guide covers a wide array of differentiators including the implementation of progressive web app strategies through service workers and offline caching. It also details methods for improving perceived load times using server-side rendering and application shells. The repository provides guidance on broader capability areas such as
Divides the application into smaller chunks that load only when specific routes are accessed.
after.js is a server-side rendering framework for React applications that integrates with React Router to coordinate data loading, routing, and hydration. It functions as both a rendering framework and a static site generator, capable of exporting pages as static HTML and JSON files for delivery via content delivery networks. The framework provides a server-side data fetching layer that populates component properties during the render process. It manages navigation through a system of status-code driven redirections and dynamic error handling, allowing the application to trigger redirects or
Defines lazy-loaded routes to divide application bundles into smaller chunks, reducing initial load times.