5 dépôts
Static analysis that identifies unreferenced declarations, functions, and classes within source code.
Distinct from Unused Dependency Identification: Distinct from unused dependency identification which focuses on external packages rather than internal source declarations.
Explore 5 awesome GitHub repositories matching development tools & productivity · Unused Code Identification. Refine with filters or upvote what's useful.
Periphery est un outil d'analyse statique et de détection de code mort pour les projets Swift. Il identifie les classes, structs, fonctions et propriétés non référencées, et sert d'optimiseur de surface d'API pour trouver les déclarations publiques qui peuvent être restreintes à un accès interne. L'outil inclut une analyse spécialisée pour les fichiers Interface Builder, tels que les storyboards et les XIB, afin de garantir que les membres connectés à l'UI ne soient pas signalés à tort comme inutilisés. Il fournit également une suppression automatique de code pour éliminer directement des fichiers source le code mort identifié et les paramètres inutilisés. Ses capacités d'analyse couvrent la détection de protocoles redondants, de cas d'enum inutilisés, d'imports inutiles et de propriétés assignées mais jamais lues. Le système gère la dette technique via un filtrage par comparaison de base de référence et prend en charge les projets mixtes en préservant les symboles exposés au runtime Objective-C. Periphery s'intègre aux systèmes de build et aux pipelines CI via une configuration basée sur YAML et peut exporter les résultats d'analyse dans plusieurs formats standards de l'industrie.
Uses binary index store data to identify unused code without requiring a full project rebuild.
j2objc est un compilateur source-à-source et un transpiler qui convertit le code source Java en Objective-C. Il fonctionne comme un porteur de logique multiplateforme, permettant à la logique d'application et aux modèles de données écrits en Java d'être partagés et exécutés sur iOS. Pour prendre en charge cette traduction, le projet fournit une implémentation Objective-C des classes et API Java de base pour émuler l'environnement d'exécution Java. Le système inclut une traduction spécialisée pour les bibliothèques Java et fournit un mappage pour l'injection de dépendances et les annotations d'analyse statique afin de préserver les métadonnées. Il permet également la conversion de tests JUnit en binaires exécutables pour vérifier la cohérence logique sur le matériel mobile. Pour optimiser les applications iOS résultantes, le projet fournit des outils pour la détection de code inutilisé et l'élimination de code mort. Il permet en outre le remplacement de classes traduites automatiquement par des implémentations natives écrites à la main pour augmenter la vitesse d'exécution.
Analyzes source files to identify classes and methods that are unreachable from defined public entry points.
Rhai est un moteur de script embarqué et un langage à typage dynamique conçu pour être intégré dans des applications Rust. Il fonctionne comme un compilateur d'arbre de syntaxe abstraite (AST) et une couche d'interopérabilité native, permettant aux développeurs de mapper des types et des fonctions Rust dans un environnement de script pour une communication bidirectionnelle. Le projet sert de framework pour créer des langages dédiés (DSL) personnalisables. Il permet de définir des opérateurs, une syntaxe et des environnements d'exécution restreints personnalisés, facilitant la création de langages spécialisés avec des jeux de fonctionnalités sur mesure. Le moteur couvre un large éventail de capacités, notamment le sandboxing avec limitation de ressources pour une exécution sécurisée, l'organisation modulaire du code et un traitement complet des données pour les types numériques, chaînes de caractères et binaires. Il fournit également des outils pour la manipulation d'AST, la sérialisation de l'état d'exécution et l'observabilité au runtime via l'inspection de la pile d'appels et des interfaces de débogage. Le moteur est conçu pour un déploiement multiplateforme sur tout CPU ou système d'exploitation supporté par le compilateur natif.
Removes unreachable code blocks and propagates constants within the compiled AST before evaluation.
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.
Identifies unreferenced declarations, functions, and classes within source code using confidence scores.
Wire is a cross-platform code generator and implementation of gRPC and Protocol Buffers. It transforms schema definitions into type-safe native language bindings for Kotlin, Swift, and Java to ensure consistent data exchange and communication between distributed systems. The project provides specialized tools for protocol buffer schema management, including the ability to prune unused types and filter fields by version to reduce final binary sizes. It also handles namespace management and allows for the creation of custom schema handlers to execute user-defined logic during the compilation ph
Removes unwanted types and fields from generated code via exclusion lists or reachability analysis to reduce binary size.