代码检查pwd 使用 - 中源 - JavaEye技术网站

idea代码检查工具 对于PMD名称含义,有个有趣的现象,PMD不存在一个准确的名称,在官网上你可以发现很有有趣的名称 ,比如:Pretty Much Done,Project Meets Deadline等。PMD是一款程序代码检查工具(可以支持多种语言,以Java为例),通过静态分析Java源文件来获知代码错误,也就是说在不运行不编译Java程序的情况下直接扫描Java源文件,报告错误。 阅读详情

原网址:http://sunjun041640.blog.163.com/blog/static/256268322010013111356656/

 

提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。
本文是提高代码质量系列文章的第一篇,主要介绍了如何使用pmd工具进行代码的自动化检查,以规避一些潜在的问题并找出代码的逻辑错误。
1.      什么是PMD?
PMD是一个代码检查工具,用于检查Java源代码,以便发现如下的潜在问题:
®       潜在的bug:空的try/catch/finally/switch语句
®       未使用的代码:未使用的局部变量、参数、私有方法等
®       可选的代码:String/StringBuffer的滥用
®       复杂的表达式:不必须的if语句、可以使用while循环完成的for循环
®       重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs
同时,pmd已经与JDeveloper、Eclipse、jEdit、JBuilder、 BlueJ、CodeGuide、NetBeans、Sun Java Studio Enterprise/Creator、IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs集成在一起。
2.      在Eclipse中安装PMD插件
PMD可以作为插件集成到很多流行的IDE中,很多的插件中都包含了PMD的jar文件,这个jar文件中包含了规则集。所以虽然一些插件中使用rulesets/unusedcode.xml来作为参数引用规则集,但是实际上是使用getResourceAsStream()方法来从PMD的jar文件中加载。
由于Eclipse是比较流行的开源Java/J2EE开发IDE,所以本文主要介绍如何在Eclipse中使用PMD工具进行代码的检查。
安装Eclipse的PMD插件的过程如下:
®       启动Eclipse
®       选择Help-->Software Updates-->Find and Install
®       选择Next,选择New remote site
®       在Name框中输入PMD,URL框中输入 http://pmd.sf.net/eclipse
®       在之后的对话框中一直点击下一步或者接受协议,完成Eclipse的PMD插件的安装
也可以通过下载最新的zip文件按,然后执行上述过程,只是使用New locale site来代替New remote site,并使用下载的zip文件。
可以通过Windows-->Preferences来配置PMD。
通过右键一个项目,然后选择PMD-->Check node with PMD,即可使用PMD工具检查代码。如果要进行重复代码检测,那么右键一个项目后,选择PMD-->Find suspect cut and paste。检查结果会放在reports目录下,文件名为cpd-report.txt。
可以通过使用Eclipse的帮助系统来查看PMD插件的文档。
在安装完更新后,如果发生了一个异常,例如”java.lang.RuntimeException: Could not find that class xxxx”,这时试着删除workspace中的.metadata/plugins/net.sourceforge.pmd.eclipse目录下的ruleset.xml文件。
3.      最佳实践
选择合适的规则
运行所有的规则集中的规则会产生非常多的冲突,这些冲突中的很多是不重要的。在这么多的冲突中寻找你关心的部分结果就没有什么效率可言了。
所以需要从明显的规则集,也就是说必须要改的地方开始是比较好的一个选择,例如只是运行unusedcode检查,然后修改没有使用的局部变量和成员变量。然后运行基本的检查,修改所有的空语句,例如if语句等。最后可以执行与设计相关的或者存在一定争议的规则集,或者自定义的规则集。
PMD规则是可以定制的
一般来说,选择那些可以利用的规则,而忽略或者禁止不需要的警告,毕竟PMD只是代码检查工具。
推荐使用PMD IDE插件
比起在HTML报告和IDE工具之间进行重复的切换,使用IDE的PMD插件更加简单易用。很多IDE插件都具有选中规则冲突后,就可以跳转到该行代码的功能,这样修改代码会变得更加的容易。
4.      安装并从命令行运行PMD
基本使用
$PMD_HOME/bin/pmd.bat命令的使用帮助如下:
pmd的必要参数如下:
1) Java源代码文件或者目录,可以是文件,目录,jar文件,zip文件等
2) 报告的格式
3) 规则集文件的名字或者以逗号分隔的一串规则集文件的名字
 
