IDEA 集成 Sonar 完整流程

2023-11-06

目录

背景

相关的模块及关系

插件安装

SonarQube 启动

SonarQube 创建工程

插件配置

1.打开插件通用配置界面

 2.点击 + 号添加 SonarServer

 3.下一步配置认证信息

4.SonarLint 项目配置

maven-sonar 插件

1.添加 maven-sonar 插件

2.添加 sonar 的 profile

3.工程 pom.xml 配置插件版本

maven 执行扫描命令

扫描结果查看

启示录

背景

最近关注代码质量管理工具,用过了阿里的开发者规范插件后,又看了下 Sonar ,弄明白这个工具的使用流程花费了小半天的时间,这里整理下其中的盲点。说来也奇怪,搜索到的 IDEA 集成 Sonar 的文章也不少,就是没有一篇能教会我这个初次接触 Sonar 的人。还得靠自己连蒙带猜地各种尝试,才搞明白整个过程。

相关的模块及关系

  • Sonar :该工具的统称
  • SonarLint:IDEA 的 Sonar 插件
  • SonarQube:一个 Web 应用,服务端,统一管理 Sonar 扫描结果、扫描规则配置
  • sonar-maven-plugin:Sonar 客户端,从 SonarQube 服务器获取扫描规则,并上传扫描结果到 SonarQube 平台

插件安装

插件的安装比较简单,这个基本上不会有问题,在插件仓库中搜索 “SonarLint” 插件,找到插件后点击安装即可。本机已经安装过了,结果如下:

在这里插入图片描述

 可能是我本机使用的 IDEA 版本【2016.3.1】比较老,所以插件安装完成后,只有在某个文件编辑页面右键才有 “Analyze with SonarLint” 操作,而在工程上右键,网上都说菜单位于 Analyze 中:

在这里插入图片描述

 我的 IDEA 中找不到这个操作,但是选中某个文件夹后,可以通过快捷键【Ctrl+Shif+S】对该目录进行扫描,通过进度条可以知道它扫描的是整个目录:

在这里插入图片描述

 在单个文件中,右键有扫描操作:


注意点:插件安装成功后,可以直接进行扫描,虽然当前版本的 IDEA 工程右键没有这个操作,但是快捷键可以用,说明插件安装成功。

SonarQube 启动

SonarQube 是 Sonar 的 Web 管理应用,非解压版的,下载地址 Download | SonarQube

由于这是一个 Web 应用,需要用到数据库,需要创建一个数据库,名称没有限制,需要修改配置文件中的数据库连接信息。操作过程:

  1. 本地数据库用 MySQL ,创建一个名为 sonar 的数据库
  2. 解压 SonarQube ,定位到配置文件目录 E:\software\sonarqube-7.6\conf
  3. 修改 sonar.properties 文件,在 28 行添加如下配置:

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

4、进入 bin 目录找到跟自己主机一致的目录 E:\software\sonarqube-7.6\bin\windows-x86-64
5、运行 StartSonar.bat 启动 SonarQube

注意点:StartSonar.bat 会启动一个 DOS 窗口运行,首次启动时耗时较长。此外,关闭 DOS 界面时,后台对应的 Java 进程不会结束。

不会结束的坑就是:端口会继续被占据。如果再次点击启动文件,则启动操作会闪退,此时可以在 log 目录中查看日志定位错误。因此,没有事情的话,不要关闭它的界面,如果必须关闭后重启,那么关闭后手动打开进程管理器,停掉对应的 Java 进程。

SonarQube 创建工程

SonarQube 启动后,访问 http://localhost:9000 进入其登录界面,输入 sonar.properties 中配置的帐号和密码后进入主界面:

在这里插入图片描述 SonarQube 是以工程为单位进行扫描管理的,第一步需要点击 A 前面的 + 号,创建一个新工程:

在这里插入图片描述

注意点:如果插件配置认证方式为 Token ,那么这里需要记录该项目的 Token 信息。

插件配置

IDEA 中需要配置 SonarQube 的访问地址和工程,配置方法为:

1.打开插件通用配置界面

在这里插入图片描述

 2.点击 + 号添加 SonarServer

在这里插入图片描述

 3.下一步配置认证信息

在这里插入图片描述 认证方式有两种,Token 和密码,Token 即前面创建项目时生成的 Token 信息。这里选择密码方式,输入 SonarQube 访问密码:

在这里插入图片描述

4.SonarLint 项目配置

在这里插入图片描述

 至此,IDEA 插件 SonarLint 和 SonarQube 关联配置完成。

