-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.check.exs
More file actions
111 lines (94 loc) · 2.8 KB
/
.check.exs
File metadata and controls
111 lines (94 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
[
parallel: true,
skipped: false,
tools: [
# Dependencies
{:deps_get,
command: "mix deps.get",
order: 0},
# Elixir compilation
{:compiler,
command: "mix compile --warnings-as-errors",
order: 1,
deps: [:deps_get]},
# C-Node compilation (only if c_src exists)
{:c_compile,
command: "make -C c_src",
enabled: File.dir?("c_src"),
order: 2,
deps: [:compiler]},
# Formatting
{:formatter,
command: "mix format --check-formatted",
order: 3},
# C code format check (optional, only if clang-format installed)
{:c_format_check,
command: "make -C c_src format-check",
enabled: File.dir?("c_src") and System.find_executable("clang-format") != nil,
order: 3},
# Rust format check (only if native Rust code exists and cargo installed)
{:rust_fmt,
command: "cargo fmt --check",
cd: "native/ex_maude_nif",
enabled: File.dir?("native/ex_maude_nif") and System.find_executable("cargo") != nil,
order: 3},
# Static analysis
{:credo,
command: "mix credo --strict",
order: 4,
deps: [:compiler]},
{:sobelow,
command: "mix sobelow --config",
order: 4,
deps: [:compiler]},
# C code linting with clang-tidy (optional, only if installed)
{:c_lint,
command: "make -C c_src lint",
enabled: File.dir?("c_src") and System.find_executable("clang-tidy") != nil,
order: 4,
deps: [:c_compile]},
# Rust clippy linting (only if native Rust code exists and cargo installed)
{:rust_clippy,
command: "cargo clippy --lib -- -D warnings",
cd: "native/ex_maude_nif",
enabled: File.dir?("native/ex_maude_nif") and System.find_executable("cargo") != nil,
order: 4},
# Security and dependencies
{:mix_audit,
command: "mix deps.audit",
order: 5,
deps: [:deps_get]},
# Type checking (runs after compilation)
{:dialyzer,
command: "mix dialyzer",
order: 6,
deps: [:compiler]},
# Documentation
{:doctor,
command: "mix doctor",
order: 7,
deps: [:compiler]},
{:ex_doc,
command: "mix docs",
order: 7,
deps: [:compiler]},
# Tests - run all test suites
{:ex_unit,
command: "mix test --cover",
order: 8,
deps: [:compiler]},
# C-Node integration tests (only if binary exists)
{:test_cnode,
command: "mix test --include cnode_integration",
enabled: File.exists?("priv/maude_bridge"),
order: 9,
deps: [:c_compile, :ex_unit]},
# NIF integration tests (only if NIF is compiled)
{:test_nif,
command: "mix test --include nif_integration",
enabled: File.exists?("priv/native/libex_maude_nif.so") or
File.exists?("priv/native/libex_maude_nif.dylib"),
order: 9,
deps: [:compiler, :ex_unit]}
]
]