当前位置: 首页 > backend >正文

一文了解sonar的搭建和使用

sonar的简述

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。

通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。

通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

工作原理

SonarQube 并不是简单地将各种质量检测工具的结果(例如 FindBugs,PMD 等)直接展现给客户,而是通过不同的插件算法来对这些结果进行再加工,最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理。

SonarQube 在进行代码质量管理时,会从七个纬度来分析项目的质量。

官网地址:https://www.sonarqube.org/

不同版本如何进行升级,可以参考以下链接。

http://docs.sonarqube.org/display/SONAR/Upgrading
http://docs.sonarqube.org/display/SONARQUBE55/Upgrading

jdk1.7最高只支持到5.5

SonarQube的汉化包参考链接:https://github.com/xuhuisheng/sonar-l10n-zh

兼容列表如下:

SonarQube9.0
sonar-l10n-zh9.0
SonarQube8.08.18.28.38.48.58.68.78.88.9
sonar-l10n-zh8.08.18.28.38.48.58.68.78.88.9
SonarQube7.07.17.27.37.47.57.67.77.87.9
sonar-l10n-zh1.201.211.221.231.241.251.261.271.281.29
SonarQube6.06.16.26.36.46.56.66.7
sonar-l10n-zh1.121.131.141.151.161.171.181.19
SonarQube5.45.55.6
sonar-l10n-zh1.91.101.11
SonarQube4.04.1
sonar-l10n-zh1.71.8
SonarQube3.13.23.33.43.53.63.7
sonar-l10n-zh1.01.11.21.31.41.51.6

环境搭建

以MySQL为例。

  1. sonar.properties配置

    文件目录位置:sonar根目录/conf/sonar.properties

    #database
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    sonar.sorceEncoding:UTF-8
    sonar.login:admin
    sonar.password:adminsonar.jdbc.minIdle=2
    sonar.jdbc.maxIdle=5# WEB SERVER
    sonar.web.port=9000
    sonar.search.host=127.0.0.1
  2. 数据库配置

    按照上文配置的数据库名称sonar,在对应的MySQL中创建名字为sonar的数据库。

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY'sonar';

允许用户名sonar,密码为sonar的用户从任何主机连接到MySQL服务器的sonar数据库的任何库表

GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY'sonar';
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
FLUSH PRIVILEGES;
  1. 启动服务

    启动文件位于sonar根目录/bin目录下,里面包含了各种不同环境下的启动文件信息。

    启动命令:sonar.sh/sonar.bat start/stop/restart

    启动成功的标志

    2017.04.02 10:15:49 INFO  ce[o.s.c.p.PluginInfo] Plugin [l10nzh] defines 'l10nen' as base plugin. This metadata can be removed from manifest of l10n plugins since version 5.2.
    2017.04.02 10:15:50 INFO  ce[o.s.s.c.q.PurgeCeActivities] Delete the Compute Engine tasks created before Tue Oct 04 10:15:50 CST 2016
    2017.04.02 10:15:50 INFO  ce[o.s.ce.app.CeServer] Compute Engine is up
    2017.04.02 10:15:51 INFO  app[o.s.p.m.Monitor] Process[ce] is up
    

    输入http://ip:9000,即可访问sonar主目录

  2. 启动异常可能的原因:

  • 未创建数据库
  • jar包冲突
    • 有可能存在不同版本号的相同jar包
    • 同类型的隐藏文件(如:同一目录下包含sonar-css-plugin.jar._sonar-css-plugin.jar两个文件jar)
  • 缺少对应的数据库驱动jar

界面简介

  • 用户名登录

    默认账户密码:admin,admin

  • 控件配置

  • 菜单:问题-简述。

  • 菜单:指标-根据条件搜索项目使用

  • 菜单:代码规则-不同语言的代码检测规则定义。

  • 菜单:质量配置-对不同语言的代码检测规则配置。默认sonar way配置。未做深入详细调研。

  • 菜单:质量阈-代码检测指标定义。达到条件时项目模块变红。通过质量阈指标则项目为绿色。

  • 菜单:配置-管理员权限可以看到此菜单,包含了最基本的用户,项目,插件的配置等信息。插件下载可以不通过sonar方式进行安装。

  • 菜单:其他(项目比较)-可以对多个不同的项目进行各个不同指标的比对查看。

  • 用户-我的账号:可以配置邮件接受提醒。

