java sonar教程_SonarQube学习入门指南

1. 什么是SonarQube?

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

7d51948be54b278db3e60a022c458bde.png

2. 使用前提条件

当前版本 SonarQube 7.4

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

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

2.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服务器性能产生很大影响。

2.2 企业硬件建议

对于SonarQube的大型团队或企业级安装,需要额外的硬件。在企业级别,监控SonarQube实例/实例管理/ java-process-memory是必不可少的,并且应该随着实例的增长引导进一步的硬件升级。起始配置应至少包括:

8个核心,允许主SonarQube平台与多个计算引擎工作者一起运行

16GB RAM有关数据库和ElasticSearch的其他要求和建议,请参阅硬件建议/要求/硬件建议。

2.3 支持的平台

SonarQube Java分析器能够分析任何类型的Java源文件,无论它们遵循的Java版本如何。

但SonarQube分析和SonarQube服务器需要特定版本的JVM。

d901a8c244e0e1e2d4ddac55fe3bbc0a.png

4d852261aca20912cf4abf2bd043cf4e.png

605af145787f5c075cce7e226adbbe40.png

网页浏览器

要获得SonarQube提供的完整体验,您必须在浏览器中启用JavaScript。

4683196f71684e8698ae3012eb9fa6c1.png

3. SonarQube 如何下载安装配置?

收费价格标准如下:

810981d9526ce2b9db46433a328a1254.png

SonarQube 的社区版是免费的,其他版本是收费的

3.1.1 比如我们解压缩到这个目录 C:\Apps\sonar\sonarqube-7.4\bin\windows-x86-64\

3.1.2 以管理员身份按照上图顺序依次运行这三个文件

54991a91ba0ef4084d26f28a6c255907.png

b4e0a4087d8f20c449aa47d6750470eb.png

3.1.4 使用系统默认的管理员凭据(admin / admin)登陆成功。

4.  使用SonarQube扫描仪分析Maven

cf8b2ff1dfb16d2ffd362485961fd58a.png

Tips:

Sonar 版本7.4

Maven 版本不可小于 3.x

能访问之前那个登陆页面并登陆成功,说明SonarQube已经安装好了。

初始设置

全局设置

1. 打开位于$ MAVEN_HOME / conf或〜/ .m2中的settings.xml文件,

2. 找到节点,追加org.sonarsource.scanner.maven 这个插件

3. 找到以设置插件前缀和可选的SonarQube服务器URL。

Settings.xml 内容示例如下:

org.sonarsource.scanner.maven

sonar

true

http://myserver:9000

局部设置

如果只是对单个项目需要配置,也可以采取局部设置服务器地址,即在自己项目的POM.xml 中配置如下:

4.0.0

com.xingyun

SpringStaticFactoryPatternSample

0.0.1-SNAPSHOT

commons-logging

commons-logging

1.2

org.springframework

spring-context

5.1.2.RELEASE

org.springframework

spring-core

5.1.2.RELEASE

org.springframework

spring-beans

5.1.2.RELEASE

sonar

true

http://localhost:9000

org.apache.maven.plugins

maven-compiler-plugin

3.8.0

1.8

1.8

分析Maven项目

方法一:

使用Sonar 最新插件

配置好后就可以开始分析Maven项目了,在pom.xml文件所在的目录中运行Maven命令

mvn clean verify sonar:sonar

# In some situation you may want to run sonar:sonar goal as a dedicated step. Be sure to use install as first step for multi-module projects

mvn clean install

mvn sonar:sonar

这样当命令执行完毕后就可以在刚才的web 控制台看到刚才测试的项目了

2ae58a42a93898998a84a9b43176912e.png

方法二:

指定Sonar 插件版本

如果需要指定sonar-maven-plugin的版本而不是使用最新版本

那么需要在项目的POM.xml 中指定版本如下:

4.0.0

com.xingyun

TestSample

0.0.1-SNAPSHOT

sonar

true

http://localhost:9000

org.apache.maven.plugins

maven-compiler-plugin

3.8.0

1.8

1.8

org.sonarsource.scanner.maven

sonar-maven-plugin

3.5.0.1254

