Skip to content
/ churn Public
forked from patrykwozinski/churn

Find refactoring candidates in your Elixir project easily with Churn 🧹

Notifications You must be signed in to change notification settings

nathanl/churn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Churn Build Status Hex pm

Help discover a good refactoring candidates using cyclomatic complexity and frequency of editing files

Table of Contents

What is it?

churn is a package that helps you identify .ex files in your project that could be good candidates for refactoring. It examines each Elixir 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:

How to use

You can use some of existing flags to precise Churn results

--min-score-to-show (-s shortcut)

Example:
-s 2
--commit-since (-t shortcut)

Example:
-t "2 months ago"
--directories-to-scan (-d shortcut)

Example:
-d lib,test
--file-extensions [-e shortcut]

Example
-e "ex,exs"
--files-to-ignore [-i shortcut]

Example
-i "lib/churn/hello_world.ex"
--config [-c shortcut]

Example
-C foo/bar.exs

How to install

The package can be installed by adding churn to your list of dependencies in mix.exs and then you need to copy .churn.exs file into your project.

Update your mix.exs:

def deps do
  [
    {:churn, "~> 0.1", only: :dev}
  ]
end

Copy and configure the .churn.exs file:

%{
  #
  # Minimum score to show in a table.
  #
  min_score_to_show: 0,

  #
  # Provide a human readable time to use git-log history for churn.
  #
  commit_since: "1 year ago",

  #
  # Describes output type for the Churn results
  #
  output_type: :console,

  #
  # Where to find a files to analyse and seeking for refactoring candidates.
  #
  directories_to_scan: ["lib"],

  #
  # Which extensions should be used for seeking project files.
  #
  file_extensions: ["ex", "exs"],

  #
  # Determines files should we ignore and protect from analysis.
  #
  files_to_ignore: []
}

Docs: https://hexdocs.pm/churn.

Similar Packages

About

Find refactoring candidates in your Elixir project easily with Churn 🧹

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elixir 100.0%