SonarQube学习⼊门指南
1. 什么是SonarQube?
SonarQube®是⼀种⾃动代码审查⼯具,⽤于检测代码中的错误,漏洞和代码异味。它可以与您现有的⼯作流程集成,以便在项⽬分⽀和拉取请求之间进⾏连续的代码检查。
2. 使⽤前提条件
当前版本 SonarQube 7.4
运⾏SonarQube的唯⼀先决条件是在您的计算机上安装Java(Oracle JRE 8或OpenJDK 8)。
注意:在Mac OS X上,强烈建议安装Oracle JDK 8⽽不是相应的Oracle JRE,因为JRE安装未正确完全设置Java环境。
2.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服务器性能产⽣很⼤影响。
2.2 企业硬件建议
对于SonarQube的⼤型团队或企业级安装,需要额外的硬件。在企业级别,监控SonarQube实例/实例
管理/ java-process-memory是必不可少的,并且应该随着实例的增长引导进⼀步的硬件升级。起始配置应⾄少包括:
8个核⼼,允许主SonarQube平台与多个计算引擎⼯作者⼀起运⾏
16GB RAM有关数据库和ElasticSearch的其他要求和建议,请参阅硬件建议/要求/硬件建议。
2.3 ⽀持的平台
SonarQube Java分析器能够分析任何类型的Java源⽂件,⽆论它们遵循的Java版本如何。
但SonarQube分析和SonarQube服务器需要特定版本的JVM。
⽹页浏览器
要获得SonarQube提供的完整体验,您必须在浏览器中启⽤JavaScript。
3. SonarQube 如何下载安装配置?
收费价格标准如下:
SonarQube 的社区版是免费的,其他版本是收费的
3.1
3.1.1 ⽐如我们解压缩到这个⽬录 C:\Apps\sonar\sonarqube-7.4\bin\windows-x86-64\
3.1.2 以管理员⾝份按照上图顺序依次运⾏这三个⽂件
3.1.4 使⽤系统默认的管理员凭据(admin / admin)登陆成功。
4. 使⽤SonarQube扫描仪分析Maven
Tips:
Sonar 版本7.4
Maven 版本不可⼩于 3.x
能访问之前那个登陆页⾯并登陆成功,说明SonarQube已经安装好了。
初始设置
全局设置
1. 打开位于$ MAVEN_HOME / conf或〜/ .m2中的 l⽂件,
2. 到<pluginGroups>节点,追加 org.sonarsource.scanner.maven 这个插件
3. 到以设置插件前缀和可选的SonarQube服务器URL。
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is localhost:9000 -->
<sonar.host.url>
myserver:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
局部设置
如果只是对单个项⽬需要配置,也可以采取局部设置服务器地址,即在⾃⼰项⽬的l 中配置如下:<project xmlns="/POM/4.0.0"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xingyun</groupId>
<artifactId>SpringStaticFactoryPatternSample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- ⾮必须中间的可删除 -->
<dependencies>
<!-- mvnrepository/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- mvnrepository/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<!-- mvnrepository/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<!-- mvnrepository/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<!-- ⾮必须中间的可删除 -->
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is localhost:9000 -->
<sonar.host.url>
localhost:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
<build>
<pluginManagement>
<plugins>
<!-- 配置编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
分析Maven项⽬
⽅法⼀:
使⽤Sonar 最新插件
配置好后就可以开始分析Maven项⽬了,在l⽂件所在的⽬录中运⾏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 控制台看到刚才测试的项⽬了
⽅法⼆:
指定Sonar 插件版本
如果需要指定sonar-maven-plugin的版本⽽不是使⽤最新版本
那么需要在项⽬的l 中指定版本如下:
<project xmlns="/POM/4.0.0"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xingyun</groupId>
<artifactId>TestSample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is localhost:9000 -->
<sonar.host.url>
localhost:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
<build>
<pluginManagement>
<!-- 配置编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- 配置分析扫描插件 -->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.5.0.1254</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
然后执⾏如下命令:
# 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 控制台看到刚才测试的项⽬了
⽅法三:
要将JaCoCo作为Maven构建的⼀部分执⾏以⽣成JaCoCo 的⼆进制格式,即在target ⽬录下⽣成 ⽂件
请使⽤以下命令:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar
如果需要忽略测试失败
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -st.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 控制台看到刚才测试的项⽬了
开启⾝份认证
不知道你有没有发现,我们直接执⾏命令后便将分析报告提交到web控制台了,没有加任何权限验证,这样是⾮常不安全的。默认管理员凭据
安装SonarQube时,会⾃动创建具有“管理系统”权限的默认⽤户:
登录:admin
密码:admin
我们可以在项⽬中通过配置账号和密码⽅式来实现⾝份认证,但是这样仍然不是很安全,登陆密码容易泄露。
开启Token ⾝份认证
1. 打开⾝份认证开关
Administration > Configuration > General Settings > Security, 然后设置 Force user authentication 属性为true
2. 创建⼀个⽤户
点击创建后输⼊账号和密码,输⼊Email , 然后点击create 即可
3. 点击下图位置
弹出如下对话框
执⾏成功后如下所⽰:
点击sonar-users 下的图标,弹出如下图所⽰
勾选后点击done 完成
将Execute Analysis 下对勾勾选,即可为该⽤户组添加分析执⾏权限
由于我们创建的⽤户属于这两个⽤户组,所以给这个组赋予权限,那么我们的⽤户便也有权限了。spring framework是什么系统
恢复管理员访问权限
如果您更改了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');
参考模板⽰例⼀:
<project>
<!-- 代码扫描步骤 -->
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://******:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance</sonar.jdbc.url> <sonar.jdbc.driver&sql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论