
Dialyzer Integration
- 1 installs
- 186 repo stars
- Updated July 19, 2026
- thebushidocollective/han
Integrate Dialyzer into local development and CI/CD pipelines for Erlang/Elixir, including PLT builds and incremental analysis.
About
Covers wiring Dialyzer into development workflows and CI/CD for Erlang/Elixir, including PLT setup and incremental runs. A developer uses it when automating Dialyzer in a pipeline.
- Local PLT build and analysis
- Incremental and CI/CD integration
Dialyzer Integration by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,172 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/thebushidocollective/han --skill dialyzer-integrationAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 186 |
| Last updated | July 19, 2026 |
| Repository | thebushidocollective/han ↗ |
What it does
Integrate Dialyzer into local development and CI/CD pipelines for Erlang/Elixir, including PLT builds and incremental analysis.
Files
Dialyzer Integration
Integrating Dialyzer into development workflow and CI/CD pipelines.
Local Development
Initial Setup
# Install dialyxir
mix deps.get
# Build initial PLT (takes time first run)
mix dialyzer --plt
# Run analysis
mix dialyzerIncremental Analysis
# Only analyze changed files
mix dialyzer --incremental
# Force rebuild PLT
mix dialyzer --cleanCI/CD Integration
GitHub Actions
name: Dialyzer
user-invocable: false
on: [push, pull_request]
jobs:
dialyzer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Elixir
uses: erlef/setup-beam@v1
with:
elixir-version: '1.15'
otp-version: '26'
- name: Restore dependencies cache
uses: actions/cache@v3
with:
path: deps
key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
- name: Restore PLT cache
uses: actions/cache@v3
id: plt-cache
with:
path: priv/plts
key: ${{ runner.os }}-plt-${{ hashFiles('**/mix.lock') }}
- name: Install dependencies
run: mix deps.get
- name: Create PLTs
if: steps.plt-cache.outputs.cache-hit != 'true'
run: mix dialyzer --plt
- name: Run Dialyzer
run: mix dialyzer --format githubGitLab CI
dialyzer:
stage: test
script:
- mix local.hex --force
- mix local.rebar --force
- mix deps.get
- mix dialyzer
cache:
paths:
- _build/
- deps/
- priv/plts/IDE Integration
VS Code (ElixirLS)
{
"elixirLS.dialyzerEnabled": true,
"elixirLS.dialyzerFormat": "dialyxir_long",
"elixirLS.dialyzerWarnOpts": [
"error_handling",
"underspecs",
"unmatched_returns"
]
}Vim/Neovim (coc-elixir)
{
"elixir.dialyzer.enabled": true
}Pre-commit Hooks
Using Husky/Lefthook
# lefthook.yml
pre-commit:
commands:
dialyzer:
glob: "*.ex"
run: mix dialyzer --incrementalGit Hook Script
#!/bin/sh
# .git/hooks/pre-commit
echo "Running Dialyzer..."
mix dialyzer --incremental --quiet
if [ $? -ne 0 ]; then
echo "Dialyzer found issues. Commit aborted."
exit 1
fiTeam Workflow
Shared PLT Strategy
# mix.exs
def project do
[
dialyzer: [
plt_core_path: "priv/plts",
plt_local_path: "priv/plts",
plt_add_apps: [:mix, :ex_unit],
# Shared across team via git
plt_file: {:no_warn, "priv/plts/project.plt"}
]
]
endBaseline Approach
# Generate baseline
mix dialyzer > dialyzer_baseline.txt
# Check for new warnings
mix dialyzer | diff - dialyzer_baseline.txtPerformance Optimization
Parallel Analysis
def project do
[
dialyzer: [
flags: [:error_handling],
# Use multiple cores
plt_add_deps: :app_tree
]
]
endSelective Analysis
# Only check specific paths
mix dialyzer lib/critical/ test/important_test.exsIncremental Mode
# Much faster after initial run
mix dialyzer --incrementalMonitoring and Reporting
Custom Formatter
# lib/custom_dialyzer_formatter.ex
defmodule CustomDialyzerFormatter do
def format(warnings) do
warnings
|> Enum.map(&format_warning/1)
|> Enum.join("\n")
end
defp format_warning(warning) do
# Custom formatting logic
end
endMetrics Collection
# Count warnings over time
mix dialyzer | grep -c "warning:" >> dialyzer_metrics.logTroubleshooting
PLT Issues
# Remove and rebuild
rm -rf _build/dev/*.plt priv/plts/*.plt
mix dialyzer --pltMemory Issues
# Increase VM memory
elixir --erl "+hms 4096" -S mix dialyzerSlow Analysis
# Use incremental mode
mix dialyzer --incremental
# Or analyze subset
mix dialyzer lib/core/