SonarQube 9.x集成阿里p3c代码规范检测java代码;

2023-11-10


前言

因为我们公司后端主用的是java语言,在进行sonar代码检测的时候默认使用的是sonar检测规则,种种原因最后需要使用阿里的p3c代码规范来进行检测java代码;

sonarqube 9.x是没有集成p3c代码规范的
在这里插入图片描述


一、下载p3c-pmd插件

代码地址:
https://github.com/caowenliang/sonar-pmd-p3c

[root@localhost tmp]# git clone https://github.com/caowenliang/sonar-pmd-p3c.git
[root@localhost tmp]# cd sonar-pmd-p3c/sonar-pmd-plugin/
[root@localhost sonar-pmd-plugin]# ll 
total 12
-rw-r--r-- 1 root root 4908 Jan 16 17:38 pom.xml
drwxr-xr-x 4 root root 4096 Jan 16 17:38 src

#编译打包 需要有maven环境
[root@localhost sonar-pmd-p3c]# mvn clean install -Dmaven.test.skip=true

在这里插入图片描述

打完包后在当前目录的target目录会有一个"sonar-pmd-plugin-3.2.1.jar"包,需要将其下并放到sonarqube的“Plugin”目录下然后重启sonar加载插件

在这里插入图片描述
重启后可以看到sonar-pmd-plugin插件已经加载了


这里我已经把软件包编译好了,需要可以免费获取:
sonar-pmd-plugin-3.2.1.jar



二、sonarqube配置使用p3c规则检测

在这里插入图片描述

sonar默认使用的是自己的规则进行代码检测的,没有使用p3c,所以需要在"质量配置"处新建一个配置并使用p3c的检测规则;

1.新建质量配置

"质量配置"-->创建
在这里插入图片描述


创建完成后默认是没有任何规则的,需要添加p3c的检测规则
在这里插入图片描述
在这里插入图片描述


可以看到"[p3c]xxx"开头的检测规则,下一步需要批量激活这些规则
在这里插入图片描述
在这里插入图片描述


2.将创建好的p3c检测规则设置为默认质量配置

在这里插入图片描述
这样就 配置完成 了。等待下次 sonar 扫描时就能直接使用这个p3c质量配置;




注1

p3c规则都属于异味,sonar 扫描代码后,在类型 “异味” 可以找到,分“阻断”、“严重”、“主要” 3个严重等级。

在这里插入图片描述


下面是导出的PDF分析报告,可以看出这次检测使用的是我们配置的p3c规则;
在这里插入图片描述



注2

在第一步maven编译打包p3c-pmd插件时可能会报如下错误
在这里插入图片描述
这是因为这个插件生成的大小为9兆,而默认作者给的大小是8兆,所以会报错;

解决办法:

