sonar实战

需求:代码覆盖率

1.起先的目的是为了看代码覆盖率 实践的工具是jacoco.实践用的是命令行的方式  

2.后又了解到sonar 可以做代码质量分析   可以更进一层的分析代码

 

----------------------------------------------------实践步骤-----------------------------------------------------------------

1.java环境准备 1.8

2.下载SonarQube安装包-解压即可,官网下载地址https://www.sonarqube.org/downloads/ 

3.MySql数据库,新建一个数据库sonar     create database sonar; 

4.SonarQube安装目录E:\sonarqube-7.0\sonarqube-7.0\conf\sonar.properties配置文件  

#----- MySQL 5.6 or greater
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin

5.点击执行E:\sonarqube-7.0\sonarqube-7.0\bin\windows-x86-64\StartSonar.bat,打开http://localhost:9000,如果显示sonar主页,则sonar安装成功。 

6.sonar主页,点击配置-应该市场-搜索  下载JAVA相关的:Checkstyle、Findbugs、PMD   下载完后重启

7.汉化sonar  搜索chinese Pack  

8.下载sonar-scanner-解压即可:(这个工具是对源码进行扫描,并将结果保存到数据库以便用上面的sonarqube进行分析)

  下载地址:    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

9. sonar-scanner配置文件修改:

修改配置文件E:\sonarqube-7.0\sonar-scanner-4.2.0.1873-windows\conf\sonar-scanner.properties

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

sonar.jdbc.username=root

sonar.jdbc.password=123456

10.环境变量配置

新建:

(1)name :       SONAR_HOME                                    value:  E:\sonarqube-7.0\sonarqube-7.0 

(2)name:   SONAR_RUNNER_HOME                     value:E:\sonarqube-7.0\sonar-scanner-4.2.0.1873-windows

打开path,输入%SONAR_HOME%\bin;   

打开path,输入%SONAR_RUNNER_HOME%\bin;

11.打开CMD窗口,输入 sonar-scanner -version,看到下图说明成功

12.找到需要扫描的项目,在项目的根目录下新建 sonar-project.properties文件,输入以下信息

sonar.projectKey=My_First_Maven_Project

sonar.projectName=My_First_Maven_Project

sonar.version=0.0.1-SNAPSHOT

sonar.sources=src     --写相对路径
sonar.sources=target --写相对路径

#sonar.sources=E:\Eclipsefile_myh\My_First_Maven_Project\src\main\java

#sonar.java.binaries=E:\Eclipsefile_myh\My_First_Maven_Project\target\classes


说明:

sonar.projectKey:SonarQube服务器每次添加一个项目时要求填写一个项目名和关键字,此处是关键字

sonar.projectName:项目名,就和你的项目名称保持一致就好了

sonar.version:项目版本

sonar.sources:要扫描的源码路径,我在此处就直接写项目的绝对路径了    src\main\java 源码路径 

sonar.java.binaries:项目生成的class文件的路径    class 文件的路径   

13设置成功后,启动sonarqube服务  127.0.0.1:9000页面  正常访问

14.在cmd进入项目所在的根目录,输入命令:sonar-scanner 开始扫描 (sonar-scanner -X  输出的信息更详情一点。。。推荐使用)

15.打开http://localhost:9000/,我们会看到主页出现了分析项目的概要图

 

------------------------------------------软件版本----------------------------------------------------

版本:

JDK 1.8.0

sonarqube-7.0

sonar-scanner-2.8

sonar-java-plugin-5.6.0.15032

-------------------------------------------------实践成果----------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 ----------------------------------------------遇到的问题----------------------------------------------

报错一:

报错参考资料:https://blog.csdn.net/weixin_33877885/article/details/92145638

报错:

java.lang.IllegalStateException: Fail to download the plugin (java, version 5.6) from https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar (error is : Fail to download: https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar (no proxy))

其中:

https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar


自己电脑 安装的版本:sonar-java-plugin-5.1.0.13090.jar  

路径----E:\sonarqube-7.0\sonarqube-7.0\extensions\plugins

下载最新版本即可

 


报错二:

5、启动sonarqube 出现Process exited with exit value [es]: 1异常 查看logs 的es的log

java.lang.IllegalStateException: failed to obtain node locks, tried [[D:\zz\sonarqube-7.6\data\es5\sonarqube]] with lock id [0];


failed to obtain node locks, tried [[E:\sonarqube-7.0\sonarqube-7.0\data\es5\sonarqube]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

 

被锁定了,要么重启要么注销---------自己还没实践

报错三:
sonar.sources=E:\Eclipsefile_myh\My_First_Maven_Project\src\main\java
sonar.java.binaries=E:\Eclipsefile_myh\My_First_Maven_Project\target\classes
正确写法:
sonar.sources=src
sonar.java.binaries=target
 
以上两个应该显示相对路径 ,绝对路径会报错。。。。。  ---
 
报错四:参考:https://www.cnblogs.com/zhongyuanzhao000/p/11686633.html
SonarQube执行代码分析时,报错ERROR: Unable to create symbol table for : /**/*.java java.lang.IllegalArgumentException: Unsupported class file major version 55
 
看下面的截图  是sonarqube  scanner  4.2.0.1873 对应的JDK 版本是11.0.3
自己本地的版本是1.8.0 
版本不匹配问题
 
报错五:
16:13:35.345 ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Can not execute Checkstyle
 
 
 
报错六:
org.sonar.java.se.ExplodedGraphWalker$MaximumStepsReachedException: reached limit of 16000 steps for method findNewDoctorList#200 in class PatientManageBiz
 
看别人的解答,感觉无碍
https://stackoverflow.com/questions/34065727/error-could-not-complete-symbolic-execution-reached-limit-of-10000-steps

 

------------------------------------------------------eclipse 使用技巧-------------------------------------------------------------------------

1.src/main/java   源码路径

2.src/test/java   单元测试用例的路径

3.单元测试框架有:junit4,、testNg 使用的是junit4 

4.项目右键--maven --update project  更新项目

5.project --clean  重新生成编译后的class文件

6. 项目右键--build path--configure build path --add libraries --junit--junit4

7.pox.xml配置文件

<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

posted @ 2020-01-03 13:54  eosclover  Views(2024)  Comments(0Edit  收藏  举报