【代码质量管理开源平台】sonar的安装以及使用

这篇具有很好参考价值的文章主要介绍了【代码质量管理开源平台】sonar的安装以及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装、配置以及使用。

简介

1. sonar是什么

Sonar是一个用于代码质量管理的开源平台,用于管理代码的质量,通过插件形式可以支持二十几种语言的代码质量检测,通过多个维度的检查了快速定位代码中潜在的或者明显的错误。

2. SonarQube与Sonar

SonarQube是sonar的服务端,相当于一个web服务器中的tomcat,用来发布应用,在线浏览分析等。

安装

1.下载sonarqubexxx.zip并且解压即可:

下载地址:http://www.sonarqube.org/downloads/

下载完成后解压后点击StartSonar.bat启动即可,如下:

【代码质量管理开源平台】sonar的安装以及使用
http访问9000端口出现下面则证明安装成功。 (如果需要修改端口等信息修改sonarqube-6.7.6\conf\sonar.properties即可)

【代码质量管理开源平台】sonar的安装以及使用

2.配置数据库

  1. 在mysql数据库新建一个库的名称为sonar

  2. 修改sonar/conf/sonar.properties的db信息:

不用放置驱动包,也不用创建表。

sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

3.重启sonarQube会自动建表。

【代码质量管理开源平台】sonar的安装以及使用

4.接下来访问9000端口然后进行登录即可。默认创建的用户名和密码都是admin。可以在system选项卡看到系统信息
【代码质量管理开源平台】sonar的安装以及使用

使用

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

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

2.配置mysql信息

\sonar\sonar-scanner-3.3.0.1492-windows\conf\sonar-scanner.properties文件

#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
#sonar.host.url=http://localhost:9000

#----- Default source code encoding
#sonar.sourceEncoding=UTF-8

sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

3.配置环境变量 并测试

path中增加如下变量: E:\sonar\sonar-scanner-3.3.0.1492-windows\bin

C:\Users\Administrator>sonar-scanner --version
INFO: Scanner configuration file: E:\sonar\sonar-scanner-3.3.0.1492-windows\bin\..\conf\sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 3.3.0.1492
INFO: Java 1.8.0_121 Oracle Corporation (64-bit)
INFO: Windows 10 10.0 amd64

4.打开要进行代码分析的项目根目录,新建sonar-project.properties文件

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=springboot-ssm
sonar.projectVersion=1.0
 
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set. 
# If not set, SonarQube starts looking for source code from the directory containing 
# the sonar-project.properties file.
sonar.sources=src/main/java
sonar.java.binaries=./target/classes
 
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

解释:projectName是项目名字,sources是源文件所在的目录;sonar.java.binaries是项目编译后的class文件的目录。

5.设置成功后,启动sonarqube服务

6.开始分析:

cmd窗口进入到项目的根路径,执行下面命令即可:

E:\xiangmu\springboot-ssm>sonar-scanner

如下:

【代码质量管理开源平台】sonar的安装以及使用

7.访问9000端口查看分析结果

项目分析概要图:

【代码质量管理开源平台】sonar的安装以及使用

查看存在的bug:

【代码质量管理开源平台】sonar的安装以及使用

8.选择一个bug进行查看(可以看到与git也进行了集成,可以看到编写人与时间以及bug的原因)

【代码质量管理开源平台】sonar的安装以及使用

此工具还分析出一些异常信息的记录等,如下:

【代码质量管理开源平台】sonar的安装以及使用

9. 解决下面的bug

【代码质量管理开源平台】sonar的安装以及使用

代码修改为下面即可:(上面逻辑应该是没有错,只是在多次改变引用的情况下被检测为bug)

   @Override
    public Token addOrUpdateToken(String username) {
        // 1.判断是否有对应的token,如果有的话更新时间,没有的话就创建token并且返回
        Token token = findTokenByUsername(username);
        // 1.1创建token并返回
        if (token == null) {
            return generateAndSaveTokenByUserName(username);
        }

        // 1.2根据失效时间更新且返回token
        return updateTokenByTokenLoseTime(token);
    }

10.解决异常处理的bug
【代码质量管理开源平台】sonar的安装以及使用

代码修改为:

@Scheduled(fixedRate = 10000)
public void cron() {
    try {
        Thread.sleep(2000);
        System.out.println("spring anno task execute times " + count++);
    } catch (InterruptedException e) {
        System.err.println("InterruptedException " + e);
        Thread.currentThread().interrupt();
    }
}

