如何设置 golangci-lint 报告中的 severity

less than 1 minute read

记录工作中遇到的一个小问题。

问题来源:将运行 golangci-lint 产生的 checkstyle 报告上传到 SonarQube 后(通过 sonar-scanner 指定报告路径),所有的 issue 都会被归类为 BUG,严重等级都是 MAJOR。希望能够按照业务需要调整 issue 的类别和等级。

网上也有人有类似的问题,根据解答,SonarQube 判断的逻辑是: (1)如果 checkstyle 报告中的 severity 是 error,则 issue 类别是 BUG,否则是 CODE SMELL; (2)如果 severity 是 info,则 issue 严重级别是 MINOR,否则是 MAJOR。

这处逻辑可见相应的代码

golangci-lint 默认生成的报告中的 severity 都是 error,所以对应于 SQ 上都是 MAJOR 级别的 BUG。

因此问题转化为如何调整 golangci-lint checkstyle 报告中 的 severity 级别?

浏览官方文档,发现是提供了相应配置的,可以配置默认的 severity,也可以细化到每个 linter 的 severity。对应的 github issuePR。注意,这个 PR 在 v1.28.0 才合入,所以这些配置只对于 v1.28.0 及以上版本才生效。

还存在一个问题没弄明白: 将 severity.default-severity 设置为 info,产生的 checkstyle 报告中的 severity 还是 error。只有将用到的 linter 的 severity 都设置为 info 后才生效了。

Comments