Dialyzer配置技能Skill dialyzer-configuration

Dialyzer配置技能涉及设置和管理Dialyzer静态分析工具,用于Erlang和Elixir代码的类型检查和静态分析,以识别软件问题如类型错误、不可达代码等。关键词:Dialyzer, Erlang, Elixir, 类型检查, 静态分析, 配置, 测试, 软件开发, CI集成。

测试 0 次安装 0 次浏览 更新于 3/25/2026

name: Dialyzer配置 user-invocable: false description: 在配置Dialyzer以进行Erlang/Elixir类型检查和静态分析时使用。 allowed-tools: []

Dialyzer配置

Dialyzer是一个用于Erlang和Elixir的静态分析工具,用于识别软件差异,如类型错误、不可达代码和不必要的测试。

配置文件

dialyzer.ignore-warnings

# 忽略特定警告
lib/my_module.ex:42:pattern_match_cov

.dialyzer_ignore.exs

[
  {"lib/generated_code.ex", :no_return},
  {~r/lib\/legacy\/.*/, :unknown_function}
]

mix.exs配置

def project do
  [
    app: :my_app,
    dialyzer: [
      plt_add_apps: [:mix, :ex_unit],
      plt_core_path: "priv/plts",
      plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
      flags: [:error_handling, :underspecs, :unmatched_returns],
      ignore_warnings: ".dialyzer_ignore.exs",
      list_unused_filters: true
    ]
  ]
end

常见配置选项

PLT管理

  • plt_add_apps: 要包含在PLT中的其他应用程序
  • plt_core_path: 核心PLT文件的目录
  • plt_file: 自定义PLT文件位置
  • plt_add_deps: 包含依赖项 (:app_tree, :apps_direct, :transitive)

分析标志

  • :error_handling - 检查错误处理
  • :underspecs - 警告未充分指定的函数
  • :unmatched_returns - 警告不匹配的返回值
  • :unknown - 警告未知的函数/类型
  • :overspecs - 警告过度指定的函数

过滤选项

  • ignore_warnings: 包含要忽略的警告模式的文件
  • list_unused_filters: 显示未使用的忽略模式

最佳实践

  1. 增量PLT构建: 使用项目特定的PLT来加速分析
  2. 逐步采用: 从检查子集开始,随时间扩展
  3. CI集成: 在持续集成中运行Dialyzer
  4. 类型规范: 添加全面的@spec注解
  5. 警告管理: 记录有意的忽略

常见模式

条件分析

if Mix.env() in [:dev, :test] do
  {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}
end

自定义检查脚本

#!/bin/bash
mix dialyzer --format github

GitHub Actions集成

- name: 运行Dialyzer
  run: mix dialyzer --format github