上周参加了来自百度同行的代码扫描平台的分享.
总结如下:
百度的代码扫描平台主要方式是对源代码的静态扫码, 做的比较突出的是 java 和 C++.
对于我们这种绝大部分技术栈是 php 的现状还不太适用.
通过对分享者的提问,了解到他们对其他语言 php, golang, js,py 等扫码基本上都是对开源或者商业方案的组合. 例如 sonar
本周在社区内碰巧看到几篇代码扫码的文章. 所以促进我思考了下如果咱们想用,能怎么用.
调研结果:
靠近工程的维度:
- 遵循前端规范模板
- 提交前需要 lint ( npm run lint)
- 根据插件统计,降低重复度 (<3%)
- 圈复杂度 - IDE 插件(codeMetric) - 单个函数需要不能为红色. (复杂度超过 10)
- 重复率以 IDE 插件(JSCPD)为准, sonar 统计的不是很准
- Sonar 扫描指标参考
- Bug - 需要为 A - must-fix
- Vulnerability - 需要为 A must-fix
- Code Smells - 可选-酌情清理 might-fix
- 可维护性 - A - must-fix
- 注释覆盖率(不能作为绝对依据, 命名的好很多时候不需要注释)
靠近业务的维度:
- 单元测试覆盖率
- QA 自动化部分
目前只做到 jenkins 里的 freestyle 的任务可以和 sonar 整合, pipeline 类型的还没找到好办法.
相关截图: