admin 管理员组文章数量: 887033
SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。
官方网站:
https://www.sonarqube/
1. 使用前提条件
运行SonarQube的唯一先决条件是在您的计算机上安装Java(Oracle JRE 8或OpenJDK 8)。
注意: 在Mac OS X上,强烈建议安装Oracle JDK 8而不是相应的Oracle JRE,因为JRE安装未正确完全设置Java环境。
1.1 硬件要求
- SonarQube服务器的小型(个人或小团队)实例需要至少2GB的RAM才能有效运行,并且1GB的可用RAM用于操作系统。如果要为大型团队或Enterprise安装实例,请考虑以下其他建议。
- 您需要的磁盘空间量取决于您使用SonarQube分析的代码量。例如,SonarClube的公共实例SonarCloud拥有超过3.5亿行代码,有5年的历史。SonarCloud目前在集群Amazon EC2 m5.large实例上运行,每个节点分配50 Gb的驱动器空间。它处理19,000多个项目,大约有1400万个未解决的问题。SonarCloud在PostgreSQL 9.5上运行,它为数据库使用了大约250Gb的磁盘空间。
- SonarQube必须安装在具有出色读写性能的硬盘上。最重要的是,“data”文件夹包含Elasticsearch索引,当服务器启动并运行时,将在其上完成大量I / O. 因此,良好的读写硬盘性能将对整个SonarQube服务器性能产生很大影响。
1.2 企业硬件建议
对于SonarQube的大型团队或企业级安装,需要额外的硬件。在企业级别,监控SonarQube实例/实例管理/ java-process-memory是必不可少的,并且应该随着实例的增长引导进一步的硬件升级。起始配置应至少包括:
- 8个核心,允许主SonarQube平台与多个计算引擎工作者一起运行
- 16GB RAM有关数据库和ElasticSearch的其他要求和建议,请参阅硬件建议/要求/硬件建议。
1.3 支持的平台
SonarQube Java分析器能够分析任何类型的Java源文件,无论它们遵循的Java版本如何。
但SonarQube分析和SonarQube服务器需要特定版本的JVM。
参考资料:
Prerequisites and overview
版本注意:jdk8支持的sonarqube版本最高是7.8,而从7.9版本开始都是要求jdk11了,下载的话需要注意版本的对应关系,SonarQube 7.6, 对应 JDK8,MySQL 版本>=5.6 && <8.0。sonarqube从7.8起,不再支持mysql。SonarQube 的社区版是免费的,其他版本是收费的!!!
2. 安装
2.1下载sonarqube的zip包
SonarQube官方下载页面Download | SonarQube | Sonar,这里我们下载免费的社区版
SonarQube 7.9开始需要Java 11且不支持mysql了,所以这里我们选择7.0版本进行下载
我们把页面拉到最下面,选择Historical Downloads
我的jdk是1.8,mysql数据库,所以下载的版本是:7.0版本,zip安装包下载地址:
https://binaries.sonarsource/Distribution/sonarqube/sonarqube-7.0.zip
2.2下载sonarqube的汉化包
由于低版本SonarQube自带的插件商店没有对应的汉化版本,这里我们自己下载汉化插件。
Releases · xuhuisheng/sonar-l10n-zh · GitHub
下载汉化包地址:https://github/xuhuisheng/sonar-l10n-zh/releases
下载完成之后,我们将这个jar包放入SonarQube的安装目录下的extensions\plugins文件夹中即可
2.3如果需要mysql可以下载对应版本的mysql
MySQL :: Download MySQL Community Server (Archived Versions)
2.4数据库配置
root登录数据库,执行以下命令:
创建sonar数据库
创建sonar 用户
给sonar 赋予权限
密码是sonar
刷新权限
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
2.5sonar配置
打开sonar/conf目录下的sonar.properties,加入以下配置项:
#数据库连接url
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#数据库用户
sonar.jdbc.username=sonar
#数据库密码
sonar.jdbc.password=sonar
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
url是数据库连接地址,username是数据库用户名,jdbc.password是数据库密码,login是sonarqube的登录名,sonar.password是sonarqube的密码
sonar默认的登陆名和密码都是admin,默认端口是http://localhost:9000/
如果想修改端口:
2.5配置汉化包
将下载的汉化jar放到extensions\plugins路径:
2.6启动sonarqube服务
我解压缩sonarqube-7.0.zip到这个目录 D:\software\sonarqube-7.0\bin\windows-x86-64
我使用的是windows的64位系统,则打开bin\windows-x86-64\StartSonar.bat,看到如下代表启动成功。
注意:启动sonar服务的同时,也启动了jdk 的Java服务,如果提示如下报错,必须关闭所有的Java服务
(执行StartSonar.bat脚本启动SonarQube后,如果不小心关闭了控制台,其实这个时候SonarQube并没有被关闭,后台还有进程在,所以下次启动时会报错,这个时候就要手动杀掉进程了。)
2.7登录平台
访问地址:http://localhost:9000/
若启动报错可检查logs文件下的日志,检查顺序:sonar.log -> es.log -> web.log
2.8创建项目
访问sonar首页,按照提示一步步来即可
设置令牌
这个时候我们要把这个令牌复制下来,因为后面就看不到了!
2.9使用
三种方式来使用SonarQube的代码扫描功能:
① Maven方式执行代码检测
② SonarScanner方式执行代码检测
③ 集成Jenkins执行代码检测
1.集成maven执行代码扫描
创建完项目后,我们选择maven方式构建,即可看到SonarQube给我们提供的maven扫描命令:
mvn sonar:sonar -Dsonar.projectKey=test -Dsonar.host.url=http://127.0.0.1:9000 -Dsonar.login=生成的令牌
进入到要扫描的代码目录,执行上面的maven命令即可,执行完毕后在SonarQube页面即可看到扫描结果。
注:上面的命令中有些是固定的信息,如果每次执行扫描都需要输入则显的很麻烦,这里我们可以将某些信息配置到maven的setting.xml中:
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Example for MySQL-->
<sonar.jdbc.url>jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8</sonar.jdbc.url>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://127.0.0.1:9000</sonar.host.url><sonar.login>admin</sonar.login>
<sonar.password>admin</sonar.password>
</properties>
</profile>
或者:
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://127.0.0.1:9000</sonar.host.url>
<sonar.login>7a13de184fe9d79c59e24062d0065bd87b7064e9</sonar.login>
</properties>
</profile>
以后直接执行mvn sonar:sonar -Dsonar.projectKey=test即可。甚至mvn sonar:sonar都可以,SonarQube会自动以maven的坐标为项目key去创建项目。
2.通过SonarScanner执行代码扫描
SonarQube提供了SonarScanner组件来帮助我们执行扫描,首先下载:
https://docs.sonarqube/latest/analysis/scan/sonarscanner/
下载之后是个压缩包,解压即可,为了方便使用,我们可以将解压后的目录下的bin目录加入到环境变量中,这样可以直接使用sonar-scanner命令了。
新增变量: SONAR_SCANNER_HOME = D:\software\sonar-scanner-cli-4.1.0.1829-windows
修改Path变量:增添 %SONAR_SCANNER_HOME%\bin\
打开SonarScanner的配置文件conf\sonar-scanner.properties,做如下修改:
进入到待扫描的项目目录下,新建sonar-project.properties文件,内容如下:
sonar.projectKey=test
sonar.projectName=test
#sonar.projectVersion=1.0
#sonar.sources=./src
sonar.sourceEncoding=UTF-8
#sonar.language=java
sonar.java.binaries=.
然后再命令行执行sonar-scanner即可。
3.集成Jenkins执行代码扫描
Jenkins作为一个开源的、提供友好操作界面的持续集成(CI)工具,广受大家的喜爱,Jenkins提供了SonarQube扫描插件可以方便的让我们直接扫描代码仓库中的代码质量,而前两种方式更偏向于开发人员本地去做,更依赖开发人员的自觉性,而使用Jenkins的方式则更方便对整个团队进行 Code Review,更方便的进行规范管理。
1.下载jenkins (war包或者msi均可)(安装过程省略)
War Jenkins Packages
①.首先需要安装SonarQube Scanner插件,系统管理 > 插件管理,搜索SonarQube Scanner插件并安装;安装后进入到系统管理 > 系统配置 > SonarQube servers,添加SonarQube服务器
安装后进入到系统管理 > 系统配置 > SonarQube servers,添加SonarQube服务器
第一次配置是不能选择Secert Text。可以先保存,之后再过来修改,点击添加按钮添加Jenkins:
将sonarqube生成的token设置到Secret中。类型选择Secert Text。
3.1Jenkins集成sonarqube scanner
配置SonarQube Scanner
先配置好JDK
在全局工具管理中配制SonarQube Scanner:
Jenkins在项目中引用sonarqube scanner:
新建一个项目
如果不创建空间的话,等于是没有空间放代码,可以先build一次:
构建:
sonarprojectName=SfOB NAME
sonar.projectKey=SJOB_NAME)
sonar.sources=/cvrvideo
sonar;java.binaries=./cvrvideo/target/classes
可以点击链接,然后查看扫描的结果。
3.2jenkins以maven的方式集成sonarqube scanner
配置一下maven
构建项目:
clean
verify
sonar:sonar
-Dsonar.host.url=http://192.168xx.xxx:9000
-Dsonar.login=#填写自行生成的token
版权声明:本文标题:windows 系统安装sonarqube 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726193244h913502.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论