首先 Sonar 为代码质量平台,做多维度统计及结果数据展示用,本身不具备代码扫描功能,可由 QA 或 Tester 直接运维及使用管理。题外话,除去可插入代码静态扫描结果展现外,还可以插入测试运行时动态覆盖率扫描(例如:Jacoco)结果
其次 Checkstyle 侧重对文法分析,即对编码风格、约定的语法扫描,不做代码缺陷模式(对Bad Practise的推断或预判式)的扫描(例如:发现空指针),可作为公司第一道强约束关卡,亦可供研发人员在提交代码库之前先行自查。
PMD 和 Findbug 侧重代码缺陷的扫描,公司可视项目情况予以裁剪和取舍。
前者多基于编码及设计实践(例如:变量未被使用,重复代码块,循环体内创建对象等),自定义能力强。公司可通过裁剪和不断丰富以形成本公司编码设计的 Best practise;后者基于对字节流的扫描分析(例如:I/O 打开后未关闭),有更强的编码缺陷发现能力。
以上可结合IDE工具(工程师本地检查),Jenkins 平台(项目集成扫描)或独立Sonar平台联合使用
附一篇较早的原理、概念及比对文章:https://www.ibm.com/developerworks/cn/java/j-lo-statictest-tools/
其他关联性文章:
自动化体系平台建设 —— 全流程质量保证及改进措施 https://blog.csdn.net/ahhriver/article/details/90711629