churn-php

Discover files in need of refactoring.

Github星跟蹤圖

churn-php

Helps discover good candidates for refactoring.

Build Status codecov Scrutinizer Code Quality Code Climate Packagist Packagist Packagist
Say Thanks!
Donate

Table of Contents

What is it?

churn-php is a package that helps you identify php files in your project that could be good candidates for refactoring. It examines each PHP file in the path it is provided and:

  • Checks how many commits it has.
  • Calculates the cyclomatic complexity.
  • Creates a score based on these two values.

The results are displayed in a table:

A file that changes a lot and has a high complexity might be a better candidate for refactoring than a file that doesn't change a lot and has a low complexity.

churn-php only assists the developer to identify files for refactoring. It's best to use the results in addition to your own judgment to decide which files you may want to refactor.

Compatibility

  • PHP 7+
  • Currently does not work on Windows command line. See #71 for more details.
  • Your project uses Git as version control system.

If you want to install churn-php in Symfony project, your Symfony components version must be 3.3 or higher.

How to Install?

Install via Composer:

composer require bmitch/churn-php --dev

How to Use?

vendor/bin/churn run <one or more paths to source code> ...
vendor/bin/churn run src
vendor/bin/churn run src tests

You can also use churn-php via Docker:

docker run --rm -ti -v $PWD:/app dockerizedphp/churn run src

How to Configure?

You may add an optional churn.yml file which can be used to configure churn-php. The location of the churn.yml file can be customized using these commands:

Default: "churn.yml" 
vendor/bin/churn run -c <path>
vendor/bin/churn run --configuration[=CONFIGURATION] <path>

A sample churn.yml file looks like:

# 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.
# Default: 0.1
minScoreToShow: 0

# The number of parallel jobs to use when processing files.
# Default: 10
parallelJobs: 10

# How far back in the git 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

If a churn.yml file is omitted or an individual setting is omitted the default values above will be used.

Output formats

You can configure churn to output the result in different formats. The available formats are:

  • csv
  • json
  • text (default)

To use a different format use --format option. Example command for json:

vendor/bin/churn run --format json

Tests

  • To run the PHPUnit tests execute vendor/bin/phpunit.
  • Before making a pull request please see the contributing section below.

Similar Packages

Contact

Questions, comments, feedback? @bmitch2112

Contributing

  • Please run composer test on PHP 7.0 and ensure it passes.
  • If you do have access to PHP 7.0 please make sure that CI build passes when you make pull request. If you are unable to get it to pass in the pull request please ping me and I can help.
  • Please see CONTRIBUTING.md

License

The MIT License (MIT). Please see License File for more information.

主要指標

概覽
名稱與所有者bmitch/churn-php
主編程語言PHP
編程語言PHP (語言數: 3)
平台
許可證MIT License
所有者活动
創建於2017-06-10 16:01:41
推送於2024-09-03 22:54:48
最后一次提交2024-08-05 08:44:51
發布數28
最新版本名稱1.7.2 (發布於 2024-08-04 12:12:06)
第一版名稱0.0.1 (發布於 )
用户参与
星數1.4k
關注者數19
派生數56
提交數494
已啟用問題?
問題數122
打開的問題數3
拉請求數254
打開的拉請求數1
關閉的拉請求數19
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?