16 dépôts
Static analysis of module graphs to detect circular imports and dependency errors.
Distinct from Static Analysis: Specifically targets module-level dependency graphs rather than general logic or type validation.
Explore 16 awesome GitHub repositories matching software engineering & architecture · Module Dependency Analysis. Refine with filters or upvote what's useful.
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
Creates visual graphs and diagrams of module relationships for CommonJS, AMD, and ES6 source code.
Chameleon is a cross-platform application framework and component library used to develop applications for the web and various mini-app platforms from a single shared codebase. It functions as a multi-platform build pipeline that compiles source code into different target formats while providing an MVVM-based user interface system for managing application state. The framework employs a polymorphic protocol to extend custom components and APIs, allowing for platform-specific implementations while maintaining cross-end compatibility. It includes a specialized build tool for static analysis that
Analyzes dependency trees and markup syntax at build time to detect circular imports and template errors.
Traceur is a JavaScript syntax transpiler that transforms modern and next-generation language features into compatible versions for older runtime environments. It functions as a compiler that translates proposed language standards and upcoming syntax into current versions to maintain cross-engine compatibility. The project operates as an asynchronous code transformer, converting async functions and generators into promise-based state machines. It includes a functional tail-call optimizer that wraps recursive functions in trampolines to prevent stack overflows and an ECMAScript polyfill engine
Analyzes module dependency graphs through import and export statements to organize code loading.
Dependency-cruiser est un analyseur de dépendances et un linter architectural pour JavaScript et TypeScript. Il sert d'outil d'analyse statique pour cartographier, visualiser et valider les relations entre modules au sein d'une base de code sans nécessiter l'exécution du code. Le projet se distingue par sa capacité à faire respecter des frontières architecturales via un système basé sur des règles. Il détecte les dépendances circulaires, identifie les modules orphelins et le code mort, et valide les contraintes de dépendance en utilisant des règles de relations autorisées ou interdites. Il fournit également une analyse quantitative de la stabilité en calculant le couplage afférent et efférent pour identifier les zones fragiles d'un projet. L'outil couvre un large éventail de capacités, incluant l'analyse multi-standard pour ES6, CommonJS et TypeScript, ainsi que la visualisation de graphes de dépendances avec agrégation au niveau des dossiers. Il fournit des fonctionnalités d'automatisation pour l'intégration continue, telles que le baselining des violations et l'exportation de données structurées aux formats JSON ou CSV. Le système inclut un processus interactif de configuration pour générer des fichiers de configuration adaptés à l'environnement local.
Defines forbidden or allowed relationships between files or folders using path patterns to prevent regressions.
Visualize call graph of a Go program using Graphviz
Restricts the call graph to show only functions within a specified module for targeted analysis.
edk2 est un projet de développement pour créer un firmware système conforme à la spécification UEFI. Il fournit l'infrastructure nécessaire pour initialiser les plateformes matérielles et démarrer les systèmes d'exploitation sur plusieurs architectures CPU. Le projet utilise une architecture de firmware modulaire qui découple les protocoles de gestion de haut niveau des couches de transport physiques. Il implémente des fonctionnalités de sécurité critiques, notamment une chaîne de démarrage mesurée (measured boot), des primitives cryptographiques pour l'authentification d'images et la prise en charge des implémentations matérielles et logicielles du Trusted Platform Module (TPM). Sa surface de capacité s'étend aux standards de gestion de plateforme tels que Redfish, IPMI et MCTP, ainsi qu'à la génération de tables ACPI dynamiques. Le projet inclut également une suite complète d'outils pour la compilation multi-architecture, la simulation de firmware et l'émulation de plateforme virtuelle pour des hyperviseurs comme KVM, Xen et QEMU. Le projet inclut un système de build multi-cible et une orchestration de tests automatisés pour valider la fonctionnalité du firmware dans des environnements émulés et physiques.
Compares module dependencies against allowed packages to prevent unauthorized cross-package dependencies.
eslint-plugin-import est un plugin d'analyse statique ESLint qui fournit une suite de règles et de résolveurs pour valider les instructions d'importation et appliquer des contraintes architecturales sur la façon dont les fichiers importent et exportent du code. Il fonctionne comme un validateur et résolveur de modules pour s'assurer que les déclarations d'importation pointent vers des fichiers valides et que les symboles référencés existent. Le projet identifie les chaînes d'importation récursives pour prévenir les dépendances circulaires et utilise un système de résolution configurable pour mapper les alias et les chemins de fichiers non standards. Il peut également distinguer les fichiers de projet internes des dépendances de bibliothèques externes via la correspondance de motifs de chemins et de dossiers. Le plugin couvre des domaines de qualité de code plus larges, incluant l'application du style d'importation pour l'ordonnancement et le regroupement, la restriction de systèmes de modules spécifiques et la vérification de la disponibilité des exportations pour prévenir les erreurs d'exécution. Il peut en outre limiter les sources d'importation en fonction de l'emplacement du dossier ou interdire des types de chemins spécifiques.
Determines if a module is a local project file or an external dependency using path pattern matching.
TFLint est un outil d'analyse statique et un validateur d'infrastructure-en-tant-que-code conçu pour identifier les erreurs et appliquer les meilleures pratiques au sein des fichiers de configuration Terraform. Il fonctionne comme une porte de qualité pour les flux de travail automatisés et un serveur de langage qui fournit des diagnostics en temps réel et des erreurs de linting directement au sein des éditeurs de texte pris en charge. Le projet utilise un framework de plugin gRPC qui permet l'intégration de règles de validation spécifiques au fournisseur personnalisées via des binaires indépendants et un SDK dédié. Cette architecture sépare la logique de linting de base de la validation spécifique au cloud, prenant en charge l'installation automatisée d'ensembles de règles externes pour vérifier les propriétés des ressources par rapport aux spécifications officielles. Le moteur d'analyse résout les valeurs de configuration et évalue les fonctions intégrées, développant les blocs dynamiques et les collections de ressources pour inspecter la structure finale instanciée. Il couvre l'application des normes de codage, l'analyse des appels de module et la détection des attributs de ressource invalides, avec la possibilité d'exporter des résultats structurés dans des formats tels que SARIF. L'outil inclut une interface en ligne de commande pour le filtrage des cibles d'analyse et fournit une correction automatique des problèmes pour les règles prises en charge.
Inspects attributes within local and remote module calls to identify issues originating from module configurations.
Farm is a Rust-based web build tool and development server that compiles JavaScript, TypeScript, CSS, HTML, and static assets into optimized bundles. It uses a module-graph-based bundling approach with persistent module-level caching, enabling near-instant builds and sub-20ms hot module replacement during development. The tool processes assets based on file extensions, handling CSS, Sass, Less, PostCSS, HTML, and images as first-class modules without requiring JavaScript transformation. Farm distinguishes itself through its Vite-compatible plugin system, accepting Vite, Rollup, and Unplugin p
Discovers and registers module import dependencies to fully resolve the build dependency graph.
Ce projet est une suite complète de rétro-ingénierie Android qui fonctionne comme un décompilateur, un désobfuscateur de bytecode et un outil d'analyse de malware. Il est conçu pour convertir les binaires APK, DEX et OAT en code source lisible par l'homme en utilisant une implémentation native qui ne nécessite pas de machine virtuelle Java. La plateforme se distingue par son intégration avec Frida pour l'analyse dynamique, permettant aux utilisateurs de hooker des méthodes, d'injecter du JavaScript personnalisé et de dumper la mémoire de l'appareil en temps réel. Elle dispose également de moteurs de sécurité spécialisés, incluant un moteur de propagation de taint et une machine à états de pile, pour détecter les fuites de confidentialité, les comportements malveillants et les vulnérabilités de sécurité. La suite couvre un large éventail de capacités analytiques, incluant le patching et le repackaging de binaires, le mappage des dépendances par références croisées et l'analyse de flux de données. Elle fournit des outils pour l'identification des packers logiciels, le décodage de chaînes chiffrées et la recherche globale de métadonnées à travers les ressources de l'application. L'outil fournit une interface en ligne de commande et prend en charge l'automatisation de l'analyse via des scripts Python ou Java personnalisés.
Traces callers of specific functions to identify insecure implementation patterns in the function bodies.
code2flow est un mapper de flux de programme statique et un générateur de graphe d'appels de code source. Il analyse le code source pour produire des diagrammes de flux visuels qui mappent les relations d'appel de fonction et les chemins d'exécution. Le projet inclut un visualiseur de trace d'appel asynchrone qui suit les chemins d'exécution à travers les appels async et await pour mapper la logique des programmes asynchrones. Il fournit également une interface d'analyse de code programmable, permettant à la logique de génération de graphe d'appels d'être intégrée dans d'autres applications logicielles. Le système gère l'analyse de code statique en convertissant le code source en arbres de syntaxe abstraits pour identifier les définitions de fonction et les sites d'appel. Il prend en charge le filtrage de graphe d'appels pour restreindre la portée des visualisations via des filtres de contenu et l'extraction de chemin limitée en profondeur, tout en fournissant un style visuel pour distinguer les flux logiques.
Extracts subsets of the call graph by restricting the depth of connections from a target function.
Ce projet est une implémentation de React Server Components, fournissant une architecture de composants full-stack qui mélange le rendu côté serveur avec l'interactivité côté client. Il permet le développement d'applications web où les composants côté serveur uniquement pour la récupération de données et les composants clients interactifs coexistent au sein d'un seul arbre de composants. Le système se concentre sur l'orchestration des données serveur-client, permettant l'exécution de fonctions serveur et de mutations de base de données à travers la limite réseau. Il se distingue par une architecture de composants hybride qui déplace l'exécution des composants vers le serveur pour réduire la taille des bundles clients et améliorer les temps de chargement initiaux. Le projet couvre une large gamme de capacités, y compris la récupération de données asynchrone avec suspense, la mémoïsation automatique des composants et l'optimisation du rendu côté serveur. Il inclut également des outils pour gérer l'état complexe, coordonner le chargement des actifs pour éviter les décalages de mise en page, et construire des applications multiplateformes pour le web et le mobile. L'outillage de développement est fourni pour détecter les composants impurs, analyser les dépendances des modules et inspecter les hiérarchies de composants pendant le développement.
Maps relationships between files and imports at build-time to minimize the final client bundle size.
Kùzu is an embedded property graph database engine designed for high-performance analytical queries and local data management. It operates as a library within the host application process, utilizing a columnar-based storage architecture and just-in-time query compilation to execute complex graph traversals and pattern matching efficiently. By mapping database files directly into system memory, it ensures data durability and high-speed access while maintaining ACID-compliant transactional integrity. The engine distinguishes itself by integrating vector similarity search and full-text search di
Retrieve lists of nodes or relationships from a recursive path to allow for further inspection or data processing.
node-modules-inspector is a Node.js dependency visualizer and npm package inspector. It provides a web interface for exploring the structure and contents of the node_modules directory to analyze and audit project dependencies. The tool functions as a static dependency graph generator, exporting a project's dependency view as a standalone single-page application. This allows the dependency tree to be hosted as static documentation for sharing and reference. The system scans the filesystem to build a map of installed packages and their physical locations. It includes capabilities for exploring
Analyzes the module graph within node_modules to identify redundant packages and version conflicts.
Closure Compiler is a JavaScript build utility designed to transform, optimize, and validate source code for production environments. It functions as a minifier and transpiler, converting modern ECMAScript syntax into older, widely compatible versions to ensure reliable execution across diverse browsers. The tool distinguishes itself through a multi-pass optimization pipeline that performs complex refactoring, such as constant folding, function inlining, and variable renaming. It utilizes a static type inference engine to detect potential runtime errors and enforce type safety without requiri
Analyzes module graphs to identify unused exports and prune unreachable code paths.
SVF is an open-source static program analysis framework and points-to analysis library that tracks memory references, variable aliases, and data dependencies across whole programs. The platform translates compiled intermediate code formats into unified internal representations, constructing constraint graphs, call graphs, and control-flow graphs to model interprocedural execution behavior and memory state. The framework incorporates specialized engines for flow-sensitive, flow-insensitive, and context-sensitive pointer analysis alongside sparse value-flow graph generation. It features memory
Inspects points-to relationships and program dependence information programmatically using custom driver scripts.