例如:
c:\> java -jar pmd-4.2.1.jar c:\my\source\co de html unusedcode
 
一些可以加载必须参数前面或者后面的可选参数如下:
-debug: 打印debug日志信息
-targetjdk: 指定目标源代码的版本- 1.3, 1.4, 1.5, 1.6 or 1.7;
默认是1.5
-cpus: 指定创建的线程数
-encoding: 指定PMD检查的代码的编码方式
-excludemarker: 指定PMD需要忽略的行的标记,默认为NOPMD
-shortnames: 在报告中显示缩短的文件名
-linkprefix: HTML源文件的路径,只是为了HTML显示
-lineprefix: 自定义的锚,用于影响源文件中的行,只是用于HTML显示
-minimumpriority: 规则的优先级限制,低于优先级的规则将不被使用
-nojava: 不检查java文件,默认是检查java文件
-jsp: 检查JSP/JSF文件,默认不检查
-reportfile: 将报告输出到文件,默认是打印在控制台
-benchmark: 输出一个基准清单,默认输出到控制台
-xslt: 覆盖默认的xslt
-auxclasspath: 指定源代码文件使用的类路径
 
例如在windows系统中,例子如下:
c:\> java -jar pmd-4.2.1.jar c:\my\source\co de text unusedcode,imp orts -targetjd
k 1.5 -debug
c:\> java -jar pmd-4.2.1.jar c:\my\source\co de xml basic,design -encoding UTF-8
c:\> java -jar pmd-4.2.1.jar c:\my\source\co de html typeresolution -auxclasspath
 commons-collections.jar;derby.jar
c:\> java -jar pmd-4.2.1.jar c:\my\source\co de html typeresolution -auxclasspath
 file:///C:/my/classpathfile
当出现违反规则的代码时,打印在控制台上的信息如下:
C:\tmp\pmd-4.2.1\pmd\bin>pmd c:\da ta\pmd\pmd\test-da ta\Unused1.java xml rulesets/unusedcode.xml
<?xml version="1.0"?><pmd>
<file name="c:\data\pmd\pmd\test-data\Unused1.java">
<violation line="5" rule="UnusedLocalVariable" >
Avoid unused local variables such as 'fr'
</violation>
</file></pmd>
也可使使用如下的方法(不使用批处理文件)运行PMD:
C:\da ta\pmd\pmd>java -cp lib\pmd-4.2.1.jar;lib\jaxen-1.1.1.jar;lib\asm-3.1.jar
                     net.sourceforge.pmd.PMD
                     c:\j2sdk1.4.1_01\src\java\lang xml
                     rulesets/imports.xml
高级使用
除了将输出结果作为控制台、文本文件、xml文件、html文件输出外,还可以使用xslt将输出结果转换成任意的文件格式。
还可以使用缩写名来使用内置的规则名,例如
java net.sourceforge.pmd.PMD /path/to/source text basic,imp orts,unusedcode
5.      总结
虽然使用命令行是原始的方法,可以生成任意格式的报告,但是为了更好,更快的修改代码能够存在的问题,使用插件的方式无疑可以提高效率,所以还是建议使用插件。
PMD对各种IDE都提供了插件,笔者一直使用Eclipse,所以就将Eclispe作为例子进行了插件的安装和简单实用,关于其他的IDE环境下PMD的安装及使用,请参考相关文档。
pwd指令的简单实现 pwd指令的简单实现,但是在符号链接的目录会打印实际的路径而不是符号链接目录的路径,有待解决 立即下载

相关推荐

解密linux-pwd

哥斯达黎加大学 PF3893-Seguridad aplicada a基础设施| 解密linux-pwd 学员: 让·卡洛·马塔·塞拉诺(J898 Carlo Mata Serrano) 加布里埃尔·乌玛尼亚·弗里亚斯(C09913)

代码检查pwd 使用

提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。 本文是提高代码质量系列文章的第一篇,主要介绍了如何使用pmd工具进行代码的自动化检查,以规避一些潜在的问题并找出代码的逻辑错...

中源 641

PyPWD:一个Python3密码管理器,具有加密功能,无需连接-开源

https://www.garanet.net/it-blog/python-password-manager/一个Python3密码管理器,具有加密功能,并且没有Internet连接。 工作原理:首次运行:PyPWD>用您的主用户名和密码创建主密钥(不要忘记它或修改配置文件,否则您将无法再打开密码管理器)。 PyPWD>将DataFrame保存为加密的CVS,并且所有密码(包括密钥和主密码)也被加密。 登录名:PyPWD>根据填写的用户名和密码解密密码文件。