11.程序中故意写一个空指针异常看是否可以检测出来

String string = null;
if(string.equals("xxx")){
    System.out.println("xxx");
}

结果:

【代码质量管理开源平台】sonar的安装以及使用

更多的学习参考官网:
  https://docs.sonarqube.org/display/SCAN/Advanced+SonarQube+Scanner+Usages

https://www.sonarqube.org/

补充:sonarqube汉化
到https://docs.sonarqube.org/display/PLUG/Plugin+Library 网站搜索 chinese pack

【代码质量管理开源平台】sonar的安装以及使用

然后点击到对应的git地址https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases下载对应版本的jar包,下载之后放到sonar\sonarqube-6.7.6\extensions\plugins目录下面重启即可,如下:
  
【代码质量管理开源平台】sonar的安装以及使用

再次通过9000端口访问发现变为中文版:

【代码质量管理开源平台】sonar的安装以及使用

注册为windows服务

sonar自带的有注册与删除服务的方法,采用wrapper注册为服务,如下已管理员方式运行InstallNTService.bat即可:
【代码质量管理开源平台】sonar的安装以及使用

注册为服务之后我这里启动服务报错不能正常启动服务,到 %sonar%/logs/sonar.log中查看原因如下:

Launching a JVM...
Unable to execute Java command.  系统找不到指定的文件。 (0x2)

解决办法:修改%sonar%/conf/wrapper.conf中java的路径为绝对路径

【代码质量管理开源平台】sonar的安装以及使用

补充:sonar-scanner的配置也可以进行分模块配置,比如我想检测一个web项目的所有文件(包括Java、JSP、JS、Html、XML),如下:

0. 如果检测html和JSP需要下载sonar-html-plugin-3.1.0.1615.jar插件置于sonarqube-6.7.6\extensions\plugins目录下,而且html的language为web,jsp的language为jsp

【代码质量管理开源平台】sonar的安装以及使用

1.项目结构如下:

【代码质量管理开源平台】sonar的安装以及使用

2.sonar-project.properties配置文件如下:

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=sonarTest
sonar.projectVersion=1.0
sonar.modules=java-module,javascript-module,xml-module,jsp-module,html-module
sonar.sourceEncoding=UTF-8

