Checks — How Checks Dispatch

[[checks]] is generic: the behavior is selected automatically by the command basename, so the same config surface covers every tool. Unknown commands run as a custom shell check.

Command Table

command basenameBehaviorFiles
clang-formatIn-place formatting; reports Formatted/Clean per file; exit 0 after applying fixesonce (batched), C/C++ only
clang-tidyStatic analysis; requires .clang-tidy or --config-file=once (batched)
gcc, g++, clang, clang++, cc, c++Syntax-only compile; -fsyntax-only forced unless args already set -c/-S/-Eper-file
cppcheckStatic analysis via cppcheck; batches all filesonce (batched)
gcc-analyzerGCC static analyzer (-fanalyzer)per-file
clang-static-analyzerClang static analyzerper-file
include-what-you-use, iwyuInclude-what-you-use analysisper-file
cmakeBuild command (e.g. cmake --build build); file list omittedonce
gite.g. git diff --check; runs against the whole working tree; file list omittedonce
metis-securityScans for hardcoded secrets (password=, api_key=, tokens, …); match fails the checkper-file
metis-dep-securityVulnerability scan of dependencies via osv-scanner (falls back to grype); needs either installedonce
anything elseCustom shell command; file list appendedper-file (batched for clang-format, clang-tidy, grep, egrep, rg, cppcheck)

Notes

Security Checks

Enable via metis init --enable-security-checks, which adds metis-security and metis-dep-security entries to .metis.toml.