命令行简单使用一下PMD【win和linux双系统】【JAVA静态代码审查工具】

1.新建测试类

哈哈哈 960

CLCD土地覆盖数据在ArcGIS中的实战应用:从导入到空间分析的完整指南

本文详细介绍了CLCD土地覆盖数据在ArcGIS中的实战应用,从数据导入到空间分析的完整流程。涵盖坐标系转换、数据质量检查、土地利用变化检测等核心技术,并分享城市扩张模拟和跨数据集融合等高级应用技巧,帮助研究者高效利用这一权威数据集进行环境监测和城市规划。

weixin_29292535的博客 590

Prometheus常用配置介绍

除了 scrape_configs 外,上部还有 global 和 rule_files 部分, 其中 global 中 是 全 局 参 数 , scrape_interval 指 定 全 局 默 认 的 时 间 间 隔 , evaluation_interval 指定告警规则校验的时间间隔,rule_files 指定了告警规 则文件的位置名称。• annotations(注释):它们被用于存储更长的其他信息,例如警报描述 或者链接,注释值也可以被模板化。• alert:告警的名称。

weixin_42886699的博客 2260

python中文件和目录操作

1.获得当前路径 在Python中可以使用os.getcwd()函数获得当前的路径。其原型如下所示。 os.getcwd() 该函数不需要传递参数,它返回当前的目录。需要说明的是,当前目录并不是指脚本所在的目录,而是所运行脚本的目录。例如,在PythonWin中输入如下脚本。 &gt;&gt;&gt; import os &gt;&gt;&gt; print 'current direc...

weixin_34050519的博客 206

Simulink中扩张状态观测器ESO搭建与参数整定实战

扩张状态观测器(ESO)是自抗扰控制(ADRC)的核心,用于估计系统总扰动并实时补偿。其原理是将扰动扩张为状态变量,通过观测器带宽配置增益,实现扰动估计。在Simulink中搭建ESO可直观验证连续与离散域性能,解决参数整定与噪声折中问题。典型应用包括运动控制、电力电子和机器人驱动。本文基于MATLAB/Simulink,详细讲解线性ESO的模型结构、参数计算、离散化实现及常见问题排查,帮助读者从零搭建并调试ESO仿真。

weixin_34116482的博客 221

如何显示python的内置模块_如何隐藏python内置的pwd模块

There is some python code that works under Linux. It uses the pwd module in a way like that:import pwd...def func():user=pwd.getpwnam(user)[2]Now we have a specific need to cover this code with tests,...

weixin_39616693的博客 447

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

jacke121的专栏 2705

【硬件工程师面经整理18_Smith圆图】

若文中任何内容侵犯了您的合法权益,请相关权益人及时与我联系,我将立即进行核实并采取适当措施,包括但不限于删除相关内容或更新文章以消除影响。**在Smith圆图上,源阻抗表示为圆心,而负载阻抗表示为圆图上的一个点。具体来说,通过将负载阻抗在Smith圆图上移动到特定位置,使其与传输线特性阻抗形成纯电阻或纯电抗的组合,从而实现匹配。例如,反射系数表示为Smith圆图上的一个点,而驻波比则表示为圆图上两个点之间的距离。Smith圆图是用于阻抗匹配和网络分析的工具,它是一种将复阻抗表示为坐标的图形。

LeeYLong的博客 651

java架构师视频网站,SSH整合中出错解决

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了《Java中高级核心知识全面解析》小米商场项目实战,别再担心面试没有实战项目:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

2401_84010744的博客 979

基于YOLOv8的人群聚集检测系统:含UI界面设计与数据集应用

人群聚集检测是智慧城市、公共安全和疫情防控等领域的重要任务。本文结合YOLOv8最新目标检测技术,设计并实现了一个高效的人群聚集检测系统,支持可视化UI界面操作,方便用户实时检测和分析视频中的人群密度。本文详细介绍了系统设计思路、使用的数据集、YOLOv8模型训练和推理过程,以及UI界面的开发与整合。最后通过实验验证了该系统的实用性和性能表现。更灵活的模型架构强化的特征融合网络(PAN++)自动混合精度训练支持支持多任务学习(目标检测+分类+分割)预训练模型丰富,适应多种应用场景。

