Question

J'ai un grand référentiel source réparti sur plusieurs projets. J'aimerais produire un rapport sur la santé du code source, identifiant les problèmes à résoudre.

Plus précisément, j'aimerais créer des routines avec une complexité cyclomatique élevée, identifier les répétitions et peut-être exécuter une analyse statique semblable à une charpie pour repérer les constructions suspectes (et donc probablement erronées).

Comment puis-je construire un tel rapport?

Était-ce utile?

La solution

Pour mesurer la complexité cyclomatique, un bel outil est disponible à l'adresse traceback.org . La page donne également un bon aperçu de la manière d’interpréter les résultats.

+1 pour pylint . C'est un excellent moyen de vérifier le respect des normes de codage (que ce soit PEP8 ou le vôtre variante de l’organisation), ce qui peut finalement contribuer à réduire la complexité cyclomatique.

Autres conseils

Pour la complexité cyclomatique, vous pouvez utiliser radon : https://github.com/rubik / radon

(Utilisez pip pour l'installer: pip install radon )

De plus, il présente également les fonctionnalités suivantes:

  • mesures brutes (notamment le SLOC, les lignes de commentaire, les lignes vides, etc.)
  • Métriques Halstead (toutes)
  • Indice de maintenabilité (celui utilisé dans Visual Studio)

Pour l'analyse statique, pylint et pychecker . Personnellement, j'utilise pylint car il semble être plus complet que pychecker.

Pour la complexité cyclomatique, vous pouvez essayer ce programme Perl , ou ce article qui introduit un programme python pour faire de même.

Pycana fonctionne à merveille lorsque vous avez besoin de comprendre un nouveau projet!

  

PyCAna (analyseur de code Python) est   un nom de fantaisie pour un code simple   analyseur pour python qui crée un   diagramme de classe après avoir exécuté votre   code.

Voyez comment cela fonctionne: http://pycana.sourceforge.net/

sortie:

texte alt http://pycana.sourceforge.net/relations.png

Merci à Pydev , vous pouvez intégrer pylint dans Eclipse IDE très facilement et obtenir un rapport de code chaque fois que vous enregistrez un fichier modifié.

Utilisez flake8 , qui fournit une analyse de la complexité pep8, pyflakes et cyclomatic dans un seul outil

Il existe un outil appelé CloneDigger qui vous aide à rechercher des extraits de code similaires.

Pour vérifier la complexité cyclomatique, il existe bien sûr le mccabe .

Installation:

$ pip install --upgrade mccabe

Utilisation:

$ python -m mccabe --min=6 path/to/myfile.py

Notez le seuil de 6 ci-dessus. Selon votre réponse , les scores > 5 devraient probablement être simplifiés.

Exemple de sortie avec - min = 3 :

68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3

Il peut également être utilisé via pylint-mccabe ou pytest-mccabe , etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top