name: credo-checks user-invocable: false description: 用于理解和修复Elixir代码中常见Credo检查问题,以提升代码质量和一致性。 allowed-tools: []
Credo检查
理解并修复常见的Credo问题。
检查类别
一致性检查
确保项目中的代码风格一致。
设计检查
识别设计问题和反模式。
可读性检查
提高代码可读性和可维护性。
重构检查
突出重构机会。
警告检查
捕获潜在的错误和问题。
常见问题
模块文档
# 问题:缺少模块文档
defmodule MyModule do
end
# 修复
@moduledoc """
此模块处理用户认证。
"""
defmodule MyModule do
end
函数复杂度
# 问题:圈复杂度高
def complex_function(x) do
if x > 10 do
if x < 20 do
if rem(x, 2) == 0 do
:even_mid
else
:odd_mid
end
else
:high
end
else
:low
end
end
# 修复:提取到单独函数
def classify_number(x) do
case {x > 10, x < 20, rem(x, 2) == 0} do
{false, _, _} -> :low
{true, false, _} -> :high
{true, true, true} -> :even_mid
{true, true, false} -> :odd_mid
end
end
管道链
# 问题:单一管道
list |> Enum.map(&(&1 * 2))
# 修复
Enum.map(list, &(&1 * 2))
未使用变量
# 问题
def process({:ok, result}, _context) do
result
end
# 修复:前缀加下划线
def process({:ok, result}, _context) do
result
end