Check Parameters
View SourceChecks are configured using parameters (short: params).
There are custom params for each check and a set of general params that work for all checks.
Configuration
Checks and their params are configured in Credo's configuration file:
# .credo.exs
%{
  configs: [
    %{
      name: "default",
      checks: [
        {Credo.Check.Consistency.TabsOrSpaces, false},
        {Credo.Check.Design.AliasUsage, if_nested_deeper_than: 2},
      ],
      # files etc.
    }
  ]
}All checks are configured using a two-element tuple:
{MyApp.CheckModule, params}MyApp.CheckModule is the module representing the check to be configured (read more about custom checks).
params can be either false, to disable the check ...
# This check won't be part of the analysis
{Credo.Check.Consistency.TabsOrSpaces, false}... or a keyword list of parameters, used to configure the check:
{Credo.Check.Design.AliasUsage, if_nested_deeper_than: 2}General params
While params are defined by each check individually, there are a couple of general params provided by Credo, which work the same for each check.
The general params available are:
  
    
  
  :category
Overwrites the category of the check
{Credo.Check.Warning.IExPry, category: :readability}
  
    
  
  :exit_status
Overwrites a custom exit status for the check
{Credo.Check.Warning.IoInspect, exit_status: 0}Read more on exit status in Credo.
  
    
  
  :files
Controls which files the check runs on.
This allows for specific files or patterns to be included/excluded for specific checks.
The syntax is the same as for the top-level :files key:
# check included for Elixir files in lib/ only
{Credo.Check.Consistency.ExceptionNames, files: %{included: ["lib/**/*.ex"]}},
# check excluded for a specific file
{Credo.Check.Warning.IExPry, files: %{excluded: ["lib/debug_server.ex"]}},
# check included for all Elixir script files, but excluded for test scripts
{Credo.Check.Warning.IoInspect, files: %{included: ["**/*.exs"], excluded: ["**/*_test.exs"]}},Please note that these params do not "override" the top-level config, but are applied to the result of the top-level config's resolution.
  
    
  
  :priority
Overwrites the priority of the check
{Credo.Check.Warning.IoInspect, priority: :low}Available priorities are: :low, :normal, :high and :higher.
  
    
  
  :tags
Overwrites or appends the tags of the check
# Overwrite all tags for `MyApp.CheckModule`
{MyApp.CheckModule, tags: [:my_tag]}
# OR: append tags to `MyApp.CheckModule`
{MyApp.CheckModule, tags: [:__initial__, :my_tag]}Tags can then be used to include or exclude checks from the analysis:
# Only run checks tagged `:my_tag` during analysis
$ mix credo --checks-with-tag my_tag
# Exclude all checks tagged `:my_tag` from analysis
$ mix credo --checks-without-tag my_tag