YOLO 433

ant 的学习,注意事项

ant是什么?ant是一种基于java和xml的build工具。 ant里面的基本命令:(学习时可以用android sdk/tools/ant/build.xml作为学习模板)英文学习网站:https://ant.apache.org/manual/的task目录下。 file的加载路径 定制的任务 一般是返回true或者false的,可以在里面做一些匹配,判断的动作比如isse

做一个有思想的人 1847

open3d将某一时间序列下的彩色图和深度图批量转换成点云(python)

必备条件需要3D相机生成的彩色图及深度图,注意要将深度图与彩色图对齐(一般3D相机自带对齐算子),以及3D相机的彩色图内参(相机自带内参获取功能)。有了此彩色图、对齐后的深度图以及相机内参就能使用open3d生成彩色点云了.

吾名招财的博客 315

初学者入门YOLO目标检测:从懵圈到上手,这篇文章讲透所有核心(附学习路径+避坑指南)

目标:比如训练一个“检测苹果和橘子”的模型,或者“检测人脸”的模型;任务:学会用LabelImg标注数据,制作YOLO格式的数据集,用命令行训练模型;关键:不用追求高精度,能训练出一个能检测出目标的模型就行。很多初学者卡在入门阶段,不是因为智商不够,而是因为“想太多,做太少”——总觉得要把所有原理搞懂才能动手,结果越想越怕,最后放弃。先动手,再动脑。先跑通一个案例,获得成就感;再制作自定义数据集,训练简单模型;最后再回头去理解原理,优化模型。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 690

jquery:validate的例子{转载}

该文档转载自 http://ideabean.javaeye.com/blog/363927 官方网站 http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 酷就一个字,我就说一次,嘿嘿  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht...

weixin_34336292的博客 72

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pwd python 安装 模块_Python 标准库 -> pwd 模块 ->  /etc/passwd 以及相关文件接口...

---------------------------------------------------------pwd 模块(只用于 Unix) pwd 提供了一个到 Unix 密码/password "数据库"( /etc/passwd 以及相关文件)的接口.这个数据库(一般是一个纯文本文件)包含本地机器用户账户的信息--------------------------------------...

weixin_39848347的博客 1888

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[已解决]Langchain-Chatchat 报错 ModuleNotFoundError: No module named ‘pwd‘

LangChain windows环境下报错 ModuleNotFoundError: No module named 'pwd'

morecccc的博客 2276

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python中的目录,python中文件和目录操作

python中文件和目录操作1.获得当前路径在Python中可以使用os.getcwd()函数获得当前的路径。其原型如下所示。os.getcwd()该函数不需要传递参数,它返回当前的目录。需要说明的是,当前目录并不是指脚本所在的目录,而是所运行脚本的目录。例如,在PythonWin中输入如下脚本。>>> import os>>> print 'current d...

weixin_31156651的博客 454

python中版本,操作系统等问题汇总

解决方法之一,在相应的环境目录中,如图中<MetaGPTenv>虚拟环境中,在lib文件夹下手动添加pwd.py文件。这个问题,是因为源码是给linux的。这里在windows中,没有该命令。pwd.py 代码如下。

lsh的博客 892

静态代码检查工具-PMD

提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。本文是提高代码质量系列文章的第一篇,主要介绍了如何使用pmd工具进行代码的自动化检查,以规避一些潜在的问题并找出代码的逻辑

NCNC 7195

pdm文件打开方式

转自:https://blog.youkuaiyun.com/qq_36855191/article/details/79299216在这里分享一个很方便的网站,在线阅读pdm文件,打开这个网址放pdm文件进去,即可打开,十分方便快捷。:http://www.dmanywhere.cn/但功能还是不够强大,经常用到的兄弟还是应该下载powerdesigner,毕竟在线版的资源有限,所以功能很不完善。网上有很多...

渴望飞的鱼的博客 9万+

【已解决】ModuleNotFoundError: No module named ‘pwd‘

【已解决】ModuleNotFoundError: No module named 'pwd' C:\Chatchat\Langchain-Chatchat>python init_database.py Traceback (most recent call last):

good_good_study5的博客 7257
上一篇: 用CMMI指导需求管理
下一篇: Java代码质量检测评估工具(用 Eclipse 插件篇)
magieflying
博客等级 码龄17年 12粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值