Aide à découvrir de bons candidats pour la refactorisation.
churn-php
est un package qui vous aide à identifier les fichiers php de votre projet qui pourraient être de bons candidats pour la refactorisation. Il examine chaque fichier PHP dans le chemin qui lui est fourni et :
Les résultats sont affichés dans un tableau :
Un fichier qui change beaucoup et présente une complexité élevée peut être un meilleur candidat pour une refactorisation qu'un fichier qui ne change pas beaucoup et présente une faible complexité.
churn-php
aide uniquement le développeur à identifier les fichiers à refactoriser. Il est préférable d'utiliser les résultats en plus de votre propre jugement pour décider quels fichiers vous souhaitez refactoriser.
Téléchargez la dernière version de churn.phar
ou installez-la avec Phive :
phive install churn
Vous pouvez également installer churn-php
via Composer :
composer require bmitch/churn-php --dev
churn run < one or more paths to source code > ...
churn run src
churn run src tests
# the command name can be skipped if directoriesToScan is set in churn.yml
churn
Vous pouvez ajouter un fichier churn.yml
facultatif qui peut être utilisé pour configurer churn-php. L'emplacement de ce fichier peut être personnalisé à l'aide de l'option --configuration
:
# Default: "churn.yml" or "churn.yml.dist"
churn run --configuration=config-dir/ < path >
churn run --configuration=my-config.yml < path >
Un exemple de fichier churn.yml
ressemble à :
# The maximum number of files to display in the results table.
# Default: 10
filesToShow : 10
# The minimum score a file need to display in the results table.
# Disabled if null.
# Default: 0.1
minScoreToShow : 0
# The command returns an 1 exit code if the highest score is greater than the threshold.
# Disabled if null.
# Default: null
maxScoreThreshold : 0.9
# The number of parallel jobs to use when processing files.
# Default: 10
parallelJobs : 10
# How far back in the VCS history to count the number of commits to a file
# Can be a human readable date like 'One week ago' or a date like '2017-07-12'
# Default: '10 Years ago'
commitsSince : One year ago
# Files to ignore when processing. The full path to the file relative to the root of your project is required.
# Also supports regular expressions.
# Default: All PHP files in the path provided to churn-php are processed.
filesToIgnore :
- src/Commands/ChurnCommand.php
- src/Results/ResultsParser.php
- src/Foo/Ba*
# File extensions to use when processing.
# Default: php
fileExtensions :
- php
- inc
# This list is used only if there is no argument when running churn.
# Default: <empty>
directoriesToScan :
- src
- tests/
# List of user-defined hooks.
# They can be referenced by their full qualified class name if churn has access to the autoloader.
# Otherwise the file path can be used as well.
# See below the section about hooks for more details.
# Default: <empty>
hooks :
- NamespaceMyHook
- path/to/my-hook.php
# The version control system used for your project.
# Accepted values: fossil, git, mercurial, subversion, none
# Default: git
vcs : git
# The path of the cache file. It doesn't need to exist before running churn.
# Disabled if null.
# Default: null
cachePath : .churn.cache
Si un fichier churn.yml
est omis ou si un paramètre individuel est omis, les valeurs par défaut ci-dessus seront utilisées.
Vous pouvez configurer churn
pour afficher le résultat dans différents formats. Les formats disponibles sont :
csv
json
markdown
text
(par défaut) Pour utiliser un format différent, utilisez l'option --format
. Exemple de commande pour json
:
churn run --format json
La configuration des hooks vous permet de personnaliser churn
.
Un hook défini par l'utilisateur doit implémenter au moins une interface Hook :
Interface de crochet | Interface d'événement correspondante |
---|---|
AprèsAnalyseHook | AprèsAnalyse |
AfterFileAnalysisHook | AprèsFileAnalysis |
AvantAnalyseHook | AvantAnalyse |
Des questions, des commentaires, des retours ? @bmitch2112
composer test
sur PHP 7.1 et assurez-vous qu'il réussit.La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.