🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测 1. 糟糕的复杂度分布   文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试 ![](https://box.kancloud.cn/864b5e8e78ff9c2afba24c434da24147_545x140.png) 2. 重复   显然程序中包含大量复制粘贴的代码是质量低下的 , sonar可以展示源码中重复严重的地方 ![](https://box.kancloud.cn/4e27c46fbd22535283cb7597ad7a014f_622x145.png) 3. 缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率 ![](https://box.kancloud.cn/ffde733bc0ffee5f72a52f588006f3dd_534x193.png) 4. 没有代码标准   sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 5. 没有足够的或者过多的注释   没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷 6. 潜在的bug sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug ![](https://box.kancloud.cn/ef6948b7d31b074844def09cb05c4406_596x148.png) 7. 糟糕的设计(原文Spaghetti Design,意大利面式设计)   通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则;   通过sonar可以管理第三方的jar包可以利用LCOM4检测单个任务规则的应用情况 ,检测耦合 ### Sonar 组成 ![](https://box.kancloud.cn/7d392712a89d8ceb72b4badd2e32b38b_1125x297.png) ### Sonar 集成过程 ![](https://box.kancloud.cn/c04795aecca5287aa4b740cfdf2736e6_1102x639.png) 1. 开发人员在他们的ide中使用SonarLint运行分析本地代码。 2. 开发人员将他们的代码提交到代码管理平台中(SVN,GIT等) 3. 持续集成工具自动触发构建,调用SonarScanner对项目代码进行扫描分析 4. 分析报告发送到SonarQube Server中进行加工 5. SonarQube Server 加工并且保存分析报告到SonarQube Database中,通过UI显示分析报告 6.