Use when integrating Dialyzer into development workflows and CI/CD pipelines for Erlang/Elixir projects.
View on GitHubTheBushidoCollective/han
jutsu-dialyzer
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/jutsu/jutsu-dialyzer/skills/dialyzer-integration/SKILL.md -a claude-code --skill dialyzer-integrationInstallation paths:
.claude/skills/dialyzer-integration/# Dialyzer Integration
Integrating Dialyzer into development workflow and CI/CD pipelines.
## Local Development
### Initial Setup
```bash
# Install dialyxir
mix deps.get
# Build initial PLT (takes time first run)
mix dialyzer --plt
# Run analysis
mix dialyzer
```
### Incremental Analysis
```bash
# Only analyze changed files
mix dialyzer --incremental
# Force rebuild PLT
mix dialyzer --clean
```
## CI/CD Integration
### GitHub Actions
```yaml
name: Dialyzer
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 github
```
### GitLab CI
```yaml
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)
```json
{
"elixirLS.dialyzerEnabled": true,
"elixirLS.dialyzerFormat": "dialyxir_long",
"elixirLS.dialyzerWarnOpts": [
"error_handling",
"underspecs",
"unmatched_returns"
]
}
```
### Vim/Neovim (coc-elixir)
```json
{
"elixir.dialyzer.enabled": true
}
```
## Pre-commit Hooks
### Using Husky/Lefthook
```yaml
# lefthook.yml
pre-commit:
commands: