34 Repos
Extracts and lists project dependencies for further analysis.
Distinct from Dependency Analysis Tools: Distinct from Dependency Analysis Tools: focuses on extracting code dependencies, not just analyzing dependencies.
Explore 34 awesome GitHub repositories matching development tools & productivity · Code Dependency Analysis. Refine with filters or upvote what's useful.
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
Recursively scans source code for import statements to build a complete dependency graph.
Wire is a compile-time dependency injection framework for Go that generates code to wire application components together. It analyzes function signatures at compile time to build an explicit initialization graph, removing the need for runtime reflection or manual wiring code. The framework operates as a Go code generator and static analysis tool, transforming annotated source code into generated wire files that compile alongside the original project. It connects dependencies by matching function parameters and return types, producing a directed acyclic graph of component dependencies that is
Analyzes Go function signatures and types at compile time to determine the complete dependency graph.
Knip is a static analysis project cleaner and dead code analyzer for JavaScript and TypeScript projects. It identifies and removes unused files, dependencies, and exports to maintain a lean codebase and reduce bundle size. The tool functions as a monorepo dependency auditor, tracking exports and dependencies across multiple workspaces to find dead code in large multi-package projects. It specifically targets the removal of unused packages from project manifests and the deletion of unreferenced exports. Its capabilities cover dead code elimination, JavaScript dependency management, and TypeSc
Identifies packages used in the source code that are missing from the manifest to prevent transitive dependency reliance.
Madge is a JavaScript module dependency visualizer and architecture mapper. It analyzes source code to create graphs and diagrams of module relationships, supporting CommonJS, AMD, and ES6 standards. The tool functions as a circular dependency detector to identify recursive import loops and a dependency graph generator that exports relationship maps into image and vector formats. It provides utilities for auditing project structure, including the identification of orphaned modules and leaf modules. Its broader capabilities include dead code identification, module impact analysis through depe
Provides a scanner that identifies recursive module import loops to help developers break dependency chains.
MAME is a vintage hardware emulation platform designed to recreate the circuitry of arcade games, computers, and consoles to run original software on modern devices. It functions as a retro gaming preservation framework for managing, verifying, and archiving ROM sets and disk images to ensure long-term software accessibility. The project features a system debugging tool for inspecting emulated memory, CPU registers, and execution flow via breakpoints and disassembly. It also includes a Lua-based automation layer that exposes core system state and hardware controls for custom behavior and anal
MAME lists missing ROM dumps and disk images and displays the search paths attempted.
This project is a command line interface for managing, installing, and publishing JavaScript packages to a remote registry. It serves as a dependency resolution tool, a software registry publishing client, and a security auditor for Node.js development workflows. The tool distinguishes itself by providing integrated monorepo workspace management and a comprehensive registry authentication client that supports multi-factor authentication. It enables detailed control over the software supply chain through provenance attestations, package signature verification, and the generation of a Software
Provides a utility to list duplicated packages within the dependency tree to analyze redundancy.
Semantic ist eine auf Haskell basierende Bibliothek und ein Kommandozeilen-Tool für die polyglotte Quellcode-Analyse. Es fungiert als Framework für statische Programmanalyse und als polyglotter Parser für abstrakte Syntaxbäume, der verschiedene Programmiersprachen in strukturierte Syntaxbäume auf Basis von Grammatikdefinitionen umwandelt. Das System zeichnet sich durch eine semantische Code-Vergleichs-Engine aus, die strukturelle und inhaltliche Änderungen zwischen Code-Versionen erkennt, anstatt sich auf rein textuelle Unterschiede zu verlassen. Es ermöglicht zudem die Analyse über verschiedene Programmiersyntaxen hinweg, indem es Oberflächensprachen in eine einheitliche, polyglotte Zwischenrepräsentation übersetzt. Das Framework bietet eine breite Palette an Funktionen für das Parsen von Sprachen wie Rust, Go, Python, Ruby, PHP, TypeScript und TSX. Es deckt die semantische Analyse durch Code-Scope-Mapping, Extraktion von Symbolen und die Generierung semantischer Graphen ab, ergänzt durch Werkzeuge zur Musteranalyse und Bewertung des Programmverhaltens. Das Toolset enthält Kommandozeilen-Dienstprogramme zur Standardisierung von Haskell-Quellcodedateien.
Analyzes identifier visibility and accessibility to construct graphs mapping the relationships and meanings within a codebase.
Kreuzberg is a document extraction engine that converts PDFs, Office files, images, and over 90 other formats into clean, structured text and metadata. It is built around a compiled Rust core that can be used as a native library, a command-line tool, a REST API server, or a WebAssembly module for browser-based processing. The system is designed to run entirely on self-hosted infrastructure, with no data leaving the user's environment. What distinguishes Kreuzberg is its breadth of integration surfaces and its pipeline architecture. It exposes extraction capabilities through native bindings fo
Report when an optional system dependency like Tesseract is missing so callers can install it before retrying.
pipreqs ist ein Tool zur Generierung und Erkennung von Python-Abhängigkeiten. Es scannt Projekt-Imports, um die für die Ausführung eines Projekts erforderlichen Bibliotheken von Drittanbietern zu identifizieren, und automatisiert die Erstellung von Requirements-Dateien, die nur die im Quellcode tatsächlich verwendeten Pakete enthalten. Das Dienstprogramm fungiert als Manager für Requirements-Dateien, indem es installierte Pakete mit den tatsächlichen Imports vergleicht. Es bietet Funktionen zum Bereinigen ungenutzter Abhängigkeiten und zum Auditieren von Projekten, um fehlende oder veraltete Pakete zu identifizieren. Das Tool verwendet statische Analyse und abstrakte Syntaxbäume, um Import-Anweisungen zu isolieren, ohne den Code auszuführen. Es löst Paketversionen mithilfe lokaler Metadaten oder benutzerdefinierter Server auf und durchläuft Verzeichnisstrukturen rekursiv, um alle relevanten Quelldateien zu finden.
Identifies packages declared in the requirements file that are not actually imported in the source code.
Dagger is a compile-time dependency injection framework for Java and Android that automates object creation and lifecycle management. It functions as a static dependency injector and graph validator, resolving object requirements during the build process to avoid runtime reflection and prevent crashes caused by missing bindings. The framework distinguishes itself by using static analysis and code generation to produce factory classes at build time. It employs qualifier-based type differentiation to manage multiple implementations of the same type and provides scope-based lifecycle management
Determines object requirements by analyzing source code at build time instead of searching memory at runtime.
size-limit is a set of specialized tools for measuring JavaScript bundle sizes and enforcing performance budgets within continuous integration pipelines. It functions as a bundle size monitor and budget enforcer that can reject pull requests when JavaScript bundles exceed predefined size thresholds. The project distinguishes itself by providing a browser-based execution profiler that calculates the time required to compile and execute JavaScript on simulated low-end hardware. It also includes a tree-shaking validator that analyzes partial import bundle sizes to verify that unused code is corr
Extracts and analyzes which external libraries contribute most to the total bundle size.
AssetRipper is a suite of tools designed for the recovery and analysis of Unity game projects. It functions as an asset extractor, project reconstructor, shader decompiler, binary analysis tool, and dependency auditor. The project specializes in recovering high-level structures from compiled binaries. It reconstructs prefabs from inlined scene instances, reverses static batching to separate merged meshes, and translates compiled shader code from multiple platforms back into a readable format. Its broader capabilities include converting serialized files and bundles back into native engine for
Identifies missing binary assets and broken dependency chains within compiled game builds.
Dependency-cruiser ist ein Analyse-Tool für Abhängigkeiten in JavaScript und TypeScript sowie ein Architektur-Linter. Es dient als statisches Analysetool zum Mapping, zur Visualisierung und zur Validierung von Modulbeziehungen innerhalb einer Codebasis, ohne dass der Code ausgeführt werden muss. Das Projekt zeichnet sich durch seine Fähigkeit aus, architektonische Grenzen durch ein regelbasiertes System durchzusetzen. Es erkennt zirkuläre Abhängigkeiten, identifiziert verwaiste Module (Orphan Modules) sowie toten Code und validiert Abhängigkeitsbeschränkungen anhand von Regeln für erlaubte und verbotene Beziehungen. Zudem bietet es quantitative Stabilitätsanalysen durch die Berechnung von afferenter und efferenter Kopplung, um fragile Bereiche eines Projekts zu identifizieren. Das Tool deckt ein breites Spektrum an Funktionen ab, darunter Modul-Parsing für ES6, CommonJS und TypeScript sowie die Visualisierung von Abhängigkeitsgraphen mit Aggregation auf Ordnerebene. Es bietet Automatisierungsfunktionen für Continuous Integration, wie z. B. Violation-Baselining und strukturierte Datenexporte in JSON- oder CSV-Formaten. Das System beinhaltet einen interaktiven Konfigurations-Bootstrapping-Prozess, um maßgeschneiderte Konfigurationsdateien basierend auf der lokalen Umgebung zu generieren.
Finds and eliminates recursive module import loops in JavaScript and TypeScript projects to avoid runtime errors.
npm-check is a command-line tool that audits a project's npm dependencies, comparing local package versions against the npm registry to identify outdated, unused, or incorrect entries. It scans both package.json and node_modules, and can also inspect globally installed npm packages for the same issues. The tool distinguishes itself by offering multiple modes of operation. It can automatically update all outdated dependencies to their latest versions without interaction, suitable for automated scripts. Alternatively, it provides an interactive terminal interface that lets users review and
Analyzes source code imports to flag packages listed in the manifest that are never referenced.
iOS & tvOS multi-emulator frontend, supporting various Atari, Bandai, NEC, Nintendo, Sega, SNK and Sony console systems… Get Started: https://wiki.provenance-emu.com |
Imports and verifies system BIOS files by MD5 hash, renaming them automatically on import.
Periphery ist ein statisches Analysetool und ein Detektor für toten Code in Swift-Projekten. Es identifiziert nicht referenzierte Klassen, Structs, Funktionen und Eigenschaften und dient als API-Oberflächen-Optimierer, um öffentliche Deklarationen zu finden, die auf internen Zugriff beschränkt werden können. Das Tool umfasst spezialisierte Scans für Interface-Builder-Dateien wie Storyboards und XIBs, um sicherzustellen, dass UI-verknüpfte Elemente nicht fälschlicherweise als ungenutzt markiert werden. Es bietet zudem eine automatisierte Code-Bereinigung, um identifizierten toten Code und ungenutzte Parameter direkt aus den Quelldateien zu entfernen. Die Analysefunktionen decken die Erkennung redundanter Protokolle, ungenutzter Enum-Cases, unnötiger Imports und Eigenschaften, die nur zugewiesen, aber nie gelesen werden, ab. Das System verwaltet technische Schulden durch Baseline-Vergleichsfilter und unterstützt Projekte mit gemischten Sprachen, indem es Symbole bewahrt, die für die Objective-C-Runtime exponiert sind. Periphery lässt sich über YAML-basierte Konfigurationen in Build-Systeme und CI-Pipelines integrieren und kann Analyseergebnisse in mehreren Industriestandard-Formaten exportieren.
Uses binary index store data to identify unused code without requiring a full project rebuild.
Trail of Bits warns when msg.sender is not used as the from parameter in transferFrom, allowing an attacker to drain another user's approved tokens.
j2objc ist ein Source-to-Source-Compiler und Transpiler, der Java-Quellcode in Objective-C konvertiert. Er fungiert als plattformübergreifender Logik-Porter, der es ermöglicht, Anwendungslogik und Datenmodelle, die in Java geschrieben wurden, auf iOS zu teilen und auszuführen. Zur Unterstützung dieser Übersetzung bietet das Projekt eine Objective-C-Implementierung von Java-Kernklassen und APIs, um die Java-Laufzeitumgebung zu emulieren. Das System enthält spezialisierte Übersetzungen für Java-Bibliotheken und bietet Zuordnungen für Dependency Injection und statische Analyse-Annotationen, um Metadaten zu erhalten. Es ermöglicht zudem die Konvertierung von JUnit-Tests in ausführbare Binärdateien, um die logische Konsistenz auf mobiler Hardware zu verifizieren. Um die resultierenden iOS-Anwendungen zu optimieren, bietet das Projekt Tools zur Erkennung ungenutzten Codes und zur Eliminierung von Dead Code. Es erlaubt zudem den Austausch automatisch übersetzter Klassen durch handgeschriebene native Implementierungen, um die Ausführungsgeschwindigkeit zu erhöhen.
Analyzes source files to identify classes and methods that are unreachable from defined public entry points.
eslint-plugin-import ist ein ESLint-Plugin für die statische Analyse, das eine Reihe von Regeln und Resolvern zur Validierung von Import-Statements und zur Durchsetzung architektonischer Vorgaben beim Importieren und Exportieren von Code bereitstellt. Es fungiert als Modul-Validator und Resolver, um sicherzustellen, dass Import-Deklarationen auf gültige Dateien verweisen und referenzierte Symbole existieren. Das Projekt identifiziert rekursive Import-Ketten, um zirkuläre Abhängigkeiten zu verhindern, und nutzt ein konfigurierbares Auflösungssystem, um Aliase und nicht-standardisierte Dateipfade abzubilden. Es kann zudem zwischen internen Projektdateien und externen Bibliotheksabhängigkeiten durch Pfad- und Ordner-Pattern-Matching unterscheiden. Das Plugin deckt weiterführende Bereiche der Code-Qualität ab, einschließlich der Durchsetzung von Import-Stilen für Sortierung und Gruppierung, der Einschränkung spezifischer Modulsysteme und der Verifizierung der Export-Verfügbarkeit zur Vermeidung von Laufzeitfehlern. Es kann zudem Import-Quellen basierend auf dem Ordnerstandort einschränken oder spezifische Pfadtypen untersagen.
Scans for recursive import loops in module graphs to identify circular dependencies.
Rhai ist eine eingebettete Skript-Engine und eine dynamisch typisierte Sprache, die für die Integration in Rust-Anwendungen entwickelt wurde. Sie fungiert als Compiler für abstrakte Syntaxbäume (AST) und als native Interop-Schicht, die es Entwicklern ermöglicht, Rust-Typen und -Funktionen für eine bidirektionale Kommunikation in eine Skriptumgebung zu mappen. Das Projekt dient als Framework zur Erstellung anpassbarer domänenspezifischer Sprachen. Es erlaubt die Definition benutzerdefinierter Operatoren, Syntax und eingeschränkter Ausführungsumgebungen, was die Erstellung spezialisierter Sprachen mit maßgeschneiderten Funktionsumfängen ermöglicht. Die Engine deckt ein breites Spektrum an Funktionen ab, darunter ressourcenbeschränktes Sandboxing für sichere Ausführung, modulare Code-Organisation und umfassende Datenverarbeitung für numerische, String- und Binärtypen. Zudem bietet sie Werkzeuge für AST-Manipulation, Serialisierung des Ausführungszustands sowie Laufzeit-Observability durch Call-Stack-Inspektion und Debugging-Schnittstellen. Die Engine ist für den plattformübergreifenden Einsatz auf jeder CPU und jedem Betriebssystem konzipiert, das vom nativen Compiler unterstützt wird.
Removes unreachable code blocks and propagates constants within the compiled AST before evaluation.