Linter

  • Published on
    自从我们迁移到 k8s, 我们观察到 k8s 集群里的 gitlab CI runner 在跑 golangci-lint 的时候比本机跑慢很多. 本机一般几十秒就能搞定的事情, 在跑 CI 的时候, 基本上都要花上几分钟甚至几十分钟. (依项目代码量而异) 当然, 由于 CI 都是自动跑的, 大部分时间我们基本上不会花时间去刻意观察 CI 的执行. 因此慢一点其实也不会影响什么. 这个周末正好趁疫情居家哪也去不了, 研究了一下怎么想办法将速度优化. 起初我以为是因为普通云盘的 IO 性能低下导致的问题, 因为我们的节点的 CPU 和 内核配置都还算不错, 不至于跑个 CI 都会因为这个影响到速度. 但是经过研究, 我发现其实大部分时间花在重复地一次又一次地加载go mod 和 重复地进行代码静态分析. ...
  • Published on
    如果你不想看过程,那就直接跳到最后看一句话总结吧。 ## megacheck `megacheck` 其实是一个 `deprecated` linter, 不过只是被原作者deprecated, 目前 golangci-lint 并没有 deprecated 它。原因主要是向后兼容性 (see https://github.com/golangci/golangci-lint/issues/357 )。 这可能是最令人费解的一个linter了,为什么呢?我这里简单总结一下: megacheck 是 https://github.com/dominikh/go-tools 早期代码里的一个linter, 它包含了3个linter: gosimple staticcheck unused ...