rrrene* About

Credo and Dogma: A Comparison of Elixir Code Linters

Last week I released Credo, a new static code analysis tool that acts as a code linter, but also focusses on teaching coding practices and code consistency.

The one other code linter for Elixir (that I am aware of) is Dogma. Shortly after Credo’s release Louis, Dogma’s maintainer, asked me to explain the differences between the two projects.

This is a double-edged sword for me, because I am one of Dogma’s main contributors as well, so I am quite fond of it. On the other hand I spent every free moment in the last two months creating Credo. So it won’t come as a surprise that I think Credo is the “better” tool in a couple of ways.

So here is my - slightly biased - comparison:

So, that’s basically it. If you like the ideas presented here, check out Credo on GitHub. Feedback is always welcome!


For a more conventional comparison, here’s a table that represents the state of affairs as of this writing:

Credo Dogma
Supported Elixir versions 1.1.x 1.0.x, 1.1.x
Customizable check configuration via parameters ✔ ✔
Help for check parameters in CLI ✔ -
Different formatters - ✔
Semantic categories ✔ -
Dynamic priorities ✔ -
Issue severity ✔ -
Common style checks for code readability ✔ ✔
Giving filename/line/column/call where checks fail ✔ / ✔ / ✔ / ✔ ✔ / ✔ / - / -
Software design suggestions ✔ -
Project-wide consistency analysis ✔ -
Warnings for potentially harmful code ✔ -
Explanations for violations ✔ -