项目访问配置

需要配置maven的settings.xml文件和对应项目的根pom.xml文件即可。

主子模块的项目也只需配置根pom.xml文件即可。

  1. settings文件

    配置内容:数据库连接地址,sonar访问地址。

	<settings><profiles><profile><id>sonar</id><activation><activeByDefault>true</activeByDefault></activation><properties><sonar.jdbc.url>jdbc:mysql://172.30.21.39:3306/sonar?characterEncoding=utf-8</sonar.jdbc.url><sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver><sonar.jdbc.username>sonar</sonar.jdbc.username><sonar.jdbc.password>sonar</sonar.jdbc.password><sonar.host.url>http://172.30.21.39:9000</sonar.host.url></properties></profile></profiles>
</settings> 
  1. pom.xml配置

    <properties>
    <!--sonar 语言配置-->
    <sonar.language>java</sonar.language>
    <sonar.projectName>项目名称</sonar.projectName>
    </properties>
    <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>2.4</version></plugin></plugins>
    </build> 

    maven项目会自动生成sonar.projectKey,所以不需要配置

    注意:同一个project不支持多种语言的分析,这个project要么js要么java,就是这样。需要分开run。

使用的基本操作

配合maven的项目使用配置,添加单元测试的命令使用:

  1. mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
  2. mvn sonar:sonar(此命令可以单独使用,仅检测代码问题,不创建覆盖率报告)

问题查看

  1. 单元测试覆盖率查看(有问题的单元测试,类中的覆盖率展示)
  2. 代码问题查看(bug,坏味道等)
  3. 代码问题的解决方式(忽略,指定解决人,自定义该问题的等级)
  4. 查看历史检测记录,配置——项目——后台任务,可以查看所有的项目检测历史记录。

用户管理部分配置

允许自行进行注册账户

http://www.xdnf.cn/news/14134.html

相关文章:

  • 基于openlayers开发北斗应用支撑平台
  • 1.2、SDH的复用结构
  • 2025年真实面试问题汇总(三)
  • 开启奇妙的 VR 刀剑博物馆之刀剑世界​
  • 大模型及agent开发1——基础知识及实现具备Funcation Calling功能的智能电商客服
  • 在C#中的锁
  • druid 数据库密码加密
  • FEMFAT许可与软件版本对应关系
  • 深度解析一下 llama.cpp 的源代码
  • 每日算法刷题Day30 6.13:leetcode二分答案2道题,用时1h10min
  • 打印机共享问题一键解决,附带设置维护工具
  • Python Day50 学习(仍为日志Day19的内容复习)
  • kafka版本升级3.5.1-->3.9.1(集群或单体步骤一致)
  • B/S架构
  • 上海市计算机学会竞赛平台2022年4月月赛丙组步步高
  • Qoppa Software提供的15款PDF产品组件科学学习
  • HarmonyOS 组件复用面试宝典 [特殊字符]
  • 【技术工具】源码管理 - GIT工具
  • Java 传输较大数据的相关问题解析和面试问答
  • ffmpeg subtitles 字幕不换行的问题解决方案
  • LeetCode 209.长度最小的子数组
  • 常见的数据处理方法有哪些?ETL中的数据处理怎么完成
  • 海马优化算法优化支持向量回归(SVR)模型项目
  • DAO 代码说明文档
  • 【计算机系统结构】期末复习
  • JVM-垃圾回收
  • ES6+核心特性
  • 数据可视化——一图胜千言
  • [python]pycddlib使用案例
  • Python小工具开发实战:从零构建自动化文件管理器的心得与体悟