Packages

Custom Credo checks for common Elixir/Phoenix anti-patterns and CWE Top 25 security vulnerabilities. Provides 40 comprehensive checks covering code quality, error handling, performance, change risk, telemetry, and security (SQL injection, XSS, path traversal, CSRF, SSRF, hardcoded credentials, etc).

Current section

Files

Jump to
oeditus_credo lib oeditus_credo cli.ex
Raw

lib/oeditus_credo/cli.ex

defmodule OeditusCredo.CLI do
@moduledoc """
CLI utilities for OeditusCredo, including configuration generation.
"""
@doc """
Returns the default Credo configuration with all OeditusCredo checks enabled.
"""
def default_config do
"""
# OeditusCredo Default Configuration
# Generated automatically - modifications will be overwritten
%{
configs: [
%{
name: "default",
color: true,
files: %{
included: [
"lib/",
"src/",
"test/",
"web/",
"apps/*/lib/",
"apps/*/src/",
"apps/*/test/",
"apps/*/web/"
],
excluded: [
~r"/_build/",
~r"/deps/",
~r"/node_modules/"
]
},
requires: [],
strict: false,
parse_timeout: 5000,
checks: %{
enabled: [
## Error Handling Anti-patterns
{OeditusCredo.Check.Warning.MissingErrorHandling, []},
{OeditusCredo.Check.Warning.SilentErrorCase, []},
{OeditusCredo.Check.Warning.SwallowingException, []},
## Database & Performance Issues
{OeditusCredo.Check.Warning.InefficientFilter, []},
{OeditusCredo.Check.Warning.NPlusOneQuery, []},
{OeditusCredo.Check.Warning.MissingPreload, []},
## LiveView & Concurrency Issues
{OeditusCredo.Check.Warning.UnmanagedTask, []},
{OeditusCredo.Check.Warning.SyncOverAsync, []},
{OeditusCredo.Check.Warning.MissingHandleAsync, []},
{OeditusCredo.Check.Warning.MissingThrottle, []},
{OeditusCredo.Check.Warning.InlineJavascript, []},
## Code Quality & Maintainability
{OeditusCredo.Check.Warning.HardcodedValue, []},
{OeditusCredo.Check.Warning.DirectStructUpdate, []},
{OeditusCredo.Check.Warning.CallbackHell, [max_nesting: 2]},
{OeditusCredo.Check.Warning.BlockingInPlug, []},
## Telemetry & Observability
{OeditusCredo.Check.Warning.MissingTelemetryInObanWorker, []},
{OeditusCredo.Check.Warning.MissingTelemetryInLiveViewMount, []},
{OeditusCredo.Check.Warning.TelemetryInRecursiveFunction, []},
{OeditusCredo.Check.Warning.MissingTelemetryInAuthPlug, []},
{OeditusCredo.Check.Warning.MissingTelemetryForExternalHttp, []}
],
disabled: []
}
}
]
}
"""
end
@doc """
Writes the default configuration to a file.
"""
def write_config(path \\ ".credo.exs") do
File.write!(path, default_config())
path
end
end