java pmd 插件下载_sonar-pmd插件集成p3c-pmd

article/2025/9/30 21:16:03

基于官方插件项目sonar-pmd进行改造,这篇文章有详细说明,这个工程有低版本的实现。

每条规则对应的3个配置文件:

src\main\resources\org\sonar\l10n\pmd.properties

src\main\resources\org\sonar\plugins\pmd\rules.xml

src\main\resources\com\sonar\sqale\pmd-model.xml

注意:

properties文件编码问题

The problem is that the Java properties files are/must/should been encoded in ´ISO-8859-1´ (Latin-1) by default. Thats an Java requirement.

可以利用JDK自动的工具native2ascii进行转换,例如: native2ascii -encoding utf8 zh.properties .normal.properties

不进行转换的情况下:第一,页面展示将是乱码;第二,有可能导致数据库报错ERROR: value too long for type character varying(200),类似——

### Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(200)

### The error may exist in org.sonar.db.rule.RuleMapper

### The error may involve org.sonar.db.rule.RuleMapper.updateDefinition-Inline

### The error occurred while setting parameters

### Cause: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(200)

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)

at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)

at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:67)

at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:144)

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)

at com.sun.proxy.$Proxy53.updateDefinition(Unknown Source)

at org.sonar.db.rule.RuleDao.update(RuleDao.java:181)

at org.sonar.server.rule.RegisterRules.update(RegisterRules.java:782)

at org.sonar.server.rule.RegisterRules.registerRule(RegisterRules.java:384)

at org.sonar.server.rule.RegisterRules.start(RegisterRules.java:133)

at org.sonar.core.platform.StartableCloseableSafeLifecyleStrategy.start(StartableCloseableSafeLifecyleStrategy.java:40)

at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)

at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)

at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)

at org.picocontainer.behaviors.Stored.start(Stored.java:110)

at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)

at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)

at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)

at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)

at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:90)

at org.sonar.server.platform.platformlevel.PlatformLevelStartup.access$001(PlatformLevelStartup.java:48)

at org.sonar.server.platform.platformlevel.PlatformLevelStartup$1.doPrivileged(PlatformLevelStartup.java:85)

at org.sonar.server.user.DoPrivileged.execute(DoPrivileged.java:46)

at org.sonar.server.platform.platformlevel.PlatformLevelStartup.start(PlatformLevelStartup.java:82)

at org.sonar.server.platform.PlatformImpl.executeStartupTasks(PlatformImpl.java:198)

at org.sonar.server.platform.PlatformImpl.access$400(PlatformImpl.java:46)

at org.sonar.server.platform.PlatformImpl$1.lambda$doRun$1(PlatformImpl.java:122)

at org.sonar.server.platform.PlatformImpl$AutoStarterRunnable.runIfNotAborted(PlatformImpl.java:370)

at org.sonar.server.platform.PlatformImpl$1.doRun(PlatformImpl.java:122)

at org.sonar.server.platform.PlatformImpl$AutoStarterRunnable.run(PlatformImpl.java:354)

at java.base/java.lang.Thread.run(Thread.java:834)

Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(200)

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2532)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2267)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:312)

at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:448)

at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369)

at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:153)

at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:142)

at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:94)

at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:94)

at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)

at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)

at org.apache.ibatis.executor.ReuseExecutor.doUpdate(ReuseExecutor.java:52)

at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)

at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)

at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)

... 29 common frames omitted

默认sonar-pmd插件的分类是异味

在rules.xml文件中对应的rule属性里添加bug, 官方说明

最终效果——

d1def55ad436


http://chatgpt.dhexx.cn/article/UkGGp8gn.shtml

相关文章

java pmd eclipse_eclipse插件之Findbugs、Checkstyle、PMD安装及使用

eclipse插件之Findbugs、Checkstyle、PMD安装及使用 一、什么是Findbugs、checkstyle、PMD Findbugs、checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用。 三者的功能…

pmd 相机 系统标定

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数…

DPDK — Userspace PMD 源码分析

目录 文章目录 目录PMD driver 通过 IGB_UIO 与 UIO 进行交互注册一个 UIO 设备PMD 的应用层实现Interrupt DPDK(中断模式) PMD driver 通过 IGB_UIO 与 UIO 进行交互 IGB_UIO 内核模块的另一个主要功能就是让用于态的 PMD 网卡驱动程序得以与 UIO 进行…

java pmd 安装_PMD-Java代码静态分析工具使用

如今,使用代码分析工具来代替人工进行代码审查,已经是大势所趋了。用于Java代码检测的工具中,不乏许许多多的佼佼者,其中PMD就是其中一款。PMD既可以独立运行,也可以以命令行的形式运行,还可以作为插件在ID…

java pmd 安装_PMD的安装及使用

PMD是一种开源分析Java代码错误的工具。 与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题。此外,…

java pmd 安装_4. PMD 使用,编译和自定义规则

一 PMD简介 PMD是一款代码静态检查工具,可以检查出很多代码中潜在的bug以及让人感到疑惑的代码,具体大家可以百度下。 二 PMD源代码下载 下载地址: 需要注意的是注意选择branch,一般选择最新的branch;然后可以用git clone下来,或者直接下载zip压缩包。 如下: 从上图也可…

