add CI pipeline with credo and dialyzer

mix ci alias: compile --warning-as-errors, format --check-formatted,
credo, dialyzer, test. Credo configured with sensible defaults.
Dialyzer ignore file for false positives (Stripe types, Mix tasks,
ExUnit internals). Credo fixes: map_join, filter consolidation,
nesting extraction, cond→if simplification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
jamey
2026-02-08 15:19:42 +00:00
parent 518da36c8f
commit eaa4bbb3fa
16 changed files with 328 additions and 59 deletions

30
.dialyzer_ignore.exs Normal file
View File

@@ -0,0 +1,30 @@
[
# Mix.Task callbacks and functions not in dialyzer PLT (dev-only modules)
{"lib/mix/tasks/generate_mockups.ex", :callback_info_missing},
{"lib/mix/tasks/generate_mockups.ex", :unknown_function},
{"lib/mix/tasks/optimize_images.ex", :callback_info_missing},
{"lib/mix/tasks/optimize_images.ex", :unknown_function},
{"lib/mix/tasks/register_webhooks.ex", :callback_info_missing},
{"lib/mix/tasks/register_webhooks.ex", :unknown_function},
{"lib/mix/tasks/simpleshop/download_images.ex", :callback_info_missing},
{"lib/mix/tasks/simpleshop/download_images.ex", :unknown_function},
# Stripe library type specs cause false positives
{"lib/simpleshop_theme/stripe/setup.ex", :pattern_match_cov},
{"lib/simpleshop_theme/stripe/setup.ex", :pattern_match},
{"lib/simpleshop_theme/stripe/setup.ex", :no_return},
{"lib/simpleshop_theme/stripe/setup.ex", :call},
{"lib/simpleshop_theme_web/controllers/checkout_controller.ex", :call},
{"lib/simpleshop_theme_web/controllers/checkout_controller.ex", :pattern_match_cov},
{"lib/simpleshop_theme_web/controllers/checkout_controller.ex", :no_return},
# Environment-dependent: localhost?() is always true in dev
{"lib/simpleshop_theme_web/live/admin_live/settings.ex", :pattern_match},
# Provider behaviour type not derived by dialyzer
{"lib/simpleshop_theme/providers/provider.ex", :unknown_type},
# ExUnit internals not in PLT (test support files)
{"test/support/conn_case.ex", :unknown_function},
{"test/support/data_case.ex", :unknown_function}
]