4 dépôts
Analysis of program control flow to find blocks of code that cannot be executed during runtime.
Distinct from Static Code Analysis: Specifically targets unreachable execution paths, whereas static code analysis is a broader category for all non-executing checks.
Explore 4 awesome GitHub repositories matching testing & quality assurance · Unreachable Code Analysis. Refine with filters or upvote what's useful.
Vulture est un outil d'analyse statique et un linter conçu pour trouver les variables, fonctions et classes inutilisées dans le code source Python. Il opère comme un détecteur de code mort et un chercheur de code inutilisé qui scanne les fichiers sources pour identifier les expressions et importations inaccessibles sans exécuter le code. L'outil emploie un système de score heuristique basé sur la confiance pour attribuer des valeurs de probabilité aux détections, aidant à distinguer les symboles réellement inutilisés des faux positifs potentiels. Il aide en outre à élaguer la logique morte en triant les classes et fonctions inutilisées détectées par nombre de lignes pour prioriser la suppression des plus gros blocs de code. La surface d'analyse inclut l'analyse de l'accessibilité du flux de contrôle, le suivi des références de symboles et la capacité de supprimer les faux positifs via des modèles de noms, des décorateurs ou des commentaires d'ignorance. Vulture prend également en charge la génération et la gestion de listes blanches via des modules mock pour exclure des éléments spécifiques des scans ultérieurs. Les règles d'analyse à l'échelle du projet et les chemins cibles peuvent être gérés via des fichiers de configuration, incluant la prise en charge du format TOML.
Analyzes program flow to identify specific code blocks and expressions that can never be executed.
Simplify est une machine virtuelle Android sandbox, un traceur d'exécution de bytecode et un framework d'analyse statique. Il sert de désassembleur de bytecode Dalvik conçu pour récupérer du code lisible à partir de binaires en simulant le comportement du programme sans appareil physique. Le projet se distingue par l'utilisation de l'analyse de graphes d'exécution pour résoudre les appels par réflexion et simplifier le code obfusqué via la propagation de constantes et la suppression de code mort. Il utilise la simulation d'exécution multi-chemins pour suivre tous les résultats possibles des branches conditionnelles et mappe le flux d'instructions pour identifier les valeurs constantes. Le système couvre un large éventail de capacités d'analyse, notamment le traçage de la propagation des exceptions, la catégorisation des effets de bord des méthodes et la simulation d'appels d'API Java. Il fournit également des mécanismes pour intercepter les exécutions de méthodes via des hooks personnalisés afin de surveiller ou de remplacer les états de la machine virtuelle.
Maps instruction flow and register ancestry to identify constant values and remove unreachable dead code.
onnxsim est un optimiseur de graphes de deep learning et un simplificateur de modèles conçu pour réduire la complexité des graphes de calcul ONNX. Il fonctionne comme un compresseur de modèle qui remplace des séquences d'opérateurs complexes par des sorties constantes simplifiées afin de réduire la surcharge opérationnelle. Le projet réalise cette simplification grâce à l'inférence par pliage de constantes (constant folding), qui remplace les sous-graphes d'opérateurs constants par des tenseurs constants pré-calculés. Il utilise la réécriture de graphes basée sur des motifs et l'analyse statique de graphes de calcul pour identifier et supprimer les nœuds redondants ou les opérations inaccessibles. L'outil couvre de larges capacités d'optimisation de modèles, notamment l'élimination de la redondance des opérateurs et la suppression des nœuds de reshape ou d'identité inutiles. Ces processus rationalisent le flux d'exécution et réduisent l'empreinte mémoire du modèle.
Analyzes the execution graph to identify unreachable operations and redundant nodes for removal.
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
Produces call graphs and control flow graphs to visualize program structure and data dependencies.