# Java module 
java-module.sonar.projectName=Java Module 
java-module.sonar.language=java 
java-module.sonar.projectBaseDir=.
java-module.sonar.sources=src
#ignore files and directory
java-module.sonar.exclusions=src/cn/qlq/test2/**,src/cn/qlq/test3.java
sonar.java.binaries=./build

# JavaScript module 
javascript-module.sonar.projectName=JavaScript Module 
javascript-module.sonar.projectBaseDir=.
javascript-module.sonar.language=js 
javascript-module.sonar.sources=WebContent

# Jsp module 
jsp-module.sonar.projectName=Jsp Module 
jsp-module.sonar.projectBaseDir=.
jsp-module.sonar.language=jsp
jsp-module.sonar.sources=WebContent

# Html module 
html-module.sonar.projectName=Html Module 
html-module.sonar.projectBaseDir=.
html-module.sonar.language=web
html-module.sonar.sources=WebContent

#Xml module 
xml-module.sonar.projectName=Xml Module 
xml-module.sonar.projectBaseDir=.
xml-module.sonar.language=xml
xml-module.sonar.sources=WebContent

3.测试结果从web上访问如下:
【代码质量管理开源平台】sonar的安装以及使用

补充:sonar集成阿里的p3c规则

1.下载插件

到https://github.com/mrprince/sonar-p3c-pmd/releases 下载jar包即可

2.jar放在sonarqube-6.7.6\extensions\plugins目录下

3.重启sonarqube

4.到网页规则搜索p3c,如下

【代码质量管理开源平台】sonar的安装以及使用

5. 创建规则,不用选文件,如下:

【代码质量管理开源平台】sonar的安装以及使用

6.接下来激活p3c规则 (选择上面的创建的p3c,同时搜索未激活的p3c,然后激活即可。如果p3c也需要即可sonar的自带规则就不要加搜索条件,选择所有的规则)

【代码质量管理开源平台】sonar的安装以及使用

7.查看p3c激活的规则 (48条)

【代码质量管理开源平台】sonar的安装以及使用

8. 到质量配置设为java默认规则即可

【代码质量管理开源平台】sonar的安装以及使用

9.简单的测试

sonar自带的与p3c规则最明显的区别是:

str.equals(“xxx”)在p3c会被检测,在自带规则不会被检测到。

System.out.print… 会被自带规则检测到,p3c不会检测到。文章来源地址https://www.toymoban.com/news/detail-446944.html

到了这里,关于【代码质量管理开源平台】sonar的安装以及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QMS-云质-质量管理软件-QMS软件-如何选择质量管理软件?

    -云质信息原创文章,转载请注明来源- 阅读: QMS,质量管理软件,如何选择质量管理软件,质量管理软件厂商,国内质量管理软件,QMS软件,企业数字化转型,质量管理平台,数字化质量管理建设,数字化质量软件 在谈如何选择之前,我们先谈一谈企业导入质量管理

    2024年02月02日
    浏览(71)
  • 项目管理之项目工作的质量管理

    在当今的商业环境中,质量成为了企业成功的关键因素之一。项目管理作为企业管理的重要手段,如何管理项目工作的质量也成为了项目管理的重要内容。本文将结合项目管理方法论,探讨如何管理项目工作的质量,以期为项目经理提供一些参考和启示。 项目管理方法论是一

    2024年02月06日
    浏览(39)
  • 第12章 项目质量管理

    项目质量管理包括把组织的质量政策应用于规划、管理、控制项目和产品质量要求,以满足干系人目标的各个过程。此外,项目质量管理以执行组织的名义支持过程的待续改进活动。项目质量管理需要兼顾项目管理与项目可交付成果两个方面,它适用于所有项目,无论项目的

    2024年01月22日
    浏览(49)
  • 华为质量管理:从产品质量到用户体验,Kano模型成为新方向

    目录 前言 华为质量管理的四个阶段 基于 IPD 如何做质量管理呢? CSDN相关课程 作者简介 今天继续来谈谈华为流程体系中的质量管理过程。 通常来说质量具体是指产品的质量,也就是产品的使用价值及其属性。 产品再细分的话可以分为三个层次,分别是: 第一层次是核心产

    2024年02月11日
    浏览(36)
  • 银行数据治理:数据质量管理实践

    现代商业银行日常经营活动中积累了大量数据,这些数据除了支持银行前台业务流程运转之外,越来越多地被用于决策支持领域,风险控制、产品定价、绩效考核等管理决策过程也都需要大量高质量数据支持。银行日常经营决策过程的背后,实质是数据的生产、传递和利用过

    2024年02月09日
    浏览(48)
  • hive数仓-数据的质量管理

    版本20231116 要理解数据的质量管理,应具备hive数据仓库的相关知识 数据的质量管理,表现保障在数据的健康性,即满足消费者期望程度,体现在他们对数据的使用预期,只有达到预期才能满足决策层的参考。 大数据大而价值密度低,在有效信息数据挖掘上,可能会出现错误

    2024年01月20日
    浏览(46)
  • QMS质量管理系统是什么?

    QMS质量管理系统是一种用于管理和优化企业质量管理的软件系统,在现代企业中,质量管理是非常重要的环节。 1. QMS系统的概念 QMS系统是一种用于管理和优化企业质量管理的软件系统。它可以帮助企业制定和实施质量管理策略、管理和控制质量过程、收集和分析质量数据、

    2024年02月14日
    浏览(40)
  • 中车质量管理体系

    中车唐山机车车辆有限公司(简称中车唐山)以高速动车组项目为载体,创建并持续完善 “1+1+3” 质量管理体系(一个方针、一种理念、三个支撑机制),促进公司产品和服务质量全面提升,为中国高铁从跟随者、追赶者到引领者的跨越式发展做出了重要贡献。 一、探索构

    2024年02月09日
    浏览(45)
  • Hive的数据质量管理与监控

    数据质量管理和监控是大数据技术的核心环节之一,它涉及到数据的整合、清洗、验证和监控等方面。Hive是一个基于Hadoop的数据仓库工具,它可以帮助用户对大量数据进行查询和分析。在Hive中,数据质量管理和监控的重要性不容忽视。 在大数据环境中,数据质量问题成为了

    2024年04月25日
    浏览(34)
  • 软考高项:项目质量管理真题及答案

    1.某公司在教育服务领域持续发展,已有丰富的项目经验,近日新立项的教育服务项目需要规划质量管理,则应采用( )的方法。 A、成本收益分析法 B、质量成本法 C、标杆对照法 D、实验设计 2.关于质量保证和质量控制的描述,不正确的是( )。 A、质量保证是为了满足质量目标

    2024年02月14日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包