java pmd 插件下载_pmd eclipse插件

PMD是Eclipse上的一款源代码分析插件,与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,它可以在不运行Java程序的情况下报告错误。pmd 支持Java、JavaScript、XML、XSL等,欢迎下载! Eclipse PMD插件更新…

java pmd checkstyle_提高代码质量 CheckStyle FindBugs PMD

注:这是一篇翻译文章,原文:How to improve quality and syntax of your Android code,为了理解连贯,翻译过程中我修改了一些陈述逻辑和顺序,同时也加了一些自己的补充。 在这片文章中,我将从工具…

【C语言】 C语言图形编程 俄罗斯方块 课程设计

程序简介 由纯C语言实现的俄罗斯方块小程序,代码长度700行,使用Turbo C图形库美化了界面,并具俄罗斯方块游戏的所有基本功能。玩家可以通过键盘的“上下左右”键移动“方块”,“空格”去翻转方块,每当方块可以将一行“…

简单c语言图形程序设计,c语言实现一些简单图形的打印

1 #define _CRT_SECURE_NO_WARNINGS 1 因为笔者采用的是VS的编译环境所以有了上面的这一句话 我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印 1 //打印自定义长度的线段 2 #include 3 intmain() 4 {5 int i = 0; 6 intn; 7 while (~scanf("%d",&…

C语言图形化编程 【二】

C语言图形编程 二 3 基本贴图3.1 声明一个存储图片的变量3.2 图片的路径3.3 显示图片3.4 透明贴图 4 鼠标操作4.1 声明一个存储鼠标信息的变量4.2 获取鼠标4.3 分类讨论鼠标消息的来源 3 基本贴图 3.1 声明一个存储图片的变量 格式: IMAGE img; //类型 变量名(你要贴的图片的…

基于C语言的图形化编程软件,图形化编程工具

原标题:图形化编程工具 1.产品介绍 唯众图形化编程工具是一款基于拖拽式图形化设计的可视化编程工具库,通过拖拽式图形化编程完成程序设计。作为一种易于掌握的图像化编程环境,是编程初学者学习和掌握程序设计方法的有力工具。用图形化编程方式去理解程序语言,可以让学生更…

C语言:编程打印图形

题目 编程打印以下图形: 代码 #include "stdio.h"void main() {char ch = A;int i,j;for(i=

c语言图形时钟编程,c语言程序+图形编程——打造简易的时钟

全程代码小编就在这里发出来了哈,最终的效果图, // c语言+图形编程 电脑时钟 //包含头文件 #include #include #include void Draw_Dial();//绘制静态的表盘 void Draw_Hand(int hour, int minute, int secend); //绘制表针 //主函数 int main() {initgraph

C语言图形编程--俄罗斯方块制作(一)详解

效果图 用C语言实现俄罗斯方块&#xff0c;需要先解决下面几个问题&#xff1a; 1、如何用C语言绘制图形界面 EasyX图形库(http://www.easyx.cn)即TC的图形库在VC下的移植。 包含库#include <graphics.h> 先初始化图形窗口 initgraph(WINDOW_WIDTH, WINDOW_HIGH) ;WINDOW…

C语言图形代码:三角、金字塔、圣诞树、爱心

在C语言的学习过程中&#xff0c;我们熟练掌握循环以后就可以使用循环编写&#xff0c;我们喜欢的图形代码啦&#xff01; 下面我向大家分别展示四种使用C语言循环编写的代码。 后两种都可以用来给自己的女朋友展示喔 1.三角形 2.金字塔 3.圣诞树 4.爱心 &#xff08;1&#…

linux下c语言图形界面实现,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。 本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大家分享: 主界面程序gmaxtrix.c #includ…

c语言图形时钟编程,c语言+图形编程——打造浅易的时钟

全程代码小编就在这里发出来了哈 // c语言图形编程 电脑时钟 //包罗头文件 #include #include #include #define PI 3.141592654 void Draw_Dial();//绘制静态的表盘 void Draw_Hand(int hour, int minute, int secend); //绘制表针 //主函数 int main() { initgraph(640, 4…

简单c语言图形程序设计,c语言简单图形编程

c语言编程如何实现图形化? 如果你是说编写用户界面的C语言编程,那就应该学习平台编程.主流平台有windows,linux等. 楼主是领会到C得要点了.C不像JAVA和C#,它们才叫编写应用程序,因为它们的库直接可以编写出程序的应用部分(比如用户界面,调用系统资源等). 但是C语言不能叫做 c语…

C语言图形编程|设置位置

一、对光标位置进行修改 1、通过自定义函数来实现将光标移动到指定位置 void gotoxy(int x,int y) {HANDLE hCon;hCon GetStdHandle(STD_OUTPUT_HANDLE);COORD Pos;Pos.X x;Pos.Y y;SetConsoleCursorPosition(hCon,Pos); } 代码优化: void gotoxy(int x,int y) {COORD P…