| # This file contains the configuration for Credo and you are probably reading |
| # this after creating it with `mix credo.gen.config`. |
| # |
| # If you find anything wrong or unclear in this file, please report an |
| # issue on GitHub: https://github.com/rrrene/credo/issues |
| # |
| %{ |
| # |
| # You can have as many configs as you like in the `configs:` field. |
| configs: [ |
| %{ |
| # |
| # Run any exec using `mix credo -C <name>`. If no exec name is given |
| # "default" is used. |
| # |
| name: "default", |
| # |
| # These are the files included in the analysis: |
| files: %{ |
| # |
| # You can give explicit globs or simply directories. |
| # In the latter case `**/*.{ex,exs}` will be used. |
| # |
| included: ["lib/", "src/", "test/", "web/", "apps/"], |
| excluded: [ |
| ~r"/_build/", |
| ~r"/node_modules/", |
| ~r"/src/certifi/", |
| ~r"/src/excoveralls/", |
| ~r"/src/jason", |
| ~r"/src/hackney", |
| ~r"/src/httpotion", |
| ~r"/src/file_system", |
| ~r"/src/credo", |
| ~r"/src/idna", |
| ~r"/src/junit_formatter", |
| ~r"/src/bunt", |
| ~r"/src/metrics", |
| ~r"/src/minerl", |
| ~r"/src/parse_trans", |
| ~r"/src/ssl_verify_fun", |
| ~r"/test/elixir/deps/" |
| ] |
| }, |
| # |
| # If you create your own checks, you must specify the source files for |
| # them here, so they can be loaded by Credo before running the analysis. |
| # |
| requires: [], |
| # |
| # If you want to enforce a style guide and need a more traditional linting |
| # experience, you can change `strict` to `true` below: |
| # |
| strict: false, |
| # |
| # If you want to use uncolored output by default, you can change `color` |
| # to `false` below: |
| # |
| color: true, |
| # |
| # You can customize the parameters of any check by adding a second element |
| # to the tuple. |
| # |
| # To disable a check put `false` as second element: |
| # |
| # {Credo.Check.Design.DuplicatedCode, false} |
| # |
| checks: [ |
| # |
| ## Consistency Checks |
| # |
| {Credo.Check.Consistency.ExceptionNames, []}, |
| {Credo.Check.Consistency.LineEndings, []}, |
| {Credo.Check.Consistency.ParameterPatternMatching, false}, |
| {Credo.Check.Consistency.SpaceAroundOperators, []}, |
| {Credo.Check.Consistency.SpaceInParentheses, []}, |
| {Credo.Check.Consistency.TabsOrSpaces, []}, |
| |
| # |
| ## Design Checks |
| # |
| # You can customize the priority of any check |
| # Priority values are: `low, normal, high, higher` |
| # |
| {Credo.Check.Design.AliasUsage, |
| [priority: :low, if_nested_deeper_than: 2, if_called_more_often_than: 0]}, |
| # You can also customize the exit_status of each check. |
| # If you don't want TODO comments to cause `mix credo` to fail, just |
| # set this value to 0 (zero). |
| # |
| {Credo.Check.Design.TagTODO, false}, |
| {Credo.Check.Design.TagFIXME, []}, |
| |
| # |
| ## Readability Checks |
| # |
| {Credo.Check.Readability.AliasOrder, []}, |
| {Credo.Check.Readability.FunctionNames, []}, |
| {Credo.Check.Readability.LargeNumbers, []}, |
| {Credo.Check.Readability.MaxLineLength, [priority: :normal, max_length: 90]}, |
| {Credo.Check.Readability.ModuleAttributeNames, []}, |
| {Credo.Check.Readability.ModuleDoc, []}, |
| {Credo.Check.Readability.ModuleNames, []}, |
| {Credo.Check.Readability.ParenthesesInCondition, []}, |
| {Credo.Check.Readability.ParenthesesOnZeroArityDefs, []}, |
| {Credo.Check.Readability.PredicateFunctionNames, []}, |
| {Credo.Check.Readability.PreferImplicitTry, []}, |
| {Credo.Check.Readability.RedundantBlankLines, []}, |
| {Credo.Check.Readability.Semicolons, []}, |
| {Credo.Check.Readability.SpaceAfterCommas, []}, |
| {Credo.Check.Readability.StringSigils, []}, |
| {Credo.Check.Readability.TrailingBlankLine, []}, |
| {Credo.Check.Readability.TrailingWhiteSpace, []}, |
| {Credo.Check.Readability.VariableNames, []}, |
| |
| # |
| ## Refactoring Opportunities |
| # |
| {Credo.Check.Refactor.CondStatements, []}, |
| {Credo.Check.Refactor.CyclomaticComplexity, false}, |
| {Credo.Check.Refactor.FunctionArity, []}, |
| {Credo.Check.Refactor.LongQuoteBlocks, false}, |
| {Credo.Check.Refactor.MapInto, []}, |
| {Credo.Check.Refactor.MatchInCondition, []}, |
| {Credo.Check.Refactor.NegatedConditionsInUnless, []}, |
| {Credo.Check.Refactor.NegatedConditionsWithElse, []}, |
| {Credo.Check.Refactor.Nesting, false}, |
| {Credo.Check.Refactor.PipeChainStart, |
| [ |
| excluded_argument_types: [:atom, :binary, :fn, :keyword], |
| excluded_functions: [] |
| ]}, |
| {Credo.Check.Refactor.UnlessWithElse, []}, |
| |
| # |
| ## Warnings |
| # |
| {Credo.Check.Warning.BoolOperationOnSameValues, []}, |
| {Credo.Check.Warning.ExpensiveEmptyEnumCheck, []}, |
| {Credo.Check.Warning.IExPry, []}, |
| {Credo.Check.Warning.IoInspect, []}, |
| {Credo.Check.Warning.LazyLogging, []}, |
| {Credo.Check.Warning.OperationOnSameValues, []}, |
| {Credo.Check.Warning.OperationWithConstantResult, []}, |
| {Credo.Check.Warning.RaiseInsideRescue, []}, |
| {Credo.Check.Warning.UnusedEnumOperation, []}, |
| {Credo.Check.Warning.UnusedFileOperation, []}, |
| {Credo.Check.Warning.UnusedKeywordOperation, []}, |
| {Credo.Check.Warning.UnusedListOperation, []}, |
| {Credo.Check.Warning.UnusedPathOperation, []}, |
| {Credo.Check.Warning.UnusedRegexOperation, []}, |
| {Credo.Check.Warning.UnusedStringOperation, []}, |
| {Credo.Check.Warning.UnusedTupleOperation, []}, |
| |
| # |
| # Controversial and experimental checks (opt-in, just remove `, false`) |
| # |
| {Credo.Check.Consistency.MultiAliasImportRequireUse, false}, |
| {Credo.Check.Design.DuplicatedCode, false}, |
| {Credo.Check.Readability.Specs, false}, |
| {Credo.Check.Refactor.ABCSize, false}, |
| {Credo.Check.Refactor.AppendSingleItem, false}, |
| {Credo.Check.Refactor.DoubleBooleanNegation, false}, |
| {Credo.Check.Refactor.VariableRebinding, false}, |
| {Credo.Check.Warning.MapGetUnsafePass, false}, |
| {Credo.Check.Warning.UnsafeToAtom, false} |
| |
| # |
| # Custom checks can be created using `mix credo.gen.check`. |
| # |
| ] |
| } |
| ] |
| } |