开发人员的七宗罪
-
糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,
且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试 -
重复\\显然程序中包含大量复制粘贴的代码是质量低下的,
sonar可以展示源码中重复严重的地方 -
缺乏单元测试
sonar可以很方便地统计并展示单元测试覆盖率 -
没有代码标准
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 -
没有足够的或者过多的注释
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降
而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷 -
潜在的bug
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug -
糟糕的设计(原文Spaghetti Design,意大利面式设计)
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系
可以检测自定义的架构规则
通过sonar可以管理第三方的jar包
可以利用LCOM4检测单个任务规则的应用情况
检测耦合
随着工作代码质量要求越来越高,团队人员逐步扩大,GIT库每天上传的代码量也越来越多,
这个时候问题来,代码规范,代码质量成了一个比较难维护管理,初步尝试过很多基于ide的工具,
例如checkstyle,findbug等工具,但是无法形成统一的平台报表,也不方便对研发bug、开发质量
的问题的统计,通过查阅相关资料,以及看到itchina的推荐sonar代码质量管理平台。
sonar,管理java源代码的质量,可以集成不同的测试工具,代码分析工具,例如checkstyle,findbug,jenkins,maven等流行构建工具,对分析的结果进行加工处理,分析代码需要优化完善地方,以及相关可以预计的bug,便于开发统一模式,加强开发上的细节问题。
sonar5.1 的具体的安装教程详细请查看附件《sonar使用手册.docx》,在这里我主要描述的下sonar的客户端和服务端的大概的安装流程,使用思路,做任何事情,先确定前期的思路路线总是很重要,避免踩更多的坑。
sonar服务安装的流程:
配置jdk---->sonar安装---->数据库安装---->配置sonar的数据库连接信息---->运行sonar平台----->web查看分析报表。
客户端sonar的分析流程:配置jdk---->sonar-runner安装---->配置环境变量---->配置数据库访问信息----->配置需要进行分析的项目信息---->运行命令sonar-runner;
那些年,我们一起踩过的坑?
1.sonar5以上需要安装sonar-runner客户端,之前都是可以继承maven的sonar插件的,通过 mvn sonar:sonar 可以直接生成报表,导致我在这块浪费很多时间去继承maven项目,直到发现附件的sonar教程(百度文库某哥们整理的,充分感谢)sonar-runner客户端可以直接生成代码审查报表,方便省事,比maven插件好用多,避免代码审查侵入项目。
2.sonar常用参数整理,避免理解太过于复杂,其实sonar的考核参数还是比较容易理解的,常用主要如下:
常用参数:
复杂度:简单归结于方法中包含“if、for、while、case、||、&&、?”等块的数目时,复杂度会加1,如果复 杂超过10,sonar认为是一个严重的问题。
重复快:重读的代码块数;
代码块:含有if, else, while, do, for, switch, break, continue, return, throw, synchronized, catch, finally等关键字的语句;
违规级别:次要、主要、严重、阻塞;
3.sonar客户端的配置信息,必须要和服务端保持一致;
注意:附件《自动化审查工具指南.ppt》主要介绍了checkstyle,findbug,sonar工具的使用,以及相关截图;
附件《Sonar参数分析.docx》对sonar参数指标的相关的解释。
相关推荐
《Sonar Code Quality Testing Essentials》不仅适合初学者入门学习Sonar的基本操作,也适合有一定经验的开发者深入了解Sonar的高级功能。通过本书的学习,开发者能够掌握如何有效地使用Sonar来提高代码质量,进而...
SonarQube提供了详细的文档和教程,包括安装指南、使用手册和FAQ等。开发者和项目经理可以通过官网http://www.sonarqube.org/下载相关资源和文档,以快速入门SonarQube。 SonarQube的主要特点包括: * 多语言支持...
超声波接近开关是一种常用的传感器,它通过..."Sonar Bero Getting Started.pdf"这份文档应该会详细讲解超声波接近开关的入门知识,包括基本操作、设置指南和常见问题解答,对于初学者来说是一份非常有价值的参考资料。
sonar-project.properties文件是SonarQube项目属性配置文件,SonarQube是一个自动代码审查工具,用于持续检查代码质量和代码中的bug。这个文件定义了如何扫描GoFrame项目,包括配置项目特有的参数和规则。 .set_...
手册审核指南 CSS 使用BEM命名约定 JS 前缀DOM元素类名称或带有“ js-”的ID,以指示元素已链接到Javascript JS 对承诺使用Async / Await JS 保持代码分支到一个级别并减少嵌套的if / else语句 JS
SonarQube和SonarLint等工具就是静态代码分析的代表,而SonarWeb可能是这类工具的一个Web实现。 代码质量管理则关注于确保代码的可读性、可维护性和可靠性。这包括遵循编码标准,保持一致的命名约定,减少冗余代码...