[root@localhost sonar-pmd-plugin]# vim /tmp/sonar-pmd-p3c/sonar-pmd-plugin/pom.xml
<artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-plugin-size</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>verify</phase>
            <configuration>
              <rules>
                <requireFilesSize>
                  #修改此处即可,默认为8000000字节
                  <maxsize>800000000</maxsize>
                  <minsize>4200000</minsize>
                  <files>
                    <file>${project.build.directory}/${project.build.finalName}.jar</file>
                  </files>
                </requireFilesSize>
              </rules>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SonarQube 9.x集成阿里p3c代码规范检测java代码; 的相关文章

  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 嵌入式操作系统风云录:历史演进与物联网未来.

    嵌入式操作系统风云录 历史演进与物联网未来 何小庆 著 图书在版编目 CIP 数据 嵌入式操作系统风云录 历史演进与物联网未来 何小庆著 北京 机械工业出版社 2016 10 ISBN 978 7 111 55085 3 嵌 何 实时操作系
  • Java项目结构概述

    文章目录 前言 一 项目结构介绍 1 单模块项目结构 2 多模块项目结构 3 分层结构 4 MVC项目结构 5 插件化结构项目 6 微服务架构结构 总结 前言 构建一个良好的Java项目结构是开发高质量 可扩展和易维护应用程序的重要基础 在
  • skimage图像的读取与保存

    首先 说明用opencv与skimage io imread读取和保存图片的区别 读取和保存后的都是numpy格式 但cv2的读取和存储格式是BGR 而skimage的读取和存储格式是RGB 1 读取图片 skimage读取图片 img s
  • The deduced formulas of Conv1d and ConvTranspose1d

    torch nn Conv1d in channels out channels kernel size stride 1 padding 0 dilation 1 groups 1 bias True In the simplest ca
  • 基于树莓派的python界面开发实例教程

    基于树莓派的python界面开发实例教程 环境测试 添加label实例 时钟程序 添加天气 环境测试 点击树莓派的开始菜单 找到programming Python3 IDLE 点击打开 打开后如下 在home pi下面建立home pi
  • UNIX网络编程卷一 学习笔记 第十七章 ioctl操作

    ioctl函数传统上一直作为那些不适合归入现有已定义的类别的系统接口 POSIX正在通过创建特定的包装函数来代替ioctl函数的某些功能 以取而代之的是那些已被POSIX标准化的函数 例如 Unix终端接口传统上使用ioctl函数访问 而P
  • 测试工程师需要具备哪些技能

    测试工程师需要具备以下几项技能 软件测试方法和技巧 测试工程师需要了解不同的测试方法 如黑盒测试 白盒测试 回归测试等 编程能力 有些测试工程师需要编写自动化测试脚本 因此需要具备一定的编程技能 问题诊断能力 测试工程师需要能够识别和定位软
  • 【leetcode刷题】27、移除元素(C++)

    27 移除元素 原题地址 https leetcode cn problems remove element 给你一个数组 nums 和一个值 val 你需要 原地 移除所有数值等于 val 的元素 并返回移除后数组的新长度 不要使用额外的
  • 华为OD2023(A卷)基础题34【新词挖掘】

    知识图谱新词挖掘 题目描述 小华负责公司知识图谱产品 现在要通过新词挖掘完善知识图谱 新词挖掘 给出一个待挖掘文本内容字符串content和一个词的字符串word 找到content中所有word的新词 新词 使用词word的字符排列形成的
  • 使用HTMLTestRunner没有生成测试报告

    原因 没有执行 main函数中的程序 只执行了测试用例 在main函数上方右键运行的是整个py文件 在main函数下方右键运行的是py文件中的测试用例 如果在上方点击出现的和下方点击的一样需要在右上角设置并添加文件路径
  • element 限制文件上传类型

  • Golang依赖注入提升开发效率!

    导语 依赖注入并不是java独有的 也不是web框架独有的 本文用通俗易懂的语言讲解什么是依赖注入 为什么需要依赖注入 以及go语言如何使用依赖注入来提升开发效率 一 什么依赖注入 依赖注入 Dependency Injection 也叫D
  • C++拷贝构造、赋值构造详解

    一 前言 写一个用到指针的程序时 被拷贝 赋值 析构函数坑了一波 网上查相关博客 发现关于拷贝 赋值构造函数调用时机大多都有错误 因此决定自己总结撸一发博客 A A a 拷贝构造函数 A const A a 拷贝构造函数 A operato
  • 谈谈区块链入门技能(三):Layer 2区块链浏览器如何使用?Tokenview

    继介绍了比特币以及EVM系列区块链浏览器使用指南 今天我们再来 介绍一下Layer 2系列浏览器如何使用 Layer 1 是基础区块链 以太坊和比特币都是Layer1区块链因为它们是各种Layer2网络构建的底层基础 Layer2项目包括以
  • 第二个作业:贝叶斯估计

    第二个作业 贝叶斯估计实战 第一小题 试使用西瓜数据集3 0作为训练集 通过AIC准则构建一个贝叶斯网 我先看看scikit learn官网上关于贝叶斯估计 特别是贝叶斯网的构建方面的包和函数 然后再看看这个AIC准则具体是怎么样的 如何构
  • 操作系统5-处理机调度——lab6调度器

    大纲 处理机调度概念 处理机调度 调度时机 调度准则 调度算法 实时调度 多处理器调度 优先级反转 CPU调度的背景 什么是CPU调度 为什么会有这个概念 要研究它的什么 CPU调度的背景是进程切换 当我们说进程切换 其概念是保存当前进程在
  • stm32 CRC-16校验代码,单片机ModBUS-CRC16校验

    stm32系列内部均带有硬件CRC 不过为了方便移植 建议使用纯计算的方式 进行CRC 16计算 可用于ModBUS通信 提供两种实现方法的代码 1 实时计算 CRC 16 耗时多 这种方式耗时会比较多 优点是占用Flash RAM小 CR
  • umi3.5新特性之提速方案mfsu

    前几天 umi 插件化的企业级前端应用框架 正式发布了3 5版本 此次更新带来了一个全新的功能 mfsu 一 mfsu是什么 mfsu是一种基于webpack5新特性Module Federation 模块联邦 的打包提速方案 开启mfsu
  • 域环境的搭建

    域环境 内网渗透测试 很大的程度上就是域渗透测试 搭建域环境 这里使用Windows Server 2012 R2搭建windwos域环境 Windows Server 2012 R2 Windows Server 2008 R2 wind
  • SonarQube 9.x集成阿里p3c代码规范检测java代码;

    文章目录 前言 一 下载p3c pmd插件 二 sonarqube配置使用p3c规则检测 1 新建质量配置 2 将创建好的p3c检测规则设置为默认质量配置 注1 注2 前言 因为我们公司后端主用的是java语言 在进行sonar代码检测的时