代码审计工具-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^/!

相关推荐
这个DBA有点耶9 小时前
为什么UPDATE比SELECT危险得多?锁范围等于扫描行数
数据库·架构·代码规范
沈麽鬼10 小时前
纸上代码
代码规范
深圳老胡2 天前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
星星泡饭吃3 天前
【信息安全】越权防护设计评审指南
代码规范
GlobalSign数字证书3 天前
申请 EV 代码签名证书需要准备哪些材料?
代码规范
深圳老胡3 天前
STM32F4 OTA 升级双 App 方案设计与实现
笔记·stm32·单片机·代码规范
深圳老胡3 天前
STM32F4 OTA升级:单App与双App方案优缺点对比
笔记·stm32·单片机·代码规范
这个DBA有点耶3 天前
Change Buffer深入:二级索引写入的隐形加速器与它的代价
数据库·mysql·代码规范
知守观4 天前
一个半天需求干了三天:代码腐化的五个信号与自查命令
java·后端·代码规范
深圳老胡5 天前
STM32 MCU 国产替代型号简介
笔记·stm32·单片机·代码规范