然后执行如下命令:

# Specify the version of sonar-maven-plugin instead of using the latest. See also 'How to Fix Version of Maven Plugin' below.

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar

这样当命令执行完毕后就可以在刚才的web 控制台看到刚才测试的项目了

2ae58a42a93898998a84a9b43176912e.png

方法三:

要将JaCoCo作为Maven构建的一部分执行以生成JaCoCo 的二进制格式,即在target 目录下生成jacoco.exec 文件

3298f386343eac6f458bfb4eca25419b.png

请使用以下命令:

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar

如果需要忽略测试失败

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=false sonar:sonar

然后执行如下命令:

# Specify the version of sonar-maven-plugin instead of using the latest. See also 'How to Fix Version of Maven Plugin' below.

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar

这样当命令执行完毕后就可以在刚才的web 控制台看到刚才测试的项目了

2ae58a42a93898998a84a9b43176912e.png

开启身份认证

不知道你有没有发现,我们直接执行命令后便将分析报告提交到web控制台了,没有加任何权限验证,这样是非常不安全的。

默认管理员凭据

安装SonarQube时,会自动创建具有“管理系统”权限的默认用户:

登录:admin

密码:admin

我们可以在项目中通过配置账号和密码方式来实现身份认证,但是这样仍然不是很安全,登陆密码容易泄露。

开启Token 身份认证

1. 打开身份认证开关

Administration > Configuration > General Settings > Security, 然后设置 Force user authentication 属性为true

6d354048c123edb39e89916f3df3eb46.png

2. 创建一个用户

b9f7b39c0eaab2240a2b1613a4bcd18e.png

点击创建后输入账号和密码,输入Email , 然后点击create 即可

92b6f459bbc396008791cec39aed3a19.png

3. 点击下图位置

171c39216f2a9e2d66ff5b88660c876d.png

弹出如下对话框

d7ecbed094ecdc3845dbb00d1872d50f.png

执行成功后如下所示:

62dae91d00db0e52f51530ff665eeb41.png

点击sonar-users 下的图标,弹出如下图所示

1300bea5a0aac18b322812c8d743ae6c.png

勾选后点击done 完成

a0545e6c778b036c83538f0b6fdf41e0.png

将Execute Analysis 下对勾勾选,即可为该用户组添加分析执行权限

0ed6c17bd4c081fd6f3c3d1427051eb2.png

由于我们创建的用户属于这两个用户组,所以给这个组赋予权限,那么我们的用户便也有权限了。

恢复管理员访问权限

如果您更改了admin密码然后丢失了密码,则可以使用以下查询重置密码:

update users set crypted_password = '$2a$12$uCkkXmhW5ThVK8mpBvnXOOJRLd64LJeHTeCkSuB3lfaR2N0AYBaSi', salt=null, hash_method='BCRYPT' where login = 'admin'

如果您已删除admin并随后锁定具有全局管理权限的其他用户,则需要admin使用以下查询重新授予用户:

INSERT INTO user_roles(user_id, role) VALUES ((select id from users where login='mylogin'), 'admin');

参考模板示例一:

pom.xml

sonar

true

jdbc:mysql://******:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

com.mysql.jdbc.Driver

sonar

sonar

http://172.*.*.*:9000

ce57e****************4a8969

UTF-8

.

src/test/java/**

sonar-coverage

true

org.jacoco

jacoco-maven-plugin

0.7.9

org.jacoco

jacoco-maven-plugin

true

agent-for-ut

prepare-agent

jacoco-site

verify

report

参考模板示例二:

pom.xml

4.0.0

com.xingyun

SpringStaticFactoryPatternSample

0.0.1-SNAPSHOT

commons-logging

commons-logging

1.2

org.springframework

spring-context

5.1.2.RELEASE

org.springframework

spring-core

5.1.2.RELEASE

org.springframework

spring-beans

5.1.2.RELEASE

sonar

true

http://localhost:9000

UTF-8

:

Custom Project

V0.0.1

target/site/jacoco/jacoco.xml

org.apache.maven.plugins

maven-compiler-plugin

3.8.0

1.8

1.8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值