maven-sonar 插件

maven-sonar 插件,本质是一个 sonar-runner 扫描工具,也是一个客户端。根据 官方 maven-sonar 插件配置教程SonarScanner for Maven | SonarQube Docs 完成 Maven setting.xml 配置。

1.添加 maven-sonar 插件

在 pluginGroups 节点下,添加一个子节点:

<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>

2.添加 sonar 的 profile

在 profiles 节点下添加一个子节点,配置 sonar 插件的主机 URL:

<profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <!-- Optional URL to server. Default value is http://localhost:9000 -->
            <sonar.host.url>
              http://localhost:9000
            </sonar.host.url>
        </properties>
    </profile>

3.工程 pom.xml 配置插件版本

在待扫描工程的 pom.xml 文件中,添加 build 插件,配置 maven-sonar 插件版本:

 <plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.6.0.1398</version>
  </plugin>

maven 执行扫描命令

直接运行 maven 生命周期中的各种方法,都不能完成 soanr 代码扫描及结果上传。官方是通过执行mvn sonar:sonar 命令完成的,所以想到的办法是在 IDEA 的 termianl 控制界面执行该命令,测试它的确能完成扫描结果的上传:

在这里插入图片描述

 执行成功结果为:

在这里插入图片描述 maven-sonar 插件使用的注意点:不能对 SVN 服务器端版本较低的 SVN 项目进行扫描,否则会执行失败。
错误信息如下:

Error when executing blame for file src/main/java/com/xxxx/SpringContextUtil.java: svn: E200007: Retrieval of mergeinfo unsupported by svn:url

网上找的解决办法不生效,所以只能对本地非 SVN 项目进行代码扫描。

扫描结果查看

mvn sonar:sonar 命令执行完成后,访问 SonarCube 主页能查看最新的扫描结果:

在这里插入图片描述

 Issues 菜单下,选择 All 而不是 My Issues ,貌似它可以对扫描到的 Issues 进行分配,这里能看到所有的问题。
Project 菜单下,呈现各个项目的,这里使用命令执行后,自动创建了一个与工程应用名相同的项目:

在这里插入图片描述

启示录

反复执行扫描后,发现 SonarLint 插件的功能跟 maven-sonar 插件是一样的。理论上来讲,通过 SonarLint 功能,即对某个功能执行 Analyze with SonarLint 与在终端执行 mvn sonar:sonar 命令效果应该一样才对。

maven 的 setting.xml 中只配置了 SonarQube 的 host.url ,并没有指定项目名称,所以执行完成 mvn sonar:sonar 命令后,在 Web 页面会自动创建一个与扫描工程名称一样的项目。

而前面对插件配置的 SonarQube Server 和 project 指定是针对 Analyze with SonarLint 的,手动执行该操作后,理论上应该在对应的项目中看到扫描结果的。可惜,我这个 IDEA 版本下没有完成扫描结果的上传。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDEA 集成 Sonar 完整流程 的相关文章

