SonarQube+SonarScanner搭建

前言:

        之前一直使用的是低版本的SonarQube,最近心血来潮换成最新的试试扫描效果,下面记录下搭建的过程,其中也有不少坑还是要注意下。

配置环境:

       首先我们需要配置环境,环境我们需要安装java环境,数据库和node,首先说java环境,访问如下网址查看官方要求的环境

https://docs.sonarsource.com/sonarqube/latest/requirements/prerequisites-and-overview/

        官方要求的java环境如下: 

        所以我们可以安装Oracle jdk或者Open jdk,下载地址如下:

https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html

        因为我使用的是windows环境搭建,所以下载的是如下版本的jdk,如果是linux环境,只要下载对应的版本安装即可: 

         安装完jdk,并配置好环境变量后就要按照数据库,10.1版本不支持mysql数据库,支持数据库为:PostgreSQLMicrosoft SQL ServerOracle三种数据库,我这里选用的是第一种,下载地址如下:

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

        安装的时候要注意,不要安装pgAdmin4,这个是一个连接数据库的工具,但是这里安装会卡死在进入界面,所以不要使用:

 , 

        安装成功后可以进服务进行启动或关闭:

扫描二维码关注公众号,回复: 15945443 查看本文章

        然后我们可以使用工具dbeaver来链接数据库,dbeaver下载地址如下:

https://dbeaver.io/

         连接成功后,新建数据库sonar: 

        然后就是需要我们安装node不然扫描js代码会报错,下载地址如下:

https://nodejs.org/en

        下载安装完成并配置环境变量,node -v能显示版本即可。

        到这里环境就配置好了,下面就是安装SonarQube。

安装SonarQube:

        首先去官网下载SonarQube,目前最新版为10.1,下载地址如下:

https://www.sonarsource.com/products/sonarqube/downloads/

         这里我们下载第一个社区版本:

        下载Community Edition到本地后,开始修改配置文件sonar.properties:

     这里简单说明下配置的原因:

        首先前三项是我们的数据库链接地址和账号密码,为了SonarQube链接,下面的三个是针对java的扫描,当我们的项目很大的时候会报堆错误,这里是给JVM申请足够大的空间来扫描项目防止报错,后面的web.port为我们访问web页面的端口号,search.port为我们访问本地的es8的端口,如果有冲突可以进行修改。

        另外注意到10版本以后就没有wrapper.conf这个配置文件了。

sonar.jdbc.username=postgres
sonar.jdbc.password=root
sonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonar

sonar.web.javaOpts =-Xmx2048m -Xms2048m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts =-Xmx9000m -Xms9000m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts =-Xmx1024m -Xms1024m -XX:+HeapDumpOnOutOfMemoryError


#sonar.web.host=192.168.3.82
sonar.web.port=9089
sonar.search.port=55690

        配置完成后就可以启动SonarQube,运行安装bin\windows目录下的StartSonar.bat

         如果启动成功没有退出,则在浏览器访问设置的地址,我这里设置的9089

http://127.0.0.1:9089/

        初始密码为admin:admin,第一次登录后需要修改密码。

安装插件:

sonar-findbugs-plugin:

        登录成功后安装插件,这里我们需要安装sonar-findbugs-plugin插件: 

        这里我们可以看到官方支持的插件:

         这里我们去github下载sonar-findbugs:

https://github.com/spotbugs/sonar-findbugs/

        下载jar包放入extensions\plugins目录下,然后重启SonarQube后可以看到安装成功:

        然后我们要修改如下地方,这里要选择 :FindBugs Security Audit,只做安全扫描,不进行其他扫描。

        访问后面的134可以看到我们扫描所使用的详细规则细节:

sonar-cnes-report:

        安装插件sonar-cnes-report,下载地址(目前支持到9.9):

https://github.com/cnescatlab/sonar-cnes-report/releases

        下载完成后放入 extensions/plugins/下,再扫描完成后可以下载详细的报告:

sonarqube-community-branch:     

        安装插件sonarqube-community-branch-plugin,下载地址(目前支持到9.9):

