Skip to content

Credo checks to prevent new usage of deprecated modules, functions, macros, structs, and sigils while allowing existing usage via an allow_list

Notifications You must be signed in to change notification settings

nwjlyons/credo_deprecate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Credo checks to prevent new usage of deprecated modules, functions, macros, structs, and sigils while allowing existing usage via an allow_list.

Usage

1. Add to your dependencies

def deps do
  [
    {:credo_deprecate, "~> 0.1.0", only: [:dev, :test], runtime: false}
  ]
end

2. Configure the check in .credo.exs

%{
  configs: [
    %{
      name: "default",
      checks: [
        {CredoDeprecate.Checks.DeprecateModule, [
          module: MyApp.Foo,
          allow_list: [MyApp.Bar, MyApp.Baz],
          message: "use Abc.bar/2 instead"
        ]},
        {CredoDeprecate.Checks.DeprecateFunctionOrMacro, [
          mfa: {MyApp.Foo, :deprecated_function, 0},
          allow_list: [MyApp.Bar],
          message: "use Abc.bar/2 instead"
        ]},
        {CredoDeprecate.Checks.DeprecateStruct, [
          struct: MyApp.DeprecatedStruct,
          allow_list: [MyApp.LegacyModule],
          message: "use MyApp.NewStruct instead"
        ]},
        {CredoDeprecate.Checks.DeprecateSigil, [
          sigil: :sigil_F,
          allow_list: [],
          message: "Use ~H instead"
        ]}
      ]
    }
  ]
}

3. Run Credo

mix credo

4. Error

  Warnings - please take a look                                                                                                                                                                                                                      
┃ 
┃ [W] ↗ MyApp.Foo.deprecated_function/0 is deprecated. use Abc.bar/2 instead
┃       lib/my_app/qux.ex
┃ 
┃ [W] ↗ MyApp.DeprecatedStruct struct is deprecated. use MyApp.NewStruct instead
┃       lib/my_app/baz.ex
┃ 
┃ [W] ↗ ~F sigil is deprecated. Use ~H instead
┃       lib/my_app/qux.ex

Please report incorrect results: https://github.com/rrrene/credo/issues

About

Credo checks to prevent new usage of deprecated modules, functions, macros, structs, and sigils while allowing existing usage via an allow_list

Resources

Stars

Watchers

Forks

Languages