Changelog
View SourceUnreleased
0.5.0 (2026-10-28)
- Added the complete review-derived check collection: 74 checks for readability, module organization, tests, Phoenix, configuration, migrations and optional Ash policies. See
docs/checks.mdfor behavior and parameters. - Added
mix optimum.heex_checkto scan standalone HEEx templates and the opt-inCallerModuleAttributescheck for macro and DSL libraries. - Fixed false positives in types and specs, quoted and DSL code, Phoenix callbacks, schema migration replay, dependency requirements, Ecto lock clauses, test naming and paths. Added context-owned association recognition and documented describe-level error-path exemptions.
- Kept source-derived identities as strings instead of allocating atoms; inspected installed BEAM metadata without loading modules and supported long paths on older OTP versions.
- Fixed Credo JSON diagnostics and Elixir 1.20 compatibility. Require Credo 1.7.19 or newer within 1.x.
- BREAKING: Moved
EmptySetupBlock,RuntimeEnvDevDefaultandSkippedTestfrom OptimumCredo to KogenCredo. The previously unreleasedJustifiedCoverageIgnorealso belongs to KogenCredo. Add KogenCredo and update enabled module names as described indocs/migration.md; old names no longer run.
0.4.0 (2026-04-29)
- Added
SkippedTestwarning check to detect@tag :skip,@tag skip: true, and@moduletag :skipannotations that hide failing tests. Supports anallow_with_commentparam to exempt tags annotated with an inline explanation. - Added
EmptySetupBlockreadability check to detectsetup do :ok end,setup do end, andsetup do {:ok, %{}} endblocks in test files that provide no value and should be removed. - Added
RuntimeEnvDevDefaultwarning check to detectSystem.get_env/2calls inconfig/runtime.exsthat use a developer-machine path (/Users/,/home/,~/) as the default value. - Added
CaseTrueFalserefactor check to detectcaseexpressions with exactly two clauses matching literaltrueandfalse, suggesting replacement with anifexpression.
0.3.0 (2026-03-31)
- Added
LiveViewBareMatchcheck to catch bare{:ok, _} =and{:error, _} =pattern matches in LiveView modules, preventing silent process crashes on failed Ecto operations.
0.2.0 (2026-03-13)
- Added 6 new readability checks:
DocumentationFormatting,ExtractableSpecTypes,ModuleOrganization,PrivateFunctionSpecs,UnusedTypes, andVerboseAssertions. - Fixed Elixir 1.19 compatibility by upgrading Credo to 1.7.17.
0.1.0 (2025-05-13)
Initial release