https://github.com/mc1arke/sonarqube-community-branch-plugin

        下载完成后放入extensions/plugins/下,然后在sonar.properties中添加如下内容:

sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.14.0.jar=web
sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.14.0.jar=ce

         然后再扫描的时候添加-Dsonar.branch.name=feature-001即可

sonar-pdfreport-plugin:

        安装插件sonar-pdfreport-plugin,下载地址(目前支持到9.9):

https://gitee.com/zzulj/sonar-pdf-plugin/releases

         下载完成后放入extensions/plugins/下,在我们扫描完成后会生成pdf报告,可再web界面下载:

 安装SonarScanner:

        首先下载SonarScanner,这里我们下载和SonarQube10.1配套的4.8版本:

https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/

         下载完成后打开sonar-scanner.properties,配置SonarQube的账号密码:

        

项目扫描:

        配置完成后我们就可以进行项目的扫描,这里以java项目为例子,扫描java项目需要我们将java项目进行编译,因为扫描的时候会进行调用检查,然后编写扫描需要的sonar-project.properties

        下面先写一个模板,根据这个修改即可:

# Root project information
sonar.projectKey=TEST
sonar.projectName=TEST
sonar.projectVersion=v1.0

# Some properties that will be inherited by the modules
sonar.sources=src
## 系统编码
sonar.sourceEncoding=CP1252  
sonar.java.binaries=ejbModule
## 排除扫描文件
sonar.exclusions=**/*Stub.java,**/EJS*  

# List of the module identifiers
sonar.modules=test1,test2

# Properties can obviously be overriden for
## 需要在不同于启动目录的目录中进行分析时使用,存在多层目录时候
test1.sonar.projectBaseDir=test1/Workspace        
## 所需要的库
test1.sonar.java.libraries=D:/IBM3/WebSphere/AppServer/lib
## 项目编译成功目录
test1.sonar.java.binaries=release_test1/tmp/classes
## 项目源代码
test1.sonar.sources=test1/src/

# Properties can obviously be overriden for
test2.sonar.projectBaseDir=test2/Workspace
test2.sonar.java.libraries=D:/IBM3/WebSphere/AppServer/lib
test2.sonar.java.binaries=release_test2/tmp/classes
test2.sonar.sources=test2/src/

 设置完这些就可以编辑一个扫描bat,在当前目录下新建sonarscan.bat

cd D:\sonar\test
set SONAR_SCANNER_OPTS=-Xms2G -Xmx9G -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError
D:\projectSoft\sonar-scanner-4.8.0.2856\bin\sonar-scanner.bat

 然后扫描即可,扫描成功后在web界面就可以看到扫描结果,进行分析。              

规则修改:

        从6.0版本开始就不支持sonar.language参数,意味着我们在扫描中不能指定扫描语言,如果想指定扫描语言只能自定义扫描规则:

        这里我们新建test,新建成功后看到和父规则一样是28个

        返回上一界面,把新建的设置为默认:

 

         然后进入test,,这个时候选择change Parent ,然后选择None,关闭所有规则:

 

        这个就可以看到可以将规则设置为0,即不匹配规则:

        在扫描的时候就可以看到设置的规则,我这里添加的标签为LLCreate:

        

        当然你也可以用这个方法自定义扫描的规则

总结:

        总体的搭建没什么难度,主要是扫描中会有很多莫名奇妙的错误,这个只能碰到一个解决一个,如果项目过大大部分都是堆分配不够导致的错误,另外就是数据库空间不够导致的错误。另外就是扫描中会出现大量的误报,这个处理就因人而异了,毕竟没有一个工具可以完美的区别哪些是漏洞。

        最后说下使用体验,最新版改了ui操作,但是个人感觉改完以后还不如以前,处理误报什么很不方便,而且不能导出报表,很蛋疼,可能还要切回旧版本,第三方支持也多,界面虽然丑点但是操作方便,新版本虽然解决了很多BUG,但是这个界面交互真的难受。

猜你喜欢

转载自blog.csdn.net/GalaxySpaceX/article/details/131911883