一、sonarqube简介
SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。此外,SonarQube 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
二、安装启动
2.1.版本选择
注意:
1、SonarQube-7.9.1需要 java11 才能启动。
2、SonarQube7.9 及以后的版本不再支持 MySQL,SonarQube7.9 之前的版本要求 MYSQL5.6-8.0(左闭右开区间),否则会出现 java.io.IOException: 远程主机强迫关闭了一个现有的连接。
因为当前jdk8版本使用比较广泛,所以笔者这边推荐下载7.6版本,下面安装也只围绕7.6版本展开
2.2.sonarqube下载地址
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip
注意:
这个链接也可以下载7.3版本的sonarqube,下载的方式就是把sonarqube-7.6.zip改为sonarqube-7.3.zip就可以下载,各位读者按需下载就行
2.3.解压安装配置
文件下载后,把压缩包解压到不包含中文路径下,笔者这边是解压到D盘的D:\appliction\dev,开发软件文件目录下,解压完后进入D:\appliction\dev\sonarqube-7.6\conf配置文件目录,如下:
打开sonar.properties文件,增加如下字段:
#数据库账号和密码
sonar.jdbc.username=root
sonar.jdbc.password=123456
#sonar对应的数据库地址
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#mysql驱动
sonar.jdbc.driverClassName=org.gjt.mm.mysql.Driver
#sonar访问端口
sonar.web.port=10000
打开wrapper.conf文件,添加如下字段:
#C:\Program Files\Java\jdk1.8.0_162\bin\是jdk本地的地址 wrapper.java.command=C:\Program Files\Java\jdk1.8.0_162\bin\Java
2.4.添加sonar数据库
在本地数据库新增一个sonar数据库用来存放sonar相关的数据,如下:
注意:这个数据库名要与上面property所填的数据库地址配置信息对齐
2.5.启动
完成上述配置后,此时以管理员方式打开cmd,进入D:\appliction\dev\sonarqube-7.6\bin\windows-x86-64目录(系统文件夹以sonar所处的系统环境为准,笔者这边主要使用sonar对本地代码进行扫描,所以选择当前window的环境),运行startsonar.bat文件,如下:
出现如下标志,就表示启动成功:
如果出现阻止远程连接的字样,请读者检查下数据库的版本,和上述的配置信息是否完成修改以及数据库是否成功创建。确认无误,重新运行startsonar.bat文件,运行成功后,打开http://localhost:10000 ,登陆账号,账号密码默认都是admin。
三、代码扫描
登陆后新建一个项目,如下:
输入项目名后,会生成一个tocken,复制该tocken并保存下来,如下:
选择maven,生成扫描指令,如下:
复制指令,进到代码的根pom.xml文件目录下,打开cmd粘贴指令(注意粘贴的格式,去除换行符)执行,如下:
扫描成功后,回到主页就可以看到扫描后的数据了,如下:
四、生成report pdf
1.下载插件
gitee.com/zzulj/sonar... Sonar PDF Report Plugin
使用SonarQube版本 : 5.5--7.5。
- 2.0.X:适用SONARQUBE5.5--5.6.7版本
- 2.1.x:适用SONARQUBE6.0-6.2版本
- 3.0.x:适用SONARQUBE6.3+
因为笔者这边sonarqube的版本是7.6,所以这边拉 3.0.xfor7.0 的分支
git clone -b 3.0.xfor7.0 gitee.com/zzulj/sonar...
这里因为笔者不满足于当前插件生成的文件排版,以及该版本暂未支持英文版,所以笔者选择拷贝代码后进行相应修改后再生成jar包,如果没有额外需求,直接到对应地址下载jar包即可,具体如下:
下载好的jar包放在D:\appliction\dev\sonarqube-7.6\extensions\plugins,目录下:
放好后,重启startsonar.bat,重新扫描刚才的代码,进入主页,就会出现more的标签,如下:
点击生成对应文档\(^n^)/,大功告成。
五、pdf插件优化
1.支持英文文档输出
1.1.新增report-texts_en_GB.properties文件,内容如下:
property#
main.table.of.contents=Table of contents
general.reportOverview=Report Overview
general.violationsAnalysis=Issues Analysis
general.violationsDetails=Issues Details
general.qprofiles=Quality configuration
general.violationsDashboard=Issues Dashboard
# chapter 1 sections
general.staticAnalysis=Static Analysis\n
general.dynamicAnalysis=Dynamic Analysis
general.codingRulesViolations=Coding Rules Issues
# chapter 1 section 1 metrics
general.size=Project size
general.linesOfCode=Lines of code
general.comments=Comments
general.complexity=Complexity
general.lines=Number of rows
general.files=file
# chapter 1 section 2 metrics
general.codeCoverage=Code Coverage
general.testSuccess=Test Success
# chapter 1 section 3 metrics
general.technicalDebt=Technical Debt
general.ReliabilityRemediationEffort=Reliability Remediation Effort
general.SecurityRemediationEffort=Security Remediation Effort
general.violations=Issues
#general.newviolations=New Issues
general.bugs=bugs
general.vulnerabilities=Security
general.codesmells=Maintainability
general.blockerViolations=Blocker
general.criticalViolations=Critical
general.majorViolations=Major
general.minorViolations=minor
general.infoViolations=prompt
general.openViolations=Open the issue
general.reopenedViolations=Reopen the issue
general.confirmededViolations=Confirm the problem
general.falsePositiveViolations=Misjudgment issues
general.wontFixViolations=Issues that are not fixed
general.fixedViolations=Resolved issues
general.removedViolations=Removed issues
# chapter 2 metrics
general.mostViolatedRules=Most violated rules
general.noViolatedRules=No violated rules
general.mostViolatedFiles=Most violated files
general.noViolatedFiles=No violated files
general.mostComplexFiles=Most complex files
general.noComplexFiles=No complex files
general.mostDuplicatedFiles=Most duplicated files
general.noDuplicatedFiles=No duplications
# chapter 3 metrics
general.rule=Rule
general.file=File
general.line=Line
general.ruledesc=RuleDesc
general.packages=packages
general.classes=classes
general.methods=methods
general.duplicatedLines=duplicated lines
general.commentLines=comment lines
general.failures=failures
general.errors=errors
general.skips=The number of unit test ignorances
general.tests=tests
general.linecoverage=Code coverage(%)
general.branchcoverage=Branch coverage(%)
#general.coverage=coverage
general.perClass=/class
general.decisionPoints=decision points
# chapter 4 metrics
metrics.ccnClassesCountDistribution=Classes distribution/complexity
general.violationsType=type
general.violationsSeverity=Violation level
# Miscelaneous Text
main.text.misc.overview= This chapter presents an overview of the project measures. This dashboard shows the most important measures related to project quality, and it provides a good starting point for identifying problems in source code.
main.text.misc.overview1= The items reported are
main.text.misc.overview2=, Generation time
main.text.misc.overview3=, Use the quality configuration
main.text.misc.overview4=, Total
main.text.misc.overview5=rules.
2.2.修改PDFGenerator文件如下代码片段
文档就会输出英文文档了,当然生成的文档依旧存在排版问题,这个需要对相应代码进行修改,这里就不做赘述,有兴趣的小伙伴可以查看相关源码。
最后,祝各位coder永无BUG,完结撒花,^o^/!