随机推荐

  • Unity InputSystem (一)

    什么是InputSystem InputSystem 是 2019 年 Unity 新推出的插件 输入系统包实现了一个系统来使用任何类型的输入设备来控制你的 Unity 内容 它旨在成为 Unity 的经典输入管理器更强大 更灵活 更可配置
  • C++调用类成员函数

    ifndef CLASS H define CLASS H class CanExtTxPDO t private unsigned char i public unsigned char buffer 10 CanExtTxPDO t u
  • 数据结构入门-二叉树篇(一)

    144 二叉树的前序遍历 给你二叉树的根节点 root 返回它节点值的前序遍历 示例 输入 root 1 null 2 3 输出 1 2 3 前序遍历是二叉树遍历的一种 首先访问根节点 然后遍历左子树 最后遍历右子树 可以记作根左右 解题思
  • PyTorch自然语言处理

    特点 展示如何使用基于 Python 的深度学习库 PyTorch 应用这些方法 演示如何使用 PyTorch 构建应用程序 探索计算图和监督学习范式 掌握 PyTorch 优化张量操作库的基础知识 概述传统的 NLP 概念和方法 学习构建
  • python将折线平滑为曲线

    目录 曲线的曲率介绍 平滑方法介绍 1 环境及模块介绍 2 代码示例 3 整体代码 曲线的曲率介绍 曲线的曲率 curvature 就是针对曲线上某个点的切线方向角对弧长的转动率 通过微分来定义 表明曲线偏离直线的程度 数学上表明曲线在某一
  • 编译器预定义总结.

    http sourceforge net p predef wiki Compilers ACC Type Macro Identification ACC Altium MicroBlaze C Type Macro Format Des
  • Faq about multimedia

    VCN Video Compression Networking Glossary This is a collection of often used and misused technical terms regarding video
  • 【基础知识】11、github上传本地代码

    第一步 下载git bash 下载链接 按步骤安装即可 第二步 配置git bash 一 输入ssh keygen t rsa C 24428078 qq com 获取钥匙 邮箱为github注册的邮箱 输入上述命令时注意空格 出现下面界面
  • bootstrap引入

  • pww区域连接特征提取算法

    主题思想 任何一个图像 肯定由多个或一个区域 每个区域在横向扫描时 会有分裂和合并 比如圆环 顶部有一个分裂点 底部有一个合并点 没有分裂合并的图形 就是简单的凸图像 很容易通过外形识别 而复杂的图像 就是凹的 就需要分裂合并点来识别 旋转
  • 动作捕捉(Motion Capture)文件BVH的解读笔记

    Bvh里面的JOINT 以及ROOT 都表示一个坐标空间 我们称之为关节坐标空间 在这个坐标空间里 它有下一级的子坐标空间 也就是下一级的JOINT 子坐标空间的原点位置由子JOINT的OFFSET字段指明 也就是说一个JOINT的OFFS
  • Linux系统内核文件Cache管理机制简介

    1 前言 自从诞生以来 Linux 就被不断完善和普及 目前它已经成为主流通用操作系统之一 使用得非常广泛 它与 Windows UNIX 一起占据了操作系统领域几乎所有的市场份额 特别是在高性能计算领域 Linux 已经成为一个占主导地位
  • 一文让前端搞懂shell编程

    概述 前端程序员有时会遇到部署项目的情况 有时需要看懂后台或者运维写的脚本 如果转型AI 数据分析和模型训练也经常用到shell编程 掌握shell编程 你的编程之路会越走越宽 shell 解析器 sudo cat etc shells t
  • Win7下使用U盘安装Ubuntu16.04双系统图文教程(亲测)

    安装步骤 1 下载Ubuntu 16 04镜像软件 2 使用ultraISO软件制作U盘启动盘 3 利用U盘启动盘来安装Ubuntu系统 4 使用EasyBCD创建启动系统启动引导 可以省略 5 重启系统即可 一 下载ubuntu16 04
  • 使用Semaphore 实现一个简单的限流器

    使用Semaphore 实现一个简单的限流器 java api Java的api中 提供了semaphore这个线程同步的辅助类 用来控制同时访问共享资源的线程数量 Semaphore提供的主要方法如下 void acquire 获取一个信
  • NUC10 i7 黑苹果Big Sur 11.4 + win10 双系统安装指南

    说明 硬件 Intel NUC 10代 i7 10710U 系统说明 Mac OS Big Sur 11 4 Windows 10 注 本文默认已经安装好windows 安装过程就和普通的单系统安装步骤一样 安装步骤略 其他说明 由于个人知
  • 协同过滤与矩阵分解

    协同过滤算法的基本原理 用户行为数据是推荐系统最常用 也是最关键的数据 用户的潜在兴趣 用户对物品的评价好坏都反映在用户的行为历史中 而协同过滤算法 就是一种完全依赖用户和物品之间行为关系的推荐算法 我们从它的名字 协同过滤 中 也可以窥探
  • 2022高教杯思路合集!!全国大学生数学建模竞赛

    2022高教杯将于9 15开赛 思路贴将于晚10点前发布 粉丝可见 17日0 00转免 国一F奖3年数学建模经验团队 交流Q群 882663918 下文是2022年美赛的思路示例 要求由于公司的规定 ICM公司无法与您的团队分享关于他们的人
  • android 全局悬浮窗 可点击_Hi Translate 全局翻译外语 App 上的内容

    英文不太好的朋友可能在使用某些国外 App 在无中文语言支持的时候 也许 Hi Translate 这款 Android 应用可以帮助到你 这款应用不是简单的外语翻译 它可以在你使用满是外语的 App 时 帮助你实现全局页面翻译成中文 Hi
  • IDEA 集成 Sonar 完整流程

    目录 背景 相关的模块及关系 插件安装 SonarQube 启动 SonarQube 创建工程 插件配置 1 打开插件通用配置界面 2 点击 号添加 SonarServer 3 下一步配置认证信息 4 SonarLint 项目配置 mave