J'ai vu Comment trouver les fonctions inutilisées dans le code Python ? mais c'est vraiment vieux, et ça ne répond pas vraiment à ma question.
J'ai un grand projet python avec plusieurs bibliothèques qui sont partagées par plusieurs scripts de point d'entrée. Ce projet a été accrédité pendant de nombreuses années avec de nombreux auteurs, il y a donc tout un tas de code mort. Vous connaissez la chanson.
Je sais que trouver tout le code mort est indécidable. Tout ce dont j'ai besoin est un outil qui trouvera toutes les fonctions qui ne sont appelées nulle part. Nous ne faisons rien de fantaisiste en appelant des fonctions sur la base de la chaîne de caractères du nom de la fonction, donc je ne m'inquiète pas de quelque chose de pathologique...
Je viens d'installer pylint, mais il semble être basé sur les fichiers, et ne pas prêter beaucoup d'attention aux dépendances inter-fichiers, ou même aux dépendances de fonctions.
Il est clair que je pourrais chercher def dans tous les fichiers, récupérer tous les noms de fonctions et faire un grep pour chacun de ces noms de fonctions. J'espère juste qu'il y a déjà quelque chose d'un peu plus intelligent que ça.
ETA : Veuillez noter que je n'attends pas ou ne veux pas quelque chose de parfait. Je connais mon problème de halte-proof tout aussi bien que n'importe qui (Non vraiment, j'ai enseigné la théorie du calcul, je sais quand je regarde quelque chose qui est récursivement énumérable). Toute chose qui essaie de s'en approcher en exécutant réellement le code va prendre beaucoup trop de temps. Je veux juste quelque chose qui parcourt syntaxiquement le code et dise "Cette fonction est certainement utilisée. Cette fonction POURRAIT être utilisée, et cette fonction n'est définitivement PAS utilisée, personne d'autre ne semble même savoir qu'elle existe !". Et les deux premières catégories ne sont pas importantes.