代码审计工具-sonarqube配置安装+PDF文档导出插件

一、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^/!

相关推荐
方圆想当图灵2 天前
由 Mybatis 源码畅谈软件设计(九):“能用就行” 其实远远不够
后端·代码规范
古拉拉明亮之神4 天前
scala的统计词频
scala·命令模式·代码规范·源代码管理
沉默是金~5 天前
Vue 前端代码规范
前端·vue.js·代码规范
CreditFE信用前端7 天前
如何更好的应对技术债?
程序员·架构·代码规范
litGrey9 天前
【规范七】Git管理规范
git·代码规范
三原9 天前
写给我前端同事,从事一年多应该要怎么成长的路线
前端·代码规范
方圆想当图灵9 天前
由 Mybatis 源码畅谈软件设计(三):简单查询 SQL 执行流程
后端·代码规范
看山还是山,看水还是。11 天前
软件工程 设计的复杂性
笔记·流程图·软件工程·团队开发·代码规范·内容运营·代码覆盖率
古拉拉明亮之神11 天前
Scala的链式风格
scala·命令模式·代码规范·源代码管理
狂炫一碗大米饭13 天前
响应式设计:打造一个自动适应用户设备屏幕大小和方向的页面。
前端·javascript·代码规范