Credo

What Credo is
Credo is a free static code analysis tool for Elixir projects, with a focus on consistency and explaining issues. Run `mix credo` to analyze the current project and identify places that may need changes. Its built-in checks cover consistency, design, readability, refactoring and warnings; strict analysis can also include low-priority checks. For a reported issue, Credo can identify the check responsible, show its configuration options and explain how to disable it. Results can be output in Flycheck, JSON or SARIF formats. Credo uses a `.credo.exs` file in the project root or `config/` folder, where users can configure plugins and custom checks implemented through the `Credo.Check` behavior. The documentation recommends adding it as a Mix dependency for development and test, with runtime disabled. Credo aims to support the Elixir minor releases listed in Elixir documentation and checks compatibility on CI. It can return a nonzero status when issues are reported, for use in shell-based pipelines. Listed integrations include IntelliJ, Atom, VS Code, Emacs, Kakoune, Neovim and Codacy.
Who it suits
Credo is suited to Elixir developers who want automated code checks, explanations for reported issues, or custom project rules. Its nonzero exit status also makes it relevant to teams using shell-based CI workflows.
What it does well
- Free and open source under the MIT license.
- Checks consistency, design, readability and more.
- Explains checks and their configuration options.
- Supports Flycheck, JSON and SARIF output.
- Nonzero exit status supports CI pipelines.
What to know first
- Focused on Elixir code analysis.
- Custom checks require implementing `Credo.Check`.
- Recommended dependency is limited to development and test.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Credo | Open source Elixir static analysis tool | Free |
As credo.hexdocs.pm lists them, read 9 Oct 2026. The maker's own page has the final word.
Verdict
Credo combines Elixir code checks with explanations intended to help users understand and configure findings. Its CLI output, custom checks and CI exit status support both local review and pipeline use.
Facts from Credo's own pages
- Analysis
- It suggests code changes and reports refactoring opportunities, complex code, common mistakes, naming inconsistencies, and style issues. · github.com, 9 Oct 2026
- Author
- The repository names René Föhring as the author. · github.com, 9 Oct 2026
- Checks
- Built-in checks cover consistency, design, readability, refactoring, and warnings, and low-priority checks can be included with strict analysis. · credo.hexdocs.pm, 9 Oct 2026
- CI usage
- Credo returns a nonzero exit status when it reports issues, supporting shell-based pipelines such as CI workflows. · credo.hexdocs.pm, 9 Oct 2026
- Compatibility
- Credo aims to stay compatible with the Elixir minor releases listed in the Elixir documentation, which it actively tests on CI. · credo.hexdocs.pm, 9 Oct 2026
- Configuration
- Credo uses a `.credo.exs` configuration file that can be placed in the project root or its `config/` folder. · credo.hexdocs.pm, 9 Oct 2026
- Custom checks
- Users can add project or domain specific checks by implementing the `Credo.Check` behavior and configuring the check. · credo.hexdocs.pm, 9 Oct 2026
- Installation
- The docs recommend adding Credo as a Mix dependency with `only: [:dev, :test]` and `runtime: false`. · credo.hexdocs.pm, 9 Oct 2026
- Integrations
- The maker lists integrations for IntelliJ, Atom, VS Code, Emacs, Kakoune, Neovim, and Codacy. · github.com, 9 Oct 2026
- Issue explanations
- Users can request an explanation for an issue that includes the check, its configuration options, and how to disable it. · credo.hexdocs.pm, 9 Oct 2026
- License
- Credo is released under the MIT License. · github.com, 9 Oct 2026
- Output
- Credo can output command results as JSON. · credo.hexdocs.pm, 9 Oct 2026
- Output formats
- The CLI supports Flycheck, JSON, and SARIF output formats. · credo.hexdocs.pm, 9 Oct 2026
- Plugins
- Plugins are modules enabled and configured through the `:plugins` field in `.credo.exs`. · credo.hexdocs.pm, 9 Oct 2026
- Publisher
- The Hex package lists `rrrene` as the package publisher and owner. · hex.pm, 9 Oct 2026
- Purpose
- Credo is a static code analysis tool for Elixir focused on code consistency and teaching. · credo.hexdocs.pm, 9 Oct 2026
- Teaching
- For an issue, Credo can show the check that raised it, its configuration options, and how to disable it. · credo.hexdocs.pm, 9 Oct 2026
Where Credo stands on Freedom251
- Linters#25 of 33
