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

article/2025/9/30 21:12:27

eclipse插件之Findbugs、Checkstyle、PMD安装及使用

一、什么是Findbugs、checkstyle、PMD

Findbugs、checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用。

三者的功能如下表:

工具

目的

检查项

FindBugs

检查.class

基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug

主要检查bytecode中的bug patterns,如NullPoint空指针检查、没有合理关闭资源、字符串相同判断错(==,而不是equals)等

PMD

检查源文件

检查Java源文件中的潜在问题

主要包括:

空try/catch/finally/switch语句块

未使用的局部变量、参数和private方法

空if/while语句

过于复杂的表达式,如不必要的if语句等

复杂类

CheckStyle

检查源文件

主要关注格式

检查Java源文件是否与代码规范相符

主要包括:

Javadoc注释

命名规范

多余没用的Imports

Size度量,如过长的方法

缺少必要的空格Whitespace

重复代码

该表转自:http://blog.csdn.net/ml5271169588/article/details/6975701

三者作为开源的软件,可以让我们无所畏惧的使用,而不用考虑版权问题。他们的源代码保存在http://sourceforge.net/上,下载也可以去这里下载。

二、Findbugs、checkstyle、PMD的安装

首先要说明的是,我电脑的eclipse是luna版本,JDK是1.8的。

eclipse和JDK的安装就不多说了,很容易搜到,而且目前JDK都不需要复杂的配置,基本上只要下载好再安装就好了。

那么接下详细的介绍Findbugs、checkstyle、PMD的安装(使用三部分说明:如何安装eclipse插件->下载插件->安装插件->查看插件是否安装成功)

1、如何安装eclipse插件

目前来说有三种安装eclipse插件的方式:

(1)在线安装方式:使用Eclipse的菜单栏 Help -> SoftwareUpdates -> Find and install... -> search for new features...  ->输入软件安装地址进行安装

(2)离线安装方式一:下载插件文件,将其解压缩到Eclipse对应的目录中,即eclipse目录下对应的features下和plugins下。

(3)离线安装方式二:links文件方式。

前两种方式比较简单,百度经验http://jingyan.baidu.com/article/15622f2454893cfdfcbea5d1.html上有详细的图文教程。

我选择了第三种方式,因为这样可以把eclipse插件放在一个独立的目录统一管理,多个Eclipse均可以指向这个eclipse插件目录,后面我会具体介绍如何采用第三钟方式安装插件。

2、下载插件

因为Findbugs、checkstyle、PMD都在http://sourceforge.net/这个开源的网站上进行管理,所以直接去该网站下载。

工具

下载地址

截图

注意事项

Findbugs

http://sourceforge.net/projects/findbugs/files/findbugs%20eclipse%20plugin/

5b927ca91ec90dd329d02b8bcddf7bc7.png

下载的时候要注意红框里一定是findbugs eclipse plugin,有可能你在这个网站上下载到Findbugs,但他不能用做eclipse插件使用。可能有其他用途吧。

Checkstyle

http://sourceforge.net/projects/eclipse-cs/files/?source=navbar

8cd03a6115c962bfddf5b2afcff4ded4.png

你可能在sourceforge上找到checkstyle,但下载下来同样不能用做eclpse插件使用,注意要下载eclipse checkstyle plug-in。

PMD

http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site-latest/

ee0e491b9e7fd5064a31ea8600b1fbb9.png

我没有找到可以一下plugins和features的文件都下载下来,只能一个一个的下载,然后重新创建了features和plugins文件夹,然后把东西放里面。也许有更好的方法吧。同样注意下载的是pmd-eclipse目录下的文件

下载好后就可以采用上述的安装方式的一种安装了。

3、安装插件

links方法安装:

我的eclipse的安装目录是D:\Application\eclipse。

目标是把插件放在和eclipse文件夹同级的D:\Application\eclipse_plugins下(文件夹名随意)。

(1)首先在D:\Application\eclipse_plugins文件夹操作。

在eclipse_plugins文件夹下创建D:\Application\eclipse_plugins\lunaeclipse(文件夹名随意),表示这是lunaeclipse所使用的插件。

分别在D:\Application\eclipse_plugins\lunaeclipse下创建Findbugs、Checkstyle和PMD三个文件夹(文件夹名随意)。如图:

