CredoDeprecate (credo_deprecate v0.1.10)

View Source

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