windows 系统安装sonarqube

chatgpt/2023/9/26 14:56:03

SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。

官方网站:

https://www.sonarqube.org/

1. 使用前提条件

运行SonarQube的唯一先决条件是在您的计算机上安装Java(Oracle JRE 8或OpenJDK 8)。

注意: 在Mac OS X上,强烈建议安装Oracle JDK 8而不是相应的Oracle JRE,因为JRE安装未正确完全设置Java环境。

1.1 硬件要求

  1. SonarQube服务器的小型(个人或小团队)实例需要至少2GB的RAM才能有效运行,并且1GB的可用RAM用于操作系统。如果要为大型团队或Enterprise安装实例,请考虑以下其他建议。
  2. 您需要的磁盘空间量取决于您使用SonarQube分析的代码量。例如,SonarClube的公共实例SonarCloud拥有超过3.5亿行代码,有5年的历史。SonarCloud目前在集群Amazon EC2 m5.large实例上运行,每个节点分配50 Gb的驱动器空间。它处理19,000多个项目,大约有1400万个未解决的问题。SonarCloud在PostgreSQL 9.5上运行,它为数据库使用了大约250Gb的磁盘空间。
  3. 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.com/Distribution/sonarqube/sonarqube-7.0.zip

2.2下载sonarqube的汉化包

由于低版本SonarQube自带的插件商店没有对应的汉化版本,这里我们自己下载汉化插件。

Releases · xuhuisheng/sonar-l10n-zh · GitHub

下载汉化包地址:https://github.com/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&amp;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.org/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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313659.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

基于x-scan扫描线的3D模型渲染算法

基于x-scan算法实现的z-buffer染色。c#语言&#xff0c;.net core framework 3.1运行。 模型是读取3D Max的obj模型。 x-scan算法实现&#xff1a; public List<Vertex3> xscan() {List<Vertex3> results new List<Vertex3>();SurfaceFormula formula g…

LoRa模块学习

LoRa是一种长距离、低功耗的无线通信技术&#xff0c;专为物联网&#xff08;IoT&#xff09;和远程传感应用而设计。 LoRa技术基于半双工调制方法&#xff0c;通过扩频和前向纠错编码来提供可靠的通信连接。 LoRa技术的主要特点 长距离传输&#xff1a;LoRa技术采用了低功耗…

Redis的基本使用命令

Redis的使用命令 Redis是一个开源的使用ANSI C编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。它通常被称为数据结构服务器&#xff0c;因为值&#xff08;value&#xff09;可以是 字符串(String), 哈希(Hash…

HTML <rp> 标签

实例 一个 ruby 注释&#xff1a; <ruby> 漢 <rt><rp>(</rp>ㄏㄢˋ<rp>)</rp></rt> </ruby>浏览器支持 元素ChromeIEFirefoxSafariOpera<rp>5.05.538.05.015.0 Internet Explorer 9, Firefox, Opera, Chrome 以及 S…

【已解决】如果将MySQL数据库中的表生成PDM

数据库表PDM关系图 | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;经验分享 有时候&#xff0c;我们需要MySQL数据库中的表生成对应的PDM文件&#xff0c;这里凯哥就讲讲第一种将MySQL数据库的表生成对应的PDM文件。 环境准备&#xff1a; MySQL数据库连接客户端&…

[SQL挖掘机] - 窗口函数 - 聚合函数类

在 sql 中&#xff0c;sum、count、avg等函数是常见的聚合函数&#xff0c;它们用于计算结果集中某个列的总和、计数和平均值。而使用这些聚合函数作为窗口函数时&#xff0c;它们会对窗口内的行进行计算&#xff0c;并返回结果作为每一行的一个列。 下面是一些常用的聚合类窗…

题目:2169.得到 0 的操作数

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;2169. 得到 0 的操作数 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 按要求模拟并计数即可。 解题代码&#xff1a; class Solution {public int countOperations(int num1, int num2)…

如何对使用React和EMF parsley设计的Web UI应用程序进行测试自动化

导语 Web UI应用程序是指通过Web浏览器访问的应用程序&#xff0c;它们通常具有复杂的用户界面和交互逻辑。为了确保Web UI应用程序的功能、性能和用户体验&#xff0c;测试自动化是一种有效的方法&#xff0c;它可以在不需要人工干预的情况下&#xff0c;快速地执行重复的测试…
推荐文章