Obtenez des métriques de code source Python à l'aide de radon

Aperçu

Radon est un programme qui mesure les métriques Python. https://github.com/rubik/radon

Cela vous permet d'obtenir la complexité et le nombre de lignes de code Python. En mesurant la complexité, vous pouvez identifier les risques potentiels dans votre code source et identifier ce que vous devez refactoriser ou tester.

Comment installer

Exécutez ce qui suit dans python2.x ou Python3.x.

easy_install easy_install radon

Comment utiliser

Mesure de la complexité cyclomatique

La complexité cyclomatique peut être mesurée à l'aide de la commande cc. La complexité cyclomatique augmente à mesure qu'il y a plus d'instructions de contrôle. Voir ci-dessous pour plus de détails. https://radon.readthedocs.org/en/latest/intro.html#cyclomatic-complexity

__Exemple d'utilisation: __

radon cc -s ".\*.py"

無題.png

__ Contenu de sortie: __ Le premier symbole représente le type de bloc

symbole La description
F une fonction
M Méthode
C classe

Les nombres suivants représentent la matrice de départ du bloc à mesurer

ligne:Colonne

Ensuite, le nom du bloc tel que le nom de la fonction est affiché.

Après "-", cela devient la valeur du rang et de la complexité cyclomatique.

Le rang est déterminé par la valeur de la complexité cyclomatique.

Valeur CC Rang risque
1 - 5 A low -Bloc simple
6 - 10 B low -Bloc bien structuré et stable
11 - 20 C moderate -Un petit bloc compliqué
21 - 30 D more than moderate -Blocs plus complexes
31 - 40 E high -Blocs complexes, alarmants
41+ F very high -Blocs instables sujets aux erreurs

option: Les options disponibles pour la commande cc sont:

Option La description
-s, --show Afficher la complexité cyclomatique.
-n, --min Définissez le rang minimum à afficher. Spécifiez A à F après cet argument
-x, --max Définissez le rang maximum à afficher. Spécifiez A à F après cet argument
-a, --average Affichez la moyenne de la complexité cyclomatique à la fin. Cette moyenne est-n ou-Affecté par le filtre x
--total-average Recevez la moyenne de toutes les données-Contrairement à a, il n'est pas affecté par le filtre
-e, --exclude Spécifiez les chemins des fichiers à exclure de l'analyse, séparés par des virgules.
-i, --ignore Spécifiez les répertoires à ignorer, séparés par des virgules. Ne pas vérifier sous les répertoires ignorés
-o, --order Spécifiez l'ordre de tri.
SCORE par ordre de complexité
LIGNES par nombre de lignes
Ordre des noms de bloc ALPHA
-j, --json Sortir le résultat dans JSON
--no-assert Asser lors du calcul de la complexité()Les instructions ne comptent pas

Mesure de l'indice de maintenabilité

Mesurez l'indice de maintenabilité à l'aide de la commande mi. La maintenabilité est calculée à partir de la complexité cyclomatique et du nombre de lignes, 100 étant le plus élevé, plus il est facile à maintenir.

Voir ci-dessous pour plus de détails https://radon.readthedocs.org/en/latest/intro.html#maintainability-index

__Exemple d'utilisation: __

radon mi -s ".\*.py"

__ Contenu de sortie: __

C:\dev\py33>radon mi -s "test.py"
test.py - A (58.76)

Afficher le nom du fichier, le rang, le score MI

Le rang est le suivant

MI score Rank Maintainability
100 - 20 A Très cher
19 - 10 B Moyen
9 - 0 C Très lent

option: Les options disponibles pour la commande mi sont:

Option La description
-s, --show Affichez l'indice de maintenabilité.
-e, --exclude Spécifiez les chemins des fichiers à exclure de l'analyse, séparés par des virgules.
-i, --ignore Spécifiez les répertoires à ignorer, séparés par des virgules. Ne pas vérifier sous les répertoires ignorés
-m, --multi Ne comptez pas les chaînes multilignes comme commentaires

Mesure des données brutes

La commande brute génère les nombres suivants.

LOC: Nombre total de lignes -LLOC_: LOC logique. À l'exclusion des lignes vides et des lignes de commentaire · SLOC: LOC source. Hors lignes vierges. ・ Comments: Ligne de commentaire · Multi: chaîne multiligne. Peut être considéré comme un commentaire ・ Blank: ligne vierge

option: Les options disponibles pour la commande brute sont:

Option La description
-s, --summary Afficher le résultat d'agrégation mesuré
-e, --exclude Spécifiez le chemin du fichier à exclure de l'analyse, séparé par des virgules.
-i, --ignore Spécifiez les répertoires à ignorer, séparés par des virgules. Ne pas vérifier sous les répertoires ignorés
-j, --json Sortir le résultat dans JSON

Utilisation à partir du programme

Vous pouvez utiliser radon à partir de python en important le module radon dans le code python.

Exemple:

import radon
from radon import raw
ret = radon.raw.analyze("""
if a==1:
  print (a)
if a==2:
  print (a)
""")
print(ret)

Voir l'aide ou voir ci-dessous pour plus d'informations https://radon.readthedocs.org/en/latest/api.html

Recommended Posts

Obtenez des métriques de code source Python à l'aide de radon
Vérifiez le style de code python à l'aide de pep8
[Python] Lire le code source de Flask
Formatage du code source Jinja2 avec atom-beautify
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
python setup.py tester le code en utilisant le multiprocessus
[Python] Lire le code source de Bottle Part 2
Essayez d'utiliser Sourcetrail, un outil de visualisation de code source
Déboguer avec VS Code en utilisant Boost Python Numpy
Commencez à utiliser Python
code de caractère python
[Python] Lire le code source de Bottle Part 1
[Python] Code conscient des algorithmes
Scraping à l'aide de Python
[Python] Lecture du code source Django Vue à partir de zéro ①
[Python] J'ai immédiatement essayé d'utiliser l'extension VS Code de Pylance.
Comment créer un package Python à l'aide de VS Code
Manipuler Redmine à l'aide de Python Redmine
Séquence de Fibonacci utilisant Python
1.1 Premiers pas avec Python
Réécrire le code Python2 en Python3 (2to3)
infomap code de dessin Python
Avant d'écrire du code Python
Installer Python à partir de la source
Premiers pas avec Python
Nettoyage des données à l'aide de Python
Comment analyser le code source Java avec AST (Abstract Syntax Tree) en utilisant ANTLR et Python
Utilisation des packages Python #external
Câblage Communication Pi-SPI avec Python
Calcul de l'âge à l'aide de python
Rechercher sur Twitter avec Python
Premiers pas avec Python
Identification de nom à l'aide de python
Code d'état des requêtes Python
Notes sur l'utilisation de sous-processus Python
Essayez d'utiliser Tweepy [Python2.7]
Premiers pas avec python3 # 3 Essayez des calculs avancés à l'aide de l'instruction d'importation
Supprimer les commentaires sur une ligne, y compris le japonais du code source en Python
Vérifiez toujours PEP8 lors de l'édition du code source Python dans Emacs
PyArmor ~ Un moyen facile de chiffrer et de fournir du code source Python ~