zoukankan      html  css  js  c++  java
  • 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.0sonarqube-7.0confsonar.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.0sonarqube-7.0inwindows-x86-64StartSonar.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.0sonar-scanner-4.2.0.1873-windowsconfsonar-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.0sonarqube-7.0 

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

    打开path,输入%SONAR_HOME%in;   

    打开path,输入%SONAR_RUNNER_HOME%in;

    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_myhMy_First_Maven_Projectsrcmainjava

    #sonar.java.binaries=E:Eclipsefile_myhMy_First_Maven_Project argetclasses


    说明:

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

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

    sonar.version:项目版本

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

    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.0sonarqube-7.0extensionsplugins

    下载最新版本即可


    报错二:

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

    java.lang.IllegalStateException: failed to obtain node locks, tried [[D:zzsonarqube-7.6dataes5sonarqube]] with lock id [0];


    failed to obtain node locks, tried [[E:sonarqube-7.0sonarqube-7.0dataes5sonarqube]] 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_myhMy_First_Maven_Projectsrcmainjava
    sonar.java.binaries=E:Eclipsefile_myhMy_First_Maven_Project argetclasses
    正确写法:
    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>

  • 相关阅读:
    javascript里面&&和||
    Who am I?
    Mis开发过程中的不同角色(忽略外包的情况下)
    重蹈覆辙?
    适时使用Photo Courtesy
    【LeetCode练习题】Reverse Linked List II
    【C++】大数的+-*/四则运算
    【LeetCode练习题】Multiply Strings
    【LeetCode练习题】Evaluate Reverse Polish Notation
    【LeetCode练习题】Merge k Sorted Lists
  • 原文地址:https://www.cnblogs.com/eosclover/p/12078894.html
Copyright © 2011-2022 走看看