asaasdev/codenarcCodeNarc是一款针对Groovy语言的静态代码分析工具,可检测代码中的风格违规、潜在错误、未使用变量、复杂逻辑等问题,帮助团队提升代码质量。CodeNarc Docker镜像将CodeNarc及其运行依赖(如Groovy环境)封装为容器,用户无需在本地安装配置相关依赖,即可通过Docker快速启动代码分析任务,有效解决环境差异导致的分析结果不一致问题,简化代码质量检查流程。
codenarc.xml),灵活定义团队代码规范,满足个性化检查需求。拉取镜像
从Docker仓库拉取CodeNarc镜像(以下示例假设镜像名为codenarc:latest,实际使用时需替换为具体仓库地址):
bashdocker pull codenarc:latest
运行基础代码分析
分析本地Groovy代码目录,使用默认规则输出结果到控制台:
bashdocker run --rm -v "$(pwd)/src/main/groovy:/code" codenarc:latest --source /code
--rm:容器运行后自动删除,避免残留容器文件。-v "$(pwd)/src/main/groovy:/code":将本地Groovy代码目录(示例为当前目录下的src/main/groovy)挂载到容器内的/code路径(容器内固定分析目录)。--source /code:指定CodeNarc分析的源代码目录(需与容器内挂载路径一致)。若需使用团队自定义规则,将本地规则文件(如./config/codenarc.xml)挂载到容器,并通过--rulesetfiles参数指定:
bashdocker run --rm \ -v "$(pwd)/src/main/groovy:/code" \ -v "$(pwd)/config/codenarc.xml:/config/codenarc.xml" \ codenarc:latest \ --source /code \ --rulesetfiles file:/config/codenarc.xml
file:/config/codenarc.xml:容器内规则文件路径,需与挂载路径对应。指定输出HTML报告到本地目录(如./reports),便于直观查看分析结果:
bashdocker run --rm \ -v "$(pwd)/src/main/groovy:/code" \ -v "$(pwd)/reports:/reports" \ codenarc:latest \ --source /code \ --report html:/reports/codenarc-report.html
执行后,报告将生成在本地./reports/codenarc-report.html,可通过浏览器打开查看详细分析结果(含违规代码位置、规则说明等)。
通过--maxPriority1Violations等参数设置严重违规数量阈值,超过阈值时容器返回非0退出码,触发CI流程中断:
bashdocker run --rm \ -v "$(pwd)/src/main/groovy:/code" \ codenarc:latest \ --source /code \ --maxPriority1Violations 0 # 不允许优先级1(严重)违规 --maxPriority2Violations 5 # 允许最多5个优先级2(中等)违规
CodeNarc支持多种命令行参数,常用参数如下:
| 参数 | 说明 |
|---|---|
--source <path> | 必选,指定容器内待分析的源代码目录路径(需通过-v挂载本地目录)。 |
--rulesetfiles <paths> | 可选,指定规则配置文件路径(多个文件用逗号分隔),默认使用内置基础规则。 |
--report <format:path> | 可选,指定报告格式及路径,支持html/xml/text/console等格式。 |
--maxPriority1Violations <num> | 可选,优先级1(严重)违规的最大允许数量,超过返回非0退出码。 |
--maxPriority2Violations <num> | 可选,优先级2(中等)违规的最大允许数量,超过返回非0退出码。 |
--maxPriority3Violations <num> | 可选,优先级3(轻微)违规的最大允许数量,超过返回非0退出码。 |
规则配置文件(codenarc.xml)用于定义检查规则,示例结构如下:
xml<?xml version="1.0"?> <codenarc> <ruleset name="My Project Rules"> <!-- 禁止未使用变量 --> <rule class="org.codenarc.rule.unused.UnusedVariableRule" priority="2"/> <!-- 禁止空catch块 --> <rule class="org.codenarc.rule.exceptions.EmptyCatchBlockRule" priority="1"/> <!-- 方法最大行数限制(自定义参数) --> <rule class="org.codenarc.rule.size.MethodSizeRule" priority="3"> <property name="maxLines" value="50"/> <!-- 方法最大行数为50行 --> </rule> </ruleset> </codenarc>
更多规则及配置细节可参考CodeNarc官方文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务