在IDEA上配置SonarLint以及代码质量分析报告模板在线安装SonarLint插件
1. File->Settings…进⼊设置界⾯踢踏舞视频
2. 点击左侧Plugins,然后在搜索框输⼊SonarLint,点击安装,之后重启IDEA
离线安装SonarLint插件
1.
2. File->Settings…->Plugins->点击设置按钮->在下拉框中点击Install Plugin from Disk…
3. 找到之前压缩包的安装⽬录,点击安装包安装,重启IDEA即可。
代码质量分析报告模板机动车标志
风吟博客开源代码的质量分析报告
该博客是基于SSM实现的个⼈博客系统,适合初学SSM和个⼈博客制作的同学学习。
最新版本⽀持⽤户注册,包含⽤户和管理员两个⾓⾊ 。该博客规模适中,通过初步阅读分析其代码质量较⾼,故对其进⾏进⼀步的质量分析和审查。
⼀、代码质量分析⽅法
代码质量分析主要由⼈⼯分析和利⽤⼯具分析两种⽅式,⼆者各有优缺点,在实际过程中需要结合使
⽤以保证正确性、发挥效能。
1、⼈⼯
通过⼈⼯发现代码中存在的缺陷和质量问题是分析软件质量最直接的⼿段。软件开发相关⼈员在软件实现、测试、维护过程中,主动发现编写代码中存在的问题并给予修改,但是分析代码的效率低,寻找缺陷不够全⾯,⽐如其中软件的深层次问题可能难以发现。
2、⾃动
利⽤SonarQube,FindBugs等⼯具进⾏代码质量分析,从程序的语法、结构、接⼝等⽅⾯进⾏代码审查,并能够对代码风格进⾏分析。其优点是代码分析效率⾼,且能够发现软件开发⼈员忽略的错误,在实际应⽤中要结合⼈⼯审查才能完全明确代码缺陷。
大学生成长计划
本报告主要使⽤SonarLint⼯具进⾏针对博客进⾏质量分析,辅以少量的⼈⼯分析。腊草鱼
⼆、Sonar及SonarQube简介
SonarQube软件是⼀种静态代码检查⼯具,采⽤B/S架构,帮助检查代码缺陷,改善代码质量,提⾼开发速度,通过插件形式,可以⽀持Java、C、C++、JavaScript等等⼆⼗⼏种编程语⾔的代码质量管理与检测。
Sonar客户端可以采⽤IDE插件、Sonar-Scanner插件、Ant插件和Maven插件⽅式,并通过各种不同的分析机制对项⽬源代码进⾏分析和扫描,并把分析扫描后的结果上传到Sonar的数据库,通过Sonar web界⾯对分析结果进⾏管理。
三、使⽤SonarLint进⾏分析
右键项⽬->点击SonarLint->点击Analyze with SonarLint
在风吟博客源代码中,共审查出86个⽂件中的436个问题,经过⼈⼯审查,其中⼤量的问题在于规范和代码的简洁性要求,重复的字符串⽂字使重构过程容易出错。总体来说,风吟博客的代码质量较为不错。
代码中的缺陷分为如下⼏个等级:
(1)Blocker:极有可能影响应⽤程序表现的错误;
阁楼图片(2)Critical:可能影响应⽤程序表现的错误和表⽰安全缺陷的问题;
(3)Major:严重影响开发者效率的质量缺陷;
(4)Minor:轻微影响开发者效率的质量缺陷;
(5)Info:不是错误或者质量缺陷。
现对代码存在的质量问题进⾏汇总统计,对严重程度为Blocker、Critical和Major的问题进⾏逐⼀的分析:
严重程度:Blocker
1.Tests should include asrtions测试应该包括断⾔
没有断⾔的测试⽤例只能确保不抛出异常。除了基本的可运⾏性之外,它对被测代码的⾏为没有任何保证。
2.TestCas should contain tests测试⽤例应该包含测试
没有任何测试⽅法的 JUnit 测试⽤例是没有意义的。同样,测试⽬录中不应有名为 *Test、*Tests 或 *TestCa 的⽂件,但⽂件中不应有测试。做这些事情中的任何⼀件都可能导致有⼈认为未覆盖的类已经过测试。
严重程度:Critical
1.String literals should not be duplicated字符串⽂字不应重复
重复的字符串⽂字使重构过程容易出错,因为您必须确保更新所有出现的内容。另⼀⽅⾯,常量可以从很多地⽅引⽤,但只需要在⼀个地⽅更新。
2.Methods should not be empty ⽅法不应为空
⼀个⽅法没有⽅法体有⼏个原因:
这是⼀个⽆意的遗漏,应该修复以防⽌⽣产中出现意外⾏为。带有木字旁的字
它尚未或永远不会得到⽀持。在这种情况下,应该抛出 UnsupportedOperationException。
该⽅法是⼀个有意的空⽩覆盖。在这种情况下,嵌套注释应该解释空⽩覆盖的原因
3.“static” ba class members should not be accesd via derived types不应通过派⽣类型访问“静态”基类成员
为了代码的清晰性,永远不应该使⽤派⽣类型的名称访问基类的静态成员。这样做会令⼈困惑,并且可能会产⽣存在两个不同静态成员的错觉
严重程度:Major
1.Raw types should not be ud不应使⽤原始类型
不应在变量声明或返回值中使⽤原始(没有类型参数)泛型类型。这样做会绕过泛型类型检查,并将不安全代码的捕获推迟到运⾏时。
2.Restricted Identifiers should not be ud as Identifiers限制标识符不应⽤作标识符
高考录取分数线即使技术上可⾏,也不应将受限标识符⽤作标识符。这只是出于兼容性原因才可能,在 Java 代码中使⽤它是令⼈困惑的,应该避免。
3.Deprecated elements should have both the annotation and the Javadoc tag不推荐使⽤的元素应该同时具有注释和 Javadoc 标记
弃⽤应同时使⽤@Deprecated 注释和@deprecated Javadoc 标记进⾏标记。注释使 IDE 等⼯具能够在引⽤已弃⽤的元素时发出警告,并且该标记可⽤于解释何时被弃⽤、为什么以及应如何重构引⽤。
4.Sections of code should not be commented out 代码不应被注释掉
程序员不应注释掉代码,因为它会使程序膨胀并降低可读性。
未使⽤的代码应该被删除,如果需要,可以从源代码控制历史中检索。
5. Empty arrays and collections should be returned instead of null应返回空数组和集合⽽不是 null
返回 null ⽽不是实际的数组、集合或映射会强制⽅法的调⽤者显式测试 null,从⽽使它们更复杂且可读性更低。男声四重唱
此外,在许多情况下,null 被⽤作空的同义词。