用途:校验、lint、审计或检查 Makefile 与 .mk 文件中的错误,适合在提交 CI 前审查构建文件质量、安全性与可维护性。
主要能力:默认入口为 bash scripts/validate_makefile.sh <makefile-path>。验证分层包括依赖预检(python3、pip3、make)、GNU make 语法检查(make -n --dry-run,需 make 可用)、mbake validate、mbake format --check、自定义安全/最佳实践/优化检查,以及安装后可选执行的 checkmake 与 unmake 检查。
使用方式:建议在技能目录内运行以缩短命令,如 cd devops-skills-plugin/skills/makefile-validator 后执行 bash scripts/validate_makefile.sh <makefile-path>;也可从仓库根目录运行完整路径。流程为预检、基线验证、解读输出与退出码、按需加载参考文档、修复后重跑。退出码含义:0 表示无阻断问题(Validation PASSED);1 表示仅有警告(Validation PASSED with warnings);2 表示存在错误(Validation FAILED - errors must be fixed)。修复后应重跑并报告最新退出码。
参考文档按发现类型加载:docs/best-practices.md(.PHONY、.DELETE_ON_ERROR、.ONESHELL、变量使用、性能结构)、docs/common-mistakes.md(制表符与空格、依赖错误、凭据模式、反模式)、docs/bake-tool.md(mbake 行为、格式化参数与已知注意事项)。
适用场景:请求涉及 Makefile 质量、lint、验证、加固或排障时触发,例如“Validate this Makefile”“Lint my .mk file”“Check Makefile security problems”“Review this Makefile before CI”。不适用于从零创建 Makefile(应使用 makefile-generator)、作为交付流程运行构建目标,或与 Makefile 无关的一般 shell 脚本工作。
限制与回退:python3 或 pip3 不可用时仅运行有限检查并说明 mbake 阶段被跳过、覆盖降低;pip3 install mbake 失败时保留可用的语法与自定义检查并报告安装失败;make 不可用时跳过语法阶段;checkmake 或 unmake 不可用时跳过可选检查;目标文件只读时仅提供补丁建议;命令执行不可用时提供静态分析并标注未执行。排障可用 command -v python3 pip3 make、make -f <makefile-path> -n --dry-run 及 grep 检查制表符缩进等。