40df4523e06db67a25c3ec2e0c5e59c1.png

然后在Findbugs里面建立一个eclispe文件夹(文件名固定),eclipse文件夹下创建features(文件名固定)和plugins(文件名固定)文件夹。

97b8e5d1725473e277b327147583c55d.png

Checkstyle和PMD进行同样的操作。

然后将下载好的文件(里面包含plugins和features),按照同样的结构放入对应文件夹里。例如:

f80c35dab19ba54e8e73e3190ea19ba8.png

3cf859c37d2bc1a8e1358a9e65583d50.png

Checkstyle和PMD进行同样的操作。

(2)接下来操作eclipse的安装目录D:\Application\eclipse。

在该目录下新建文件夹links(文件夹名固定),然后创建Findbugs.txt、Checkstyle.txt、PMD.txt(文件名随意)文件,打开该文件并且写入一句path=D:\\Application\\eclipse_plugins\\lunaeclipse\\Findbugs,该路径是之前创建Findbugs文件夹的路径,同样操作Checkstyle和PMD。在将扩展名.txt改为.link(据说扩展名改不改无所谓)。如图:

3d500cbfd2e34dee1644459bbedfbf17.png

191acbee924ee036b09ef356abe7cc1e.png

然后重启eclipse就可以了。

注意:如果重启eclipse不可以的话。请尝试进入eclipse安装目录下的D:\Application\eclipse\configuration文件夹,删除org.eclipse.update文件夹,修改config中的org.eclipse.update.reconcile=false改为true。在重新启动eclipse。

4、查看插件

可以通过两种方式查看插件是否安装成功

(1)依次点击help—>about eclipse->Installation details->Plug-ins,然后搜索自己安装的插件,如果能够搜索到,则说明安装成功。

(2)更实际一点的方式是创建一个项目,右击项目名,查看是否存在Findbugs、Checkstyle和PMD。

我采用第二种方式:

6b0341647fc16c3ed7fe92a1dc127e99.png

出现红框里的标志之后,就说明安装插件成功。

三、Findbugs、checkstyle、PMD的使用

打开三个插件的方式大同小异,都是右击项目,找到插件的选项。当分析完毕之后,同样需要右击项目,找到插件选项,点击clear...选项,清除插件标记。

对Findbugs的设置在Windows->Preferences->java->Find bugs下进行设置;在Windows->Preferences下就能找到Checkstyle和PMD的设置。

关于Finbugs、checkstyle、PMD的使用如下表:

Findbugs

Checkstyle

PMD

启动/清除

5e07e6c9a68d3c1e6e6011ef06475730.png

70cf99f364ac259b5ba458ceccc4d39d.png

892edbd80fa1ea75b530067c407d8dd9.png

使用

如图所示:代码行左侧出现小虫子,说明有bug或

潜藏的bug。BugExplorer会列出所有bug,Bug

info有关于bug详细的信息。(注意:Findbugs检

查的是.class文件,所以如果无法编译成.class的程

序是无法使用findbugs找到bug的)

8591235a2185b0fca048de61ad05640c.png

黄色部分为代码不符合规范的部分。

eca308d3c34201831065aaf3c2f18ad1.png

如图小三角标记的代码行,存在不符合规范的代码。

e09bf8af61a6e12dcba8cad5a1cf834f.png

设置

cfd4b4eca9ef880589e49cd699964dce.png

6aac3fe372d3bd1817c5be3ef176c16f.png

6bb278a96f84a991951b5856c8ae3817.png

关于Findbugs、Checkstyle和PMD的安装和使用先就介绍到这里。三个插件的使用能够帮助程序开发者更好的理解自己的代码,改善自己的代码风格,对程序员有很大益处。

注:由于图比较小,如若看不清,可以放大浏览器查看或者下载下图片看。

2015-05-21

------------------------------

只要你是简单的

这个世界就是简单的

----冰心


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

相关文章

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…

C语言图形化编程

画折线图 #include<stdio.h> #include<conio.h> #include<graphics.h> #include<stdlib.h>void hDrawk(char c[]); void vDrawk(char c[]); void Drawfline(int b[]); int xs48,ys50;void hDrawk(char c[]) {int i,j65;line(65,360,565,360);for(i0;i&…