Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Standalone Escript - Build standalone executable with
mix escript.build - Hex Archive Support - Install globally with
mix archive.install - Mix Task -
mix oeditus_credocommand with all checks pre-enabled - CLI Module - Automatic configuration generation
- STANDALONE.md guide with detailed installation and usage instructions
- CI/CD integration examples for GitHub Actions and GitLab CI
Changed
- Updated README with standalone installation options
- Added escript configuration to mix.exs
0.1.0 - 2026-01-18
Added
Error Handling Checks (3)
MissingErrorHandling- Detects{:ok, x} =pattern without error handlingSilentErrorCase- Detects case statements missing error branchesSwallowingException- Detects try/rescue blocks without logging or re-raising
Database & Performance Checks (3)
InefficientFilter- DetectsRepo.allfollowed by Enum filteringNPlusOneQuery- Detects potential N+1 queries (Enum.map with Repo calls)MissingPreload- Detects Ecto queries without proper preloading
LiveView & Concurrency Checks (5)
UnmanagedTask- Detects unsupervisedTask.asynccallsSyncOverAsync- Detects blocking operations in LiveView/GenServer callbacksMissingHandleAsync- Detects blocking in handle_event without async patternMissingThrottle- Detects form inputs without phx-debounce/throttleInlineJavascript- Detects inline JS handlers instead of phx-* bindings
Code Quality Checks (4)
DirectStructUpdate- Detects direct struct updates instead of changesetsCallbackHell- Detects deeply nested case statements (suggestswith)BlockingInPlug- Detects blocking operations in Plug functions
Telemetry & Observability Checks (5)
MissingTelemetryInObanWorker- Detects Oban workers without telemetry instrumentationMissingTelemetryInLiveViewMount- Detects LiveView mount/3 without telemetry eventsTelemetryInRecursiveFunction- Detects telemetry inside recursive functions (anti-pattern)MissingTelemetryInAuthPlug- Detects auth/authz plugs without telemetryMissingTelemetryForExternalHttp- Detects HTTP client calls without telemetry wrapper
Documentation
- Comprehensive README with installation and usage instructions
- Detailed documentation for all 20 checks
- Configuration examples and best practices
Testing
- 60+ comprehensive tests covering all checks
- Positive and negative test cases for each check
- Test coverage reporting with ExCoveralls
Licensing
- Dual-licensed under GPLv3 and CC-BY-SA-4.0
- Open-source use under GPLv3
- Commercial license available for proprietary applications