PMD使用说明
MCGSJS050603_PMD_存盘数据浏览测试工程(通嵌合一)使用说明_V1.0
北京昆仑通态自动化软件科技有限公司存盘数据浏览测试工程(通嵌合一)使用说明版本号:5.5(10.0000)修订历史记录目录1.概述 (4)2.工程说明 (4)3.测试要点、 (4)3.1基本属性与显示属性窗口测试 (4)3.2外观设置 (4)3.3时间条件 (4)3.4数值条件 (4)3.5通用属性与特殊属性 (4)3.6存盘数据浏览构件的函数使用方法 (4)4.测试用例 (5)4.1基本属性与显示属性窗口测试 (5)4.1.1 基本属性与显示属性测试 (5)4.1.2 基本属性—通用版本专用 (5)4.2外观设置 (6)4.2.1 外观设置 (6)4.3时间条件 (6)4.3.1 时间条件下的数据 (6)4.4数值条件 (7)4.4.1 数值条件测试 (7)4.5通用属性 (7)4.5.1 Name,Left,Top,Width,Height,Focus,Visible属性 (7)4.5.2 通网版专用-Zorder属性 (7)4.6调用函数方法 (8)4.6.1 公共函数方法调用 (8)4.6.2 嵌入版专用-打印指定的数据PrintContext (8)5.问题列表 (9)5.1存盘数据浏览构件的Focus属性无效 (9)5.2存盘数据浏览构件的高度设置出现非法操作 (9)5.3存盘数据浏览构件的方法SetCellValue不起作用 (9)5.4存盘数据浏览构件的方法获取指定列的宽度GetColWidth不起作用 (9)5.5存盘数据浏览构件的方法设置指定列的宽度SetColWidth (10)输入框测试工程使用说明1.概述2.工程说明本工程组态约定如下:1.通网版专用部分:字体或区域方框线使用紫色,这部分内容属于通网版的测试点.2.嵌入版专用部分:字体或区域方框线使用紫色,这部分内容属于嵌入版的测试点3.测试要点3.1基本属性与显示属性窗口测试主要测试在运行状态下能不能进行时间范围的设置,测试数据输出到关联变量的数据跟随行变化的数据值发生改变而改变,数据的显示格式与组态下的选取的格式结果是否一样;时间列的显示是否与设置的一样。
pMD18-T Simple说明书
TaKaRa Code:D103A pMD®18-T Simple Vector目录内 容 Page●制品说明 1●制品内容 1●保 存 1●纯 度 1●用 途 1●pMD®18-T Simple Vector的结构 1 ●实验操作 2■Control DNA片段的克隆实验2■一般DNA片段的克隆实验2●相关说明 3 ●使用注意 4 ●Q&A4●制品说明pMD ®18-T Simple Vector是一种高效克隆PCR产物(TA Cloning)的专用载体。
本载体由pUC18载体改建而成,它消除了pUC18载体上的多克隆酶切位点,再在pUC18载体的多克隆酶切位点处导入了Eco R V酶切位点,使用Eco R V进行酶切反应后,再在两侧的3'端添加“T”而成。
因大部分耐热性DNA聚合酶进行PCR反应时都有在PCR 产物的3'末端添加一个“A”的特性,所以使用本制品可以大大提高PCR产物的连接、克隆效率。
本载体尽管消除了LacZ 基因上的多克隆酶切位点,但不影响β-半乳糖苷酶的正常表达,因此,PCR 产物克隆后仍可以利用α-互补性进行蓝白菌落的筛选,挑选阳性克隆。
由于本载体上消除了多克隆酶切位点,克隆后的PCR 产物将无法使用载体上的限制酶切下,需要在PCR 扩增引物上导入合适的酶切位点。
此时如果使用PCR 扩增引物导入的酶切位点进行DNA 酶切时,酶切反应将不会受到T 载体上其它多克隆酶切位点上的限制酶影响,可以大大提高酶切效率,增加亚克隆成功率。
由于本载体以pUC18载体为基础构建而成,所以它具有同pUC18载体相同的功能。
此外,本制品中的高效连接液Solution I 可以在短时间内(约30分钟)完成连接反应,其连接液可以直接用于细菌转化,大大方便了实验操作。
本制品中的Control Insert(500 bp)还可以用于Control 反应。
●制品内容pMD ®18-T Simple Vector(50 ng/μl) 20 μl×1支 Control Insert(50 ng/μl) 10 μl×1支 Solution I*75 μl×2支** 使用时请于冰中融解。
问题七偏振模色散pmd测试的干涉测量法的介绍
1. 基于 PMD 值考虑的测量长度:
>10000KM >10000KM
>10000KM
理想 PMD 系数:0.05 ps/km1/2
2. 基于功率范围考虑的测量长度 0-200KM
0-200KM
0-200KM
典型损耗系数: 0.22db/KM
表三
从表二及表三中我们可以看到,以上设备在对光缆进行单盘测试及对长途光纤
干涉测量法缺点:无波长依赖信息
三、基于干涉测量法的几种偏振模色散测试设备 干涉测量法在目前得到了较为广泛的使用。其中包括 Perkin Elmer(EG&G),
EXFO,GN Nettest (Photonetics)等几家公司都采用了迈克尔逊干涉测量(Michelson
Interferometer)技术来研制开发出偏振模色散的测试设备。表一给出了一些设备生 产商及其 PMD 测试设备的列表:
五、结语 干涉测量法是一种简单便捷的偏振模色散测试方法,能够满足光缆单盘测试及
中继链路光纤的测试,已经得到非常广泛的应用并为广大光缆用户所接受。 基于干涉测量法设计出的不同测试设备原理相同,但由于采用了不同的光源及
一些其它技术,在测试结果上会存在一些差异。不同设备基于不同的设计,在构造及 使用上也有一些不同。
Broadband Source
Device under test
Mirror Polarizer
Detection
Analyzer
Scanning mirror
图一
干涉测量法较其它测试方法,有如下许多优点,使其更适应对光纤进行 PMD 测试: 测试速度快 测试范围大 操作简单 测试结果不易受外界干扰 可用于进行精确测量的实验室设备及现场测试的便携式式设备,设备价格适 中
使用PMD检查代码Bug
使用PMD检查代码BugPMD是一种开源分析Java代码错误的工具,他分析Java源代码并找出源代码潜在的Bug,例如发现不需要使用的变量、空的catch块和不需要创建的对象等。
它还包含一个CPD工具可以探测一块代码中相同的部分;PMD是通过规则的方式来进行检查的代码项。
PMD包含16个规则集,涵盖了Java 的各种常见问题。
●基本(rulesets/basic.xml)——规则的一个基本集合:catch不该为空,无论何时重写equals(),都要重写hashCodeI()等。
●命名(rulesets/naming.xml)——对标准的java命名规范的测试:变量名称不应太短;方法名不应过长;类名称应当以小写字母开头;方法和字段名应该以小写字母开头等。
●未使用的代码(rulesets/unusedcode.xml)——查找未使用的私有字段和本地变量、执行到的语句、从未调用的私有方法等。
●设计(rulesets/design.xml):检查各种设计良好的原则,例如switch语句应当有default块,应当避免深度嵌套的if块,不应当给参数重新赋值,不应该对double 值进行相等比较。
●导入语句(rulesets/imports.xml):检查import语句的问题,比如一个类被导入两次或者导入lang包中的类。
●JUnit测试(ruleset/junit.xml):查找测试用例和测试方法的特定问题,例如方法名称的正确拼写,以及suite()方法是不是static和public;●字符串(rulesets/string.xml):找出处理字符串时遇到的常见问题,例如重复的字符串标量,调用String构造函数,对String变量调用toString()方法。
●括号(rulesets/braces.xml):检查for、if、while和else语句是否使用了括号。
●代码尺寸(rulesets/codesize.xml):测试过长的方法、有太多方法的类,以及重构方面的类似问题。
TAKARA公司pMD19-T说明书
出现的菌落有可能呈现蓝色(或淡蓝色)。
Q-3 欲对克隆 DNA 片段进行测序时,使用何种引物? A-3 本载体来源于 pUC19 载体。因此,用于 pUC19 载体测序的通用引物都可以使用。 Q-4 pMDTM19-T Vector与pMDTM18-T Vector相比有何不同? A-4 pMDTM19-T Vector与pMDTM18-T Vector相比,β -半乳糖苷酶的表达活性更高,菌落显示蓝色的
B)结 果 使用Control Insert时的连接/转化结果如下,使用的感受态细胞的转化效率为:1.5×108 cfu/μg pUC19 DNA。
Control Insert
连接/转化效率 (cfu/μg Vector)
白色菌落比率(%)
效率(%)*
+
2.8×106
96.3
90 以上
-
2.2×105
4)全量(10 μl)加入至 100 μl JM109 感受态细胞中,冰中放置 30 分钟。 5)42℃加热 45 秒钟后,再在冰中放置 1 分钟。 6)加入 890 μl SOC 培养基,37℃振荡培养 60 分钟。 7)在含有 X-Gal、IPTG、Amp 的 L-琼脂平板培养基上培养,形成单菌落。计数白色、蓝色菌落。 8)挑选白色菌落,使用 PCR 法确认载体中插入片段的长度大小。
注) ① 室温(25℃)也能正常进行连接反应,但反应效率稍微降低。 ② 5 分钟也能正常进行连接反应,但反应效率稍微降低。
4)全量(10 μl)加入至 100 μl JM109 感受态细胞中,冰中放置 30 分钟。 5)42℃加热 45 秒钟后,再在冰中放置 1 分钟。 6)加入 890 μl SOC 培养基,37℃振荡培养 60 分钟。 7)在含有 X-Gal、IPTG、Amp 的 L-琼脂平板培养基上培养,形成单菌落。计数白色、蓝色菌落。 8)挑选白色菌落,使用 PCR 法确认载体中插入片段的长度大小。
Java静态检测工具的简单介绍 - Sonar、Findbugs
Java静态检测工具的简单介绍- Sonar、Findbugs2010-11-04 13:55:54标签:sonar休闲职场Java静态检测工具的简单介绍 from:/?p=9015静态检查:静态测试包括代码检查、静态结构分析、代码质量度量等。
它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
”。
看了一系列的静态代码扫描或者叫静态代码分析工具后,总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的,他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可以自定义各种各样的复杂的规则去对代码进行分析。
静态检测工具:1.PMD1)PMD是一个代码检查工具,它用于分析 Java 源代码,找出潜在的问题:1)潜在的bug:空的try/catch/finally/switch语句2)未使用的代码:未使用的局部变量、参数、私有方法等3)可选的代码:String/StringBuffer的滥用4)复杂的表达式:不必须的if语句、可以使用while循环完成的for循环5)重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs2)PMD特点:1)与其他分析工具不同的是,PMD通过静态分析获知代码错误。
也就是说,在不运行Java程序的情况下报告错误。
2)PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题3)用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。
3)同时,PMD已经与JDeveloper、Eclipse、jEdit、JBuilder、BlueJ、CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs 集成在一起。
pMD19-T载体说明书
TaKaRa Code:D102ApMD®19-T Vector宝生物工程(大连)有限公司目录内 容 Page●制品说明 1●制品内容 1●保 存 1●纯 度 1●用 途 1●pMD®19-T Vector的结构 1 ●实验操作 2■Control DNA片段的克隆实验2■一般DNA片段的克隆实验2●相关说明 3 ●使用注意 4 ●Q&A4●制品说明pMD ®19-T Vector是一种高效克隆PCR产物(TA Cloning)的专用载体。
本载体由pUC19载体改建而成,在pUC19载体的多克隆位点处的Xba I和Sal I识别位点之间插入了Eco R V识别位点,用Eco R V进行酶切反应后,再在两侧的3'端添加“T”而成。
因大部分耐热性DNA聚合酶进行PCR反应时都有在PCR 产物的3'末端添加一个“A”的特性,所以使用本制品可以大大提高PCR产物的连接、克隆效率。
由于本载体以pUC19载体为基础构建而成,所以它具有同pUC19载体相同的功能。
此外,本制品中的高效连接液Solution I 可以在短时间内(约30分钟)完成连接反应,其连接液可以直接用于细菌转化,大大方便了实验操作。
本制品中的Control Insert(500 bp)还可以用于Control 反应。
本载体与pMD ®18-T Vector 相比,本制品的 β-半乳糖苷酶的表达活性更高,菌落显示蓝色的时间缩短,菌落显示的蓝色更深。
因此,克隆后更容易进行克隆体的蓝白筛选。
●制品内容pMD ®19-T Vector(50 ng/μl) 20 μl×1支 Control Insert(50 ng/μl)10 μl×1支 Solution I*75 μl×2支* 使用时请于冰中融解。
●保存: -20℃●纯度■ Control Insert 经克隆后的白色菌落中,有90%以上含有Insert DNA 片段。
PMD安装和使用说明_CPD
PMD安装和使用说明——for CPD 1简介PMD是一个针对Java语言的静态的代码分析器,它检查Java源文件中的潜在问题,也包含一些编码规范的问题。
另外,Eclipse 的 PMD 插件提供了一项叫做 CPD(或复制粘贴探测器)的功能,用于寻找重复的代码。
为在 Eclipse 中使用这项便利的工具,需要安装具有 PMD 的 Eclipse 插件,该插件具有 CPD 功能。
PMD的官方网站:官方的文档/products.html2安装安装PMD的eclipse插件版,最简单的方法是使用远程站点进行安装和更新。
步骤如下:1.打开Eclipse;2.在菜单中选择Help | Software Updates | Find and Install...3.选择“Search for new features to install”(如果是更新而不是新装,则选择“Search for updates of the currently install features”),点击Next;4.点击New Remote Site...;5.输入Nam e和URL,点击OK按钮;Name:PMDURL: /eclipse6." PMD "将出现在Sites to include in search页面中,选中PMD,点击Finish;7.In the Search Results页面,选中PMD,点击Next。
8.选中“I Accept the terms of the license agreements”,点击Next;9.确认安装路径正确,点击Finish;10.等待Eclipse下载需要的jar文件包,点击Install;11.根据提示,选择Yes重启Eclipse。
3CPD使用方法1.选中你的Java项目,右键=>PMD=>子菜单项里有“Find Suspect Cut And Paste”一项,如下图所示:2.点中“Find Suspect Cut And Paste”,出现如下对话框。
PMD简介——精选推荐
PMD简介PMD 的功能PMD (Programming Mistake Detector) 是⼀个开源的静态代码检查⼯具。
静态代码检查就是在不运⾏代码的情况下检查代码中的内容,然后和事先制定的规则进⾏⽐对,指出代码中不符合规则的部分。
PMD ⼯具可以在以下⽅⾯对项⽬的开发过程进⾏帮助:1. 在开发阶段,让开发者通过⾃我检测发现代码中的错误,及时修改2. 在审查阶段,减轻⼈⼯ pull request 审查的⼯作量3. 通过制定规则(或使⽤已有的规则),统⼀项⽬的代码规范,提⾼代码质量4. 新成员可以快速熟悉项⽬的规范,缩短融⼊团队的时间PMD ⽀持多种语⾔,⽐如项⽬本⾝的 Java,Salesforce 相关的 Apex、VisualForce,还有 JavaScript、XML 等。
PMD 对于各种语⾔都预设了⼀套代码规则,也⽀持开发⾃定义规则,可以使⽤ Java 类或者 XPath。
以后的⽂章我们会详细阐述。
PMD 的⼯作原理PMD 将代码转化为抽象语法树(AST,Abstract Syntax Tree)。
抽象语法树是将代码结构通过“树”的形式展现出来,每部分代码(类、变量声明、if-else 语句、变量赋值、数据库查询等)会成为树的各个节点。
在代码转化为语法树后,PMD 中制定的规则会检测树的相应节点,分析其属性或结构,从⽽找出违反规定的部分。
举个例⼦。
下⾯的这段 Apex 代码在转化为语法树之后,其结构是:可以看到,树的根节点就是类的声明,然后⼦节点就是类中的函数,再往下是 if 语句等元素。
PMD 的命令⾏使⽤PMD 可以通过命令⾏来对代码进⾏检测。
⾸先下载 PMD 的发⾏包:解压之后,⽂件夹的结构应该是这样:然后需要我们⾃⼰加⼊规则集⽂件。
规则集⽂件是⼀个 XML ⽂件,其中通过 rule 节点来引⽤已经开发的规则。
详细步骤见。
这⾥是⼀个⽰例,⽂件名叫 rules.xml。
<?xml version="1.0"?><ruleset name="Custom Rules"xmlns="/ruleset/2.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd"><description>My custom rules</description><!-- Your rules will come here --><rule ref="category/apex/bestpractices.xml"></rule><rule ref="category/apex/codestyle.xml"></rule><rule ref="category/apex/design.xml"></rule><rule ref="category/apex/documentation.xml"></rule><rule ref="category/apex/errorprone.xml"></rule><rule ref="category/apex/performance.xml"></rule><rule ref="category/apex/security.xml"></rule></ruleset>准备⼀个代码⽂件,⽐如叫 testApex.cls,将它和 rules.xml ⽂件放在 PMD 的⽂件夹下。
CheckStyle使用手册-Eclipse-Maven
两个Java代码检查工具PMD---它会对代码中的如下部分进行检查:未使用的本地变量空的catch块未使用参数空if语句重复的import语句未使用的私有方法可能是Singletons的类短/长变量及方法名字安装方法:先下载插件(附件中),安装方法如下:打开Myeclipse->Help->Search for new features to install ->new Archived site ->选择下载的包(附件中有)->安装->重启Myeclipse->完成CheckStyle---检查如下部分:Javadoc注释命名约定标题Import语句体积大小空白修饰符块混合检查(包活一些有用的比如非必须的System.out和printstackTrace)它们的作用不像PMD,Checkstyle能够检查Javadoc注释;但是PMD提供了一项叫作CPD的很有用的功能,它检查代码的拷贝粘贴部分。
我使用 PMD找到的最频繁的错误是未使用的import语句,未使用的私有变量以及意外重复拼写。
Checkstyle 可以发现更多的错误。
包括漏掉的 Javadoc注释,超过80个字符的行、不合约定的变量名、用tab来代替空格等等。
两个工具都允许创建自定义的规则。
如果想在你的组织中使用它们中的一个,Checkstyle似乎更好一些:它检查公司编码约定的大多数项目。
如果增强代码质量是主要目标,那PMD是一个好的选择.安装方法:打开Myeclipse->Help->Search for new features to install ->new Remote site ->输入URL:/update ->安装->重启Myeclipse->完成CheckStyle使用手册介绍CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。
pMD18-T使用说明书(附序列)
1. Solution I 请于冰中融解。 2. 克隆时使用的 Insert DNA 片段(PCR 产物)建议进行切胶回收纯化,否则 PCR 产物中的短片段
DNA(甚至是电泳也无法确认的非特异性小片段)、残存引物等杂质都会影响 TA 克隆效率。 3. 按照本实验操作进行连接后,直接进行转化时的连接液不要超过 20 μl。当要转化的 DNA 量较大或
4)全量(10 μl)加入至 100 μl JM109 感受态细胞中,冰中放置 30 分钟。 5)42℃加热 45 秒钟后,再在冰中放置 1 分钟。 6)加入 890 μl SOC 培养基,37℃振荡培养 60 分钟。 7)在含有 X-Gal、IPTG、Amp 的 L-琼脂平板培养基上培养,形成单菌落。计数白色、蓝色菌落。 8)挑选白色菌落,使用 PCR 法确认载体中插入片段的长度大小。
40.4
0
* 效率是指白色菌落中的目的 DNA Insert 片段的连入效率。
■一般 DNA 片段的克隆实验
1)在微量离心管中配制下列 DNA 溶液,全量为 5 μl。
pMD®18-T Vector*1
1 μl
Insert DNA*3
0.1 pmol~0.3 pmol
dH2O
up to 5 μl
-2-
准备进行电转化时,需对连接液进行乙醇沉淀,纯化 DNA 后再进行转化。进行乙醇沉淀时使用核酸 共沉剂(TaKaRa Code:D605A)可以提高 DNA 的回收率。 4. 连接反应请在 25℃以下进行,温度升高(>26℃)较难形成环状 DNA。连接效率偏低时,可适当 延长连接反应时间至数小时。 5. 本制品来源于 pUC18 载体,因此,适合 pUC18 载体的感受态细胞都可以使用,如:JM109 等。
pmd 审计工具用法
pmd 审计工具用法一、概述PMD 是一款流行的静态代码分析工具,用于检测常见的编程错误,如未使用的变量、空的catch块、不必要的对象创建等。
它支持多种编程语言,包括Java、C、C++、JavaScript等。
本文档将详细介绍 PMD 审计工具的使用方法。
二、安装与配置1. 下载 PMD 工具:访问 PMD 官方网站,下载适合您开发环境的版本。
2. 安装 PMD 工具:根据下载的安装包进行安装。
3. 配置 PMD 工具:根据您的开发环境,设置适当的文件和目录路径,以便 PMD 能够自动扫描代码。
三、使用步骤1. 创建 PMD 规则文件:PMD 规则文件用于指定需要检查的代码模式。
您可以根据具体需求创建自定义规则文件。
2. 导入规则文件:在 PMD 工具中导入自定义规则文件,以便于使用。
3. 指定要分析的代码目录或文件:在 PMD 工具中选择要分析的代码目录或文件。
4. 运行 PMD 工具:执行 PMD 工具,等待分析结果输出。
5. 查看分析结果:PMD 会输出代码中的潜在问题及其位置,以便于修复。
四、常见用法1. 使用 PMD 分析 Java 代码:运行 PMD 工具,指定要分析的Java 代码目录或文件,即可得到分析结果。
2. 使用自定义规则:创建自定义规则文件,并导入 PMD 工具中,即可针对特定代码模式进行详细检查。
3. 多语言支持:PMD 支持多种编程语言,可以根据需要选择相应的语言版本进行分析。
4. 结果输出:PMD 支持多种结果输出方式,如文本、HTML、XML 等,可以根据需要选择合适的方式。
5. 分析报告生成:PMD 提供报告生成功能,可以将分析结果以HTML 或 PDF 等格式输出,便于查看和分享。
五、常见问题及解决方法1. PMD 工具无法运行:确保安装了正确的 PMD 版本,并正确配置了代码路径等信息。
检查 PMD 日志文件,查找错误信息进行解决。
2. 分析结果不准确:确保代码目录或文件选择正确,并检查自定义规则文件的有效性。
PMD使用教程【转】
Tom Copeland 的 PMD 是一个开源(BSD 许可)工具,它分析 Java 源代码,找出潜在的 bug。
在一般意义上来说,它与 FindBugs 和 Lint4j 这类工具类似。
但是,所有这些工具找出的bug 各不相同,所以在给定代码基址上把这些工具都运行一遍很有好处。
您也可以把 PMD 与Ant 集成在一起,以便进行自动源代码检查,而且还可以将 PMD 与一些可用于大多数主要IDE 和程序员编辑器的插件集成在一起,本文介绍Eclipse IDE 下PMD的插件。
一、安装基于Eclipse IDE的插件1、启动Eclipse IDE,打开工程2、选择";Help";->;";Software Updates";->;";Find and Install";3、点击";Next";, 点击";New remote site";创建一个远程站点连接4、输入此站点的描述名称,例如:“PMD Plus”,然后输入安装地址";/eclipse";,遵守协议,然后一路next,直至更新完毕重启Eclipse IDE二、使用PMD1、启动Eclipse IDE,打开工程,选择 ";Windows";->;";Preferences";下的PMD项,其中Rules Configuration 项目可以配置PMD的检查规则,自定义检查规则也可以在此通过Import的方式导入到PMD中2、配置好后,鼠标右键点击工程中需要检查的JavaSource,选择";PMD";->;";Check Code With PMD"; ,之后PMD就会通过规则检查你的JavaSource了并且将信息显示在PMD自己的视图上3、示例import java.util.*;public class Test {public static void main(String[] args) {try{if(true) {}System.out.println(";Hello World!";);} catch(Exception e) {}}}以上代码PMD会检查出:catch块中没有内容、if判断块中没有内容、代码中出现System.out.println等警告描述三、关于PMD规则1、PMD 包含 16 个规则集,涵盖了 Java 的各种常见问题,其中一些规则要比其他规则更有争议:基本(rulesets/basic.xml)——规则的一个基本合集,可能大多数开发人员都不认同它:catch 块不该为空,无论何时重写 equals(),都要重写 hashCode(),等等。
pmd 审计工具用法 -回复
pmd 审计工具用法-回复关于PMD审计工具的用法PMD是一个静态代码分析工具,用于检测和发现Java项目中的代码错误、不规范的写法、潜在的性能问题和安全隐患等。
它通过扫描Java源代码,对代码进行语法分析和规则检测,并生成相应的报告,帮助开发人员提高代码质量和效率。
本文将详细介绍PMD审计工具的用法与技巧。
一、安装和配置PMD1. 下载PMD:首先,从PMD的官方网站(2. 解压PMD压缩包:将下载的压缩包解压到本地的一个目录中,例如C:\pmd。
3. 配置PMD:进入解压后的PMD目录,在该目录下找到pmd.bat (Windows)或pmd.sh(Linux/macOS)文件,运行该文件即可启动PMD控制台界面。
二、使用PMD进行代码审计1. 选择需要审计的项目:在PMD控制台界面中,按照提示选择需要进行代码审计的Java项目,可以是一个项目文件夹或单个Java文件。
2. 配置审计规则集:PMD提供了多个预定义的审计规则集,例如basic、design、rulesets/java/braces等。
根据项目的实际需要,选择适合的规则集。
3. 运行审计:在PMD控制台界面中,点击"Run"按钮开始代码审计。
PMD 会对选定的Java项目进行静态代码分析,并生成审计报告。
4. 分析审计报告:审计完成后,PMD会生成一个详细的审计报告,其中包含了检测到的问题列表、问题所在的代码位置以及问题的描述信息。
开发人员可以根据报告中的信息,逐个修复代码中的问题。
三、优化PMD的使用1. 配置自定义规则:除了PMD提供的预定义规则集外,还可以根据项目的特殊需求,配置自定义的审计规则。
可以在PMD的配置文件(pmd.xml)中添加或编辑规则。
2. 集成到集成开发环境(IDE):PMD提供了插件形式的集成开发环境支持,例如Eclipse、IntelliJ IDEA等。
将PMD集成到IDE中,可以在开发过程中实时检测代码质量,并给出相应的建议和警告。
pMD18-T载体说明
Hale Waihona Puke ●制品说明pMD18-T Vector 是一种高效克隆 PCR 产物(TA Cloning)的专用载体。本载体由 pUC18 载体改建 而成,在 pUC18 载体的多克隆位点处的 Xba I 和 Sal I 识别位点之间插入了 EcoR V 识别位点,用 EcoR V 进行酶切反应后,再在两侧的 3'端添加“T”而成。因大部分耐热性 DNA 聚合酶进行 PCR 反应时都 有在 PCR 产物的 3'末端添加一个“A”的特性,所以使用本制品可以大大提高 PCR 产物的连接、克 隆效率。 由于本载体以 pUC18 载体为基础构建而成,所以它具有同 pUC18 载体相同的功能。此外,本制品中的 高效连接液 Ligation Mix 可以在极短时间内(约 5 分钟)完成连接反应,且此连接液可以直接用于细菌 转化,大大方便了实验操作。本制品中的 Control Insert(500 bp)还可以用于 Control 反应。
419 347~370 478~500 146~469 852~1466 1626~2486
●实验操作
■ Control DNA片段的克隆实验
A)操作方法
1)在微量离心管中配制下列 DNA 溶液,全量为 5 µl。
pMD18-T Vector*1
1 µl
Control Insert*2
1 µl
dH2O
3 µl
2)加入 5 µl(等量)的 Ligation Mix。 3)16℃反应 30 分钟。
注) ① 室温(25℃)也能正常进行连接反应,但反应效率稍微降低。 ② 5 分钟也能正常进行连接反应,但反应效率稍微降低。
4)全量(10 µl)加入至 100 µl JM109 感受态细胞中,冰中放置 30 分钟。 5)42℃加热 45 秒钟后,再在冰中放置 1 分钟。 6)加入 890 µl SOC 培养基,37℃振荡培养 60 分钟。 7)在含有 X-Gal、IPTG、Amp 的 L-琼脂平板培养基上培养,形成单菌落。计数白色、蓝色菌落。 8)挑选白色菌落,使用 PCR 法确认载体中插入片段的长度大小。
FlexPMD与FlexPrettyPrintCommand使用
一、FlexPMD1.什么是FlexPMDFlexPMD是一个通过审查as3/Flex代码目录检测共性的不良编码习惯以达到提升代码质量的工具。
不良的编码习惯包括但不限于:a)无效代码(未使用的方法、变量、常量等)b)低效代码(过于繁琐的构造函数等)c)过度复杂的代码(N层循环、N层if-else)d)错误使用flex生命周期编码2.安装与使用a)拷贝到flash builder安装目录\pluginsb)拷贝到任意不含空格的目录并解压c)重启flash builder,查看Preferences选项,多出一项:FlexPMD,配置各选项如截图(自行根据flex-pmd-all-in-one-bundle-1.2解压目录调整)d)运行:e)二、FlexPrettyPrintCommand1.什么是FlexPrettyPrintCommand对flex代码进行各种格式化,生成asdoc。
2.安装与使用a)解压zip包(共三个jar文件),并拷贝到flashbuilder安装目录\pluginsb)重启flash builder,查看Preferences选项,多出一项:Flex Formatting。
(设置各种格式化参数,我们不要设置,统一导入模板,参看步骤d)c)Flash builder界面上多出一组工具。
(生成asdoc和格式化,格式化我们使用步骤d中的自动格式化,asdoc可以通过点击此工具条生成)d)设置为保存即格式化。
e)模板导入:将此模板导入到eclipse中。
3.特别说明此模板我进行了一定的修改,但是可能对有些代码格式化的并不好,也可能不符合您的编码习惯,有问题请及时反馈,讨论解决。
静态分析工具pmd使用说明(StaticanalysistoolsusePMD)
静态分析工具pmd使用说明(Static analysis tools use PMD)Static analysis tools use PMDCatalogStatic analysis tools using PMD 1.2 directory.1. the purpose of the preparation of 3.2. introduction to PMD 4.The installation and operation of 3. PMD 4.3.1 install and run PMD. from the command line 43.2 in the Eclipse install PMD plug-in operation mode 6.3.3 using Ant to call 8.4. on the PMD 10 rules.5. user-defined PMD rule 15.6. conclusion 18.7. reference 18.1. the purpose of the preparationQuality is the key factor to measure the success of a software. But for the commercial software system, especially the enterprise application software system, in addition to software quality, document quality, code quality is also very important. Software development to the encoding stage, the biggest risk lies in how to ensure the readability and consistency of the code, which makes the software maintenance cost is not high.In the process of software development, the following circumstances can be seen everywhere:1) software maintenance time is long, and the maintenance staff's enthusiasm is not high:As developers of software maintenance, especially when taking over not to develop their own products source, even if there is good documentation of the code will still be lengthy, no comment "paragraph as the acme of perfection". Understanding is so difficult, not to mention to modify or add new functions. Therefore, many developers are not willing to work in software maintenance.2) new developers to integrate into the team a long time:In addition to no good mechanism of training, documentation and other effective, each person with a set of encoding style, but also easily lead to new members for understanding existing code is not enough, even the deviation.Improve the quality of the code, in addition to improve thelogic control and understanding of business processes, the code itself also has room for improvement, for example, some potential problems can be early to avoid. Similar to the encoding specification on the content, if the personnel to carry out self inspection by encoding, then it requires a lot of work, if the checker can use the code to check it, it will greatly improve the efficiency of encoding.The project team is now working to check code is basically through artificial way, it is difficult to implement, check the effect is not very obvious. PMD is a tool that can be used directly to its own rules (of course, you can also use your own rules) of the Java source program analysis to identify process problems, can greatly reduce the code inspection work is tedious, for the project team to maintain and develop the future work to play a guiding role.This paper mainly introduces how to use PMD code automatic inspection tool, in order to avoid some of the potential problems and find out the logic of the code error.2. introduction to PMDPMD is an open source Java code analysis tool error. Unlike other analysis tools, PMD learned through the static analysis of code error. That is to say, the report in running the Java program under the condition of error.PMD can be used directly with many rules, these rules can find out many problems using the Java source program, for example:potential bug: the try/catch/finally/switch statement emptyUnused Code: unused local variables, parameters, private methods etc.optional Code: String/StringBuffer abuseComplex expressions: must not? If statement, you can use the while to complete the cycle for cyclerepeat code: copy / paste code means copy / paste bugsThe body of the loop? Create a new object: try not to for or while cycle in instantiating a new object@: Connect, Result, resource off after Statement such as the use of closed off to ensureIn addition, users can also define their own rules, check whether the Java code with certain encoding specification. For example, you can write a PMD to find all the rules, create Thread and Socket object operation.3. working principlePMD is the core of the JavaCC parser generator. PMD combined with JavaCC and EBNF (extended Backus Naur form, Extended Backus-Naur Formal) grammar, plus JJTree, Java source code is parsed into an abstract syntax tree (AST Abstract, Syntax Tree). Obviously, this sentence is not so good, and the following instructions.Fundamentally, Java source code only some ordinary text. However, in order to let the parser recognize these ordinary text is Java code is legitimate, they must meet the requirements of a specific structure. This structure can be represented by a syntactic meta language called EBNF, commonly referred to as the "grammar" (Grammar). According to the requirements of JavaCC generated parser grammar, the parser can be used in the Java programming language program analysis.But in the actual operation of the PMD even after a conversion of JJTree. JJTree is a JavaCC plug-in, AST expansion through the JavaCC generated parser. AST is a Java symbol stream on the semantic layer. With JJTree, the syntax analysis result is no longer "System, out,.,.,. Symbol sequences like println, but a by a tree structure. For example, here is a simple Java code and corresponding AST.Java source code:Public class {FooPublic void (bar) {System.out.println ("Hello world");}}The corresponding abstract syntax treeCompilationUnit TypeDeclaration ClassDeclaration UnmodifiedClassDeclaration ClassBody ClassBodyDeclaration MethodDeclaration ResultType MethodDeclarator FormalParametersBlockBlockStatementStatement StatementEXPression PrimaryExpressionPrimaryPrefixNamePrimarySuffixArgumentsArgumentListExpressionPrimaryExpressionPrimaryPrefixLiteralThe installation and operation of 4. PMDFour1 install and run PMD from the command lineYou can download the PMD from the PMD website of the binary version, or download the source code version, download the ZIP file is. If you download the binary version first, unzip it to any directory. What to do next, you will see how to use it: the most simple, if you want to run PMD on a Java source code directory, just run the following commands on the command line:E:\SoftWare\pmd-bin-4.2.1\pmd-4.2.1\bin>java-jar..\lib\pmd-4.2.1.jar D:\ebsserVice\ebsservice\src text rulesets/unusedcode.xmlThe output results such as:D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMPolicyInput.java:51 Avoid unused private fields such as'logger'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMPolicyShow.java:25 Avoid unused private fields such as'logger'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMQueryPolicyByPoliCyNo.java:32 Avoid unused local variables such as'visaStatus'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMQueryPolicyByPoliCyNo.java:44 Avoid unused local variables such as'temp'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\erisk\ESMPolicyInpuT.java:28 Avoid unused private fields such as'logger'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\jrisk\JSMPolicyInpuT.java:22 Avoid unused private fields such as'logger'.Some can be loaded as optional parameters must be in front of or behind the:-debug: print debug log information-targetjdk: specifies the target source code version 1.3, 1.4, 1.5, 1.6 or 1.7;The default is 1.5-cpus: specifies the number of threads created-encoding: specifies the PMD check code encoding method-excludemarker: PMD need to be ignored for the specified tag, the default is NOPMD-shortnames: showed a shortened file name in the reportThe path -linkprefix: HTML source file, just to show HTML-lineprefix: custom anchor for the source file in the line, just for the HTML display-minimumpriority: rules of precedence constraints, lowerpriority rules will not be used-nojava: does not check the java file, the default is to check the java file-jsp: check the JSP/JSF file, the default is not checked-reportfile: will report the output to a file, the default is printed on the consoleThe output of the -benchmark: a reference list, the default output to the consoleThe default XSLT -xslt: coverageSpecify the source file using the -auxclasspath: class pathFor example, in the windows system, examples are as follows:C:\> Java -jar pmd-4.2.1.jar c:\my\source\code text unusedcode, imports -targetjdK 1.5 -debugC:\> Java -jar pmd-4.2.1.jar c:\my\source\code XML basic, design -encoding UTF-8C:\> Java -jar pmd-4.2.1.jar c:\my\source\code HTML typeresolution -auxclasspathCommons-collections.jar; derby.jar4.2 in the Eclipse install PMD plug-in operation modePMD can be integrated as a plug-in to many popular IDE, many plugins are included in the PMD jar file, the jar file contains a set of rules. So although the use of rulesets/unusedcode.xml as a parameter reference rule set some of the plugins, but actually is the use of getResourceAsStream (PMD) method from jar file loading.Because Eclipse is a popular open source Java/J2EE IDE development, so this paper mainly introduces how to use the PMD tool in Eclipse code check.Install the Eclipse IDE plugin based on 4.2.1The process of installing the Eclipse PMD plugin is as follows:Start Eclipse?Select the Help-->Software Updates-->Find and Install?Select Next, New? Remote siteEnter PMD? In the Name box, URL box, /eclipse inputAfter the dialog box has been? Click next or accept the agreement, complete the Eclipse PMD plugin installedCan download the zip file to execute the process, then, justuse New locale site instead of New remote site, and use the downloaded zip file.Can use Windows-->Preferences to configure PMD.By right clicking on an item, then select the PMD-->Check node with PMD, you can use the PMD tool to check code. If you want to repeat the code detection, then right-click an item, select the PMD-->Find suspect cut and paste. The inspection results will be placed in the reports directory, the file name is cpd-report.txt.Can help the system to use the Eclipse plugin to view the PMD document.After installing the update, if there is an exception, such as "ng.RuntimeException: Could not find that class XXXX", then try to remove the workspace inthe.Metadata/plugins/net.sourceforge.pmd.eclipse directory of the ruleset.xml file.The use of PMD 4.2.21, start Eclipse IDE, open the project, PMD select "Windows", "Preferences", which Rules Configuration project can configure PMD to check rules, custom check rules can also be here by way of Import into PMD2, configured to check, click the right mouse button in the JavaSource project, select the "PMD" - "Check Code With PMD", PMD will check your JavaSource through the rules and theinformation displayed in the PMD view on their own3, sampleImport java.util.*;Public class {TestPublic static void main (String[] args) {Try{If (true) {}System.out.println ("Hello World!");Catch (Exception E) {}}}}The above code will check out: PMD catch block if judgment no content, no content, block code System.out.println warning descriptionCall 4.3 AntThe following is the main Ant configuration information<path id= "pmd.path" ><fileset dir= "${lib.dir}/pmd-3.8" ><include name= "**/*.jar" / ></fileset></path><taskdef name= "PMD" classname="net.sourceforge.pmd.ant.PMDTask" classpathref= "pmd.path" / ><taskdef name= "cpd" classname="net.sourceforge.pmd.cpd.CPDTask" classpathref= "pmd.path" / ><target name= "PMD" ><pmd shortFilenames= "true" ><ruleset>rulesets/favorites.xml</ruleset><formatter type= "HTML" toFile= "d:\foo.html" toConsole= "false" / ><fileset dir= "${src.dir}" ><include name= "**/*.java" / ></fileset></pmd></target><target name= "cpd" ><cpd minimumTokenCount= "100" outputFile= "d:/cpd.txt" ><fileset dir= "${src.dir}" ><include name= "**/*.java" / ></fileset></cpd></target>Use the Ant command to run build.xml PMD, you will be in accordance with the set rules automatically executes code check.About 5. PMD rulesSelect the appropriate rulesRun all the centralized rules will conflict very much, many of these conflicts is not important. In the conflict so much foryou care about part of the result is not at all what efficiency.So we need from the set of rules that must change the place to start is a better choice, for example, just run the unusedcode check, and then modify the unused local variables and member variables. Then run the basic check, modify all empty statements, statements such as if etc..Finally, you can perform design related or controversial set of rules, or a custom set of rules.With the introduction of rules: (PMD plugin (Chinese).Xls code analysis rules)PMD comes with a lot of set of rules and classification into different ruleset files, such asBasic contains everyone must comply with the code of best practices, such as EmptyCatchBlockAbout Braces conditional rules, such as IfStmtsMustUseBracesCode Size about the size of code rules, such as the length, the length of the parameter, the number of attributesCloning of Clone implementation of the rules, such as whether there is super.clone ()Controversial some of the controversial rules, such as the UnnecessaryConstructor constructor is unnecessaryThe Coupling object connection rulesDesign can check the design problems, such as SwitchStmtsShouldHaveDefaultNeed to follow the rules of the Finalizers using finalizers, such as FinalizeOnlyCallsSuperFinalizeImport Statements and import related rules, such as DuplicateImports importOnly J2EE class.getClassLoader (rule UseProperClassLoader) may not be correct, with(Thread.currentThread) (.GetContextClassLoader) to replaceJavabeans and JavaBean regulate the relevant rules, BeanMembersShouldSerialize attribute must beThe lack of serialization and serialization of a ID MissingSerialVersionUIDJUnit Tests and JUnit test, such as JUnitSpelling spell checkLogging (Java) some wrong usage check Logger, such as MoreThanOneLogger more than LoggerLogging (Jakarta) some rules using Jakarta Logger, UseCorrectExceptionLoggingAbnormal handling and ProperLogger is the correct definitionof LoggerMigrating JDK version of the transplant rules, such as ReplaceVectorWithList List instead of VectorNaming and naming rules, the name is too short or too long, the naming conventions etc.。
PMD使用说明
静态分析工具PMD使用说明目录静态分析工具PMD使用说明 (1)目录 (2)1.编写目的 (3)2.PMD简介 (4)3.PMD的安装和运行 (5)3.1安装并从命令行运行PMD (5)3.2在Eclipse中安装PMD插件运行方式 (7)3.3 使用Ant进行调用 (9)4.关于PMD规则 (10)5.编写自定义的PMD规则 (15)6.结束语 (17)7.参考资料 (18)1.编写目的质量是衡量一个软件是否成功的关键要素。
而对于商业软件系统,尤其是企业应用软件系统来说,除了软件运行质量、文档质量以外,代码的质量也是非常重要的。
软件开发进行到编码阶段的时候,最大的风险就在于如何保证代码的易读性和一致性,从而使得软件的维护的代价不会很高。
在软件开发的过程中,以下几种情形随处可见:1) 软件维护时间长,而且维护人员的积极性不高:做过软件维护的开发人员,尤其是在接手不是自己开发产品的源码的时候,即使有良好的文档说明,仍然会对代码中冗长、没有注释的段落“叹为观止”。
理解尚且如此困难,何况要修改或者增加新的功能。
因此,很多开发人员不愿意进行软件维护的工作。
2)新的开发人员融入团队的时间比较长:除了没有良好的培训、文档等有效的机制以外,每个人一套的编码风格,也容易造成新成员对于已有代码的理解不够,甚至出现偏差。
提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。
类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。
项目组目前代码检查的工作基本上都是通过人工的方式,实行起来比较困难,检查的效果也不是很明显。
PMD正是这样一种工具,可以直接使用它自带的规则(当然也可以使用自己的规则)对Java源程序进行分析找出程序存在的问题,可以很大程度上的减轻代码检查工作的繁琐,为项目组今后的维护和开发工作起到指导的作用。
PMD使用方法
PMD使用流程1.首先将要使用的窗体导入到Myeclipse页面:集体操作Window—>show view—>other—>PMD—>Violations OutLine,violations Overview 。
2.PMD检查方式:对一个项目进行检查,对项目的下级文件进行检查,对展开的类进行检查。
3.集体检查方法:右键点击将要检查的文件选择PMD选项,选择Check Code With PMD选项进行代码检查。
错误信息显示在violation Overview框体中,如下图所示。
注:Element:检查的文件#Violation/LOC(line of code缩写)为:警告个数/源代码行数x1000。
#Violations/Method:警告个数除以方法个数(类中每个方法中的平均错误)#Project :所在项目右键点击框体的任意位置显示4个选项按钮对应的功能为1)F ilter Resource:是否展示下列工程2)F ilter Priorities : 想要展示的警告等级(5个等级,红色为最严重的警告)3)P resentation Type:展示的结构4)c lear PMD violations :清除Violations Outline内的信息4.双击“Element“列下面的错误元素,显示警告所在的类文件。
错误的详细信息将在Violations Overview框体中显示。
右键点击框体中显示的警告信息时,有四个功能选项。
5.1)Show details:显示错误的详细信息,如下图所示。
2)Mark as reviews : 标记警告信息。
3)Remove Violation(s) :清除错误信息。
4)clear violations reviews:清除之前标记。
6.Generate Abstract Syntax tree:生成抽象语法树点击生成XX.ast的XML文件。
马兰士PMD650MD录音机使用说明
PMD650 MD录音机使用说明各端口及控制开关左侧DC IN 13V 外电源输入插口。
直流12 ~ 13V ,芯为正极。
录音时耗电为5.5W / 0.46A。
待机时耗电为3.5W / 0.29A。
本电源能自动向机内的充电电池充电,充电时插座旁边的CHARGE指示灯点亮,约三个小时充满。
LINE OUT RCA型左右声道输出插座,输出电平2 V / 2 KΩDIGITAL OUT 为XLR型数字信号输出插座,输出电平3.3 Vp-p / 110Ω。
该数字信号由旁边的小开关控制通断,非数字信号输出状态时应置OFF。
右侧DIGITAL IN 为RCA型数字信号输入插座,输入电平0.5 Vp-p / 75Ω。
REMOTE 为RCA插座,可以接入RC – 5有线遥控器(另购件)。
MIC / LINE IN 为XLR左右声道信号输入插座(1端接地)。
MIC输入电平:–60dB / 9KΩ;LINE输入电平:– 20 dB / 47KΩ。
两种输入方式由专门的开关转换。
PHANTOM +48V 48V幻象供电开关上部REC MODE 录音方式选择开关:可选择SP(正常速度)或LP(慢一倍速度)。
为确保高质量的录音,LP方式时只能录制单声道信号。
SOURCE 录音方式选择开关:三档为STERE(立体声)/ MONO Loh(单声道,此时由L声道输入信号,R声道以低15dB的强度录制与L声道相同的信号)/ INT MIC(采用本机话筒录音)。
HP / SPK MODE 监听及输出选择开关:分别为左声道 / 立体声 / 右声道。
MIC ATTEN 信号输入衰减选择开关:0 dB (没有衰减)/ –15 dB(衰减15 dB)/ –30 dB(衰减30 dB)。
INPUT LEVEL 输入选择:MIC(话筒入)/ LINE(线路入)。
REC LEVEL 录音电平控制方式:MANUAL(手控)/ LIMITER(手动加限幅)/ ALC(自动增益控制)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
静态分析工具PMD使用说明目录静态分析工具PMD使用说明 (1)目录 (2)1.编写目的 (3)2.PMD简介 (4)3.PMD的安装和运行 (5)3.1安装并从命令行运行PMD................................................ 错误!未定义书签。
3.2在Eclipse中安装PMD插件运行方式 (6)3.3 使用Ant进行调用......................................................... 错误!未定义书签。
4.关于PMD规则 (9)5.编写自定义的PMD规则 (14)6.结束语 (16)7.参考资料 (16)1.编写目的质量是衡量一个软件是否成功的关键要素。
而对于商业软件系统,尤其是企业应用软件系统来说,除了软件运行质量、文档质量以外,代码的质量也是非常重要的。
软件开发进行到编码阶段的时候,最大的风险就在于如何保证代码的易读性和一致性,从而使得软件的维护的代价不会很高。
在软件开发的过程中,以下几种情形随处可见:1) 软件维护时间长,而且维护人员的积极性不高:做过软件维护的开发人员,尤其是在接手不是自己开发产品的源码的时候,即使有良好的文档说明,仍然会对代码中冗长、没有注释的段落“叹为观止”。
理解尚且如此困难,何况要修改或者增加新的功能。
因此,很多开发人员不愿意进行软件维护的工作。
2)新的开发人员融入团队的时间比较长:除了没有良好的培训、文档等有效的机制以外,每个人一套的编码风格,也容易造成新成员对于已有代码的理解不够,甚至出现偏差。
提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。
类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。
项目组目前代码检查的工作基本上都是通过人工的方式,实行起来比较困难,检查的效果也不是很明显。
PMD正是这样一种工具,可以直接使用它自带的规则(当然也可以使用自己的规则)对Java源程序进行分析找出程序存在的问题,可以很大程度上的减轻代码检查工作的繁琐,为项目组今后的维护和开发工作起到指导的作用。
本文主要介绍了如何使用pmd工具进行代码的自动化检查,以规避一些潜在的问题并找出代码的逻辑错误。
2.PMD简介PMD是一种开源分析Java代码错误的工具。
与其他分析工具不同的是,PMD 通过静态分析获知代码错误。
也就是说,在不运行Java程序的情况下报告错误。
PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题,例如:®潜在的bug:空的try/catch/finally/switch语句®未使用的代码:未使用的局部变量、参数、私有方法等® 可选的代码:String/StringBuffer的滥用®复杂的表达式:不必须的if语句、可以使用while循环完成的for循环®重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs®循环体创建新对象:尽量不要再for或while循环体内实例化一个新对象@ 资源关闭:Connect,Result,Statement等使用之后确保关闭掉此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。
例如,你可以编写一个规则,要求PMD找出所有创建Thread和Socket 对象的操作。
3.工作原理PMD的核心是JavaCC解析器生成器。
PMD结合运用JavaCC和EBNF(扩展巴科斯-诺尔范式,Extended Backus-Naur Formal)语法,再加上JJTree,把Java源代码解析成抽象语法树(AST,Abstract Syntax Tree)。
显然,这句话不那么好懂,且看下文具体说明。
从根本上看,Java源代码只是一些普通的文本。
不过,为了让解析器承认这些普通的文本是合法的Java代码,它们必须符合某种特定的结构要求。
这种结构可以用一种称为EBNF的句法元语言表示,通常称为“语法”(Grammar)。
JavaCC根据语法要求生成解析器,这个解析器就可以用于解析用Java编程语言编写的程序。
不过实际运行中的PMD还要经过JJTree的一次转换。
JJTree是一个JavaCC的插件,通过AST扩充JavaCC生成的解析器。
AST是一个Java符号流之上的语义层。
有了JJTree,语法分析的结果不再是“System, ., out, ., . println”之类的符号序列,而是一个由对象构成的树型层次结构。
例如,下面是一段简单的Java代码以及与之对应的AST。
Java源代码:public class Foo {public void bar() {System.out.println("hello world");}}对应的抽象语法树CompilationUnitTypeDeclarationClassDeclarationUnmodifiedClassDeclarationClassBodyClassBodyDeclarationMethodDeclarationResultTypeMethodDeclaratorFormalParametersBlockBlockStatementStatementStatementEXPressionPrimaryExpressionPrimaryPrefixNamePrimarySuffixArgumentsArgumentListExpressionPrimaryExpressionPrimaryPrefixLiteral4.PMD的安装和运行4.1.在Eclipse中安装PMD插件运行方式安装PMD插件/eclipse/启动Eclipse IDE,打开工程,选择 "Windows"->"Preferences"下的PMD项,其中Rules Configuration 项目可以配置PMD的检查规则,自定义检查规则也可以在此通过Import的方式导入到PMD中配置好后,鼠标右键点击工程中需要检查的JavaSource,选择"PMD"->"Check Code With PMD" ,之后PMD就会通过规则检查你的JavaSource了并且将信息显示在PMD自己的视图上以上代码PMD会检查出:代码中出现System.out.println等警告描述。
PMD 的 CPD:帮助发现代码重复:一旦运行了 CPD,您的 Eclipse 根目录下就会创建出一个 report 文件夹,其中包含一个叫做 cpd.txt 的文件,文件中列示了所有重复的代码。
4.2. 其他方式4.2.1.1. 安装并从命令行运行PMD4.2.1.2. 使用Ant进行调用,PMD就会按照你设定好的规则自动执行代码检查了5.关于PMD规则选择合适的规则运行所有的规则集中的规则会产生非常多的冲突,这些冲突中的很多是不重要的。
在这么多的冲突中寻找你关心的部分结果就没有什么效率可言了。
所以需要从明显的规则集,也就是说必须要改的地方开始是比较好的一个选择,例如只是运行unusedcode检查,然后修改没有使用的局部变量和成员变量。
然后运行基本的检查,修改所有的空语句,例如if语句等。
最后可以执行与设计相关的或者存在一定争议的规则集,或者自定义的规则集。
PMD 自带了很多规则集合,并且分类写入不同的 ruleset 文件,如Basic 包含每人都必须遵守的代码最佳实践,如EmptyCatchBlockBraces 关于条件分支的规则,如IfStmtsMustUseBracesCode Size 关于代码大小的规则,如方法的长度,参数的长度,属性的个数等Clone 克隆实现的规则,如是否有super.clone()Controversial 一些有争议的规则,如UnnecessaryConstructor不必要的构造器Coupling 对象连接有关的规则Design 可以检查有问题的设计,如SwitchStmtsShouldHaveDefaultFinalizers 使用finalizers时需遵循的规则,如FinalizeOnlyCallsSuperFinalizeImport Statements 和import有关的规则,如DuplicateImports重复importJ2EE 唯一规则UseProperClassLoader,class.getClassLoader()可能不正确,用Thread.currentThread().getContextClassLoader() 代替Javabeans 和javabean规范有关的规则,有BeanMembersShouldSerialize 属性必须序列化和MissingSerialVersionUID缺少序列化IDJUnit Tests 和JUnit测试有关的,如JUnitSpelling拼写检查等Logging (Java) 检查Logger的一些错误用法,如MoreThanOneLogger多个LoggerLogging (Jakarta) 使用Jakarta Logger的一些规则,有UseCorrectExceptionLogging异常处理不当和ProperLogger是否正确定义LoggerMigrating JDK 版本移植的规则,如ReplaceVectorWithList用List代替VectorNaming 和命名有关的规则,名称太短或太长,命名的约定等Optimizations 优化性能的一些规则,如LocalVariableCouldBeFinal本地变量如果只赋值一次,则应该声明为finalStrict Exceptions 比较严格的异常处理方针,如AvoidCatchingThrowable Strings 使用String和StringBuffer时应遵守的规则,如StringToStringSun Security 编写安全的代码,有MethodReturnsInternalArray直接返回内部的数组,更安全的做法是返回一个拷贝和ArrayIsStoredDirectlyUnused Code 检查未使用的代码,如UnusedPrivateField未使用的私有属性Java Server Pages 编写jsp的一些方针,如NoLongScriptsJava Server Faces 编写jsf的一些方针,有DontNestJsfInJstlIteration,在Jsf里使用jstl的标签自定义规则:有两个办法来自定义规则,可以编写java类和编写XPath,编写java类的一般步骤是,先确定要查找的代码形式,利用PMD自带的designer.bat工具查看AST(抽象语法树),然后编写规则类(继承net.sourceforge.pmd.AbstractRule),然后编写一个ruleset的XML文件,最后就可以运行PMD进行检查。