第五节定义设计规则DefiningDesignRules

第五节定义设计规则DefiningDesignRules
第五节定义设计规则DefiningDesignRules

正文

第五节–定义设计规则(Defining Design Rules)

发布日期:2009/1/2 15:39:25 来源:作者:点击:2294

第五节–定义设计规则(Defining Design Rules)

一旦你输入了网络和元件后,你就可以指定设计规则(Design Rules)和各层的

定义(Layer Arrangements)。包含安全间距(Clearance)、布线(Routing)和高速电路

(High Speed)约束等等,这些规则分配作为默认(Default)的条件、类(Class)、网络

(Nets)、组(Group)、管脚对(Pin Pairs)、封装(Decal)和元件(Components);另外,你

还可以设定指定条件的设计规则(Conditional Design Rules)和差分网络(Differential

Pairs)的规则。

本节将显示如何:

· 设置PCB 各层的定义(Layer Arrangement)

· 设置缺省的安全间距规则(Clearance Rules)

· 设置网络的安全间距规则(Net Clearance Rules)

· 设置条件规则(Conditional Rules)

· 设置层的显示颜色(Layer Colors)

在你继续之前,如果设计文件还没有打开,打开它。

1. 从工具条中选择打开(Open)图标。

2. 当Save old file before reloading?提示出现后,选择No。

3. 在文件打开(File Open)对话框中,双击名为的文件。

设置PCB 各层的定义(Layer Arrangement)

PADS Layout 允许你定义PCB 的各层(Layer Arrangements)。这包括指定层数

(Number of Layers)、网络分配到一个平面层上、各层的介质定义(Layer Stackup 和

厚度定义(Thickness)。

本设计是一个四层板,其中有两层定义为平面层(Plane Layers)和混合分割层。增加板子的层数(Number of Layers)

PADS Layout 新建文件缺省指定的是双面板。

注意:但是在这个教程中打开的已经是四层板了,因为在PADS

Logic 教程中已经进行了此项设置,你可以把此部分当做一个复习,如果需要按此

步骤进行学习的话,你可以建立一个新的PCB 文件进行学习操作。

点击菜单文件/新建(File/New),新建一个默认的PCB 文件,此部分只为练习。

为了改变板子的层数:

1. 选择设置/层定义(Setup/Layer Definition),层设置(Layers Setup)对话框将出

现。

2. 从对话框的电子层(Electrical Layers)区域选择修改(Modify)按钮,修改层对

话框对话框将出现。

3. 在输入新的层数(Enter New Number)区域内打入4,增加板子层数从2 到4。

4. 选择OK,重新指定层(Reassign Electrical Layers)对话框将出现,在这个

话框中你可以重新指定原来的层对应现在的新层,如原来的Layer1 仍旧定义为

Layer1,原来的Layer2 重新定义为Layer4。这里我们直接选择按钮OK 即可,关

闭这个对话框。

这时我们看到板已经被更改为4 层板了。不保存以上的练习文件,我们重新

打开文件,继续其他方面的设置。

设置层的排列(Layer Arrangement)和命名(Names)

一旦你设置了正确的层数,你将要指定(Assign)各个层的类型(Types)和名字。

1. 设置第一层。

a. 在层设置(Layers Setup)对话框中,从各层的列表中选择顶层(Top

layer) ,在名字(Name)区域重新命名顶层(Top layer)为主元件面

(Primary Component Side),本例子中已经设置好。

b. 在印制板的层类型(Electrical Layer Type)区域,选择元件(Component) 层类型;在平面层类型(Plane Type)选择No Plane,并且选择布线方向为竖向(Vertical)。

2. 设置第二层。

a. 选择第二层、中间层(Inner Layer 2),重新命名为地平面层(Ground Plane)。

b. 改变平面层类型(Plane Type)到CAM 平面层(CAM Plane)。一旦某一层

结合到平面层(Plane Layer),分配网络(Assign Nets)按钮将出现在对话框中。

c. 点击分配网络(Assign Nets)按钮,平面层网络(Plane Layer

Nets)对话框将出现。

d. 从所有网络(All Nets)列表中选择GND 网络。

e. 选择添加(Add)按钮,分配GND 网络到地线平面层(Ground Plane layer)。

f. 选择OK。

g. 设置布线方向(Routing Direction)为任意(Any)。

3. 设置第三层。

a. 选择第三层、Inner Layer 3,并且重新命名它为电源平面层(Power Plane)。

b. 改变平面层类型(Type)为混合平面层(Mixed Plane)。

c. 选择分配网络(Assign Nets)按钮。

d.从所有网络(All Nets)列表中选择+5V和+12V网络,并且选择添加(Add) 按钮,分配网络到电源平面层(Power Plane layer)。

e. 选择OK。

f. 设置布线方向(Routing Direction)为任意(Any)。

4. 设置底层

a. 选择第四层、Bottom,并且重新命名为次元件面(Secondary Component Side)。

b. 在印制板的层类型(Electrical Layer Type)区域,选择元件(Component)

层类型、在平面层类型(Plane Type)选择非平面层(No Plane),并且选择布线方

向为横向(Horizontal)。

设置层的Stackup

一个典型的四层板的层物理属性(Layer Stackup)设置是,由两个表面都有铜

的、中间为玻璃纤维的双面板,将它们中间再放置一些绝缘的半固化片压制而成。

在Layers Setup 对话框中点击厚度(Thickness) 按钮,在弹出的Layer Thickness 对话框设置层的厚度和叠层(Stackup)参数等值。

注意:将窗口底部的铜厚单位(Copper Thickness Units)设置为Design(mils)

1. 在Layers Thickness 对话框表中选择厚度(Thickness)。

2. 从Name 栏中选择主元件面(Primary Component Side)。

3. 在铜厚度(Thickness)区域打入 (mils),设置铜的重量为1 oz (盎司)的厚度,对应 (1 oz. of copper = .0014”)。

4. 从层列表(Layer List)中选择第二个元件面(Secondary Component Side)。

5. 在铜厚度(Thickness)区域打入 (mils),设置铜的重量为1 oz 的厚度。

6. 选择地线平面层(Ground Plane),并且设置铜厚度为 (mils) ,对应铜的厚度为为 oz。

7. 选择电源平面层(Power Plane),并且设置铜厚度为 (mils) ,对应铜的

厚度为为 oz。

8. 在对话框的Type 区域,在2-3 层之间选择半固化片(Prepreg)。分别设置其他层为Substrate,并且设置各个介电常数(Dielectric)为。

9. 选择OK 按钮,关闭层厚度(Layer Thickness)对话框。.

10. 选择OK ,关闭层设置(Layers Setup)对话框。

提示:这些参数是软件进行特性阻抗、延迟、分布电容等计算所必需的条件。设置缺省的安全间距(Clearance)规则

对于PADS Layout,你可以对层次化(Hierarchy)的设计规则的各个层次定义安全间距(Clearance)、布线(Routing)和高速电路(High Speed)等各种约束。1. 选择设置/设计规则(Setup/Design Rules),规则(Rules)对话框将出现。

2. 选择缺省的(Default)图标,缺省的规则(Default Rules)对话框将出

现。

3. 选择安全间距(Clearance)图标,安全间距规则(Clearance Rules) 对

话框将出现。在对话框的安全间距(Clearance)区域包含了一个PCB 设计数据的矩

阵,这个矩阵数据让你定义各种数据类型之间的安全间距数值。

4. 通过选择矩阵左上角的所有的(All)按钮,设置全局的缺省的安全间

距值。输入安全间距值(Input Clearance Value)对话框将出现。

5. 键入8 并且选择OK,矩阵内的所有值都同时改变为8 了。

6. 在导线宽度(Trace Width)区域,改变规则最小(minimum)为6、建议

(recommended)为8 和最大值(maximum)为12。

7. 设置相同网络(Same Net)和其它的(Other)的安全间距区域值都为12。

8. 为了保存这些改变,在安全间距规则(Clearance Rules)对话框,选择OK。

提示:这里设置的这些数值的单位根据Options 中的当前设置,如果Options

中的单位设置修改,此处的数据相应自动修改。

设置缺省的布线规则(Default Routing Rules)

为了避免在平面层(Plane Layers)上布线,你需要将它们从布线规则定义的有

效地布线层上删除。

1. 选择布线(Routing)图标,布线规则(Routing Rules)对话框将出现。

对话框的Layer Biasing 区域包含一些可选择布线层的列表,这些列表说明那些层

允许布线。

2. 从Selected Layers 中选择电源(Power Plane)和地线(Ground Plane)平面层,

并且选择删除(Remove),定义在这两个平面层(Plane Layers)上不允许布

线。

3. 选择OK,关闭布线规则(Routing Rules)对话框。

提示:当在设计定义了多种不同孔径和焊盘尺寸的过孔类型,在Vias 列表中

的Availabe Vias 和Selected Vias 中可以选择可用的过孔类型和被选择使用的过孔

类型,与上面的可用层定义类似。当点击Thru>>按钮时,将添加所有通

孔类型的过孔为可用;当点击Partials>>按钮时,将添加所有盲埋孔类型

的过孔为可用。

提示:窗口底部的Maximum number of Vias 中你可以设置设计中每个网络允许的最大过孔数量,你可以选择无限制(Unlimited Vias),或者选择最大数量

(Maximum of),同时在右边的输入框中输入所允许的最大值。这项设置只针对自

动布线有效。

4. 选择关闭(Close),关闭缺省的规则(Default Rules)对话框。

设置网络安全间距规则(Net Clearance Rules)

1. 从规则(Rules)对话框中,选择网络(Net)图标,指定特别的网络规

则。

2. 滚动网络列表(Nets list),定位为+5V 网络,按Ctrl 键同时选择+12V 和GND。这三个被选中的网络将显示在被选择区域中,作为你从列表中特别选出的几个网络。

3. 选择安全间距(Clearance)图标,对这三个网络设置同样的安全间距

规则。

4. 在安全间距规则(Clearance Rules)对话框中,通过选择矩阵左上角的所有的

(All)按钮,设置全局的安全间距值,输入安全间距值(Input Clearance Value)

对话框将出现。

5. 输入10 作为全局安全间距,并且选择OK。

6. 在导线宽度(Trace Width)区域,改变规则最小(minimum)为10、建议

(recommended)为12 和最大值(maximum)为15。

7. 设置相同网络(Same Net)和其它的(Other)的安全间距区域值都为12。

8. 为了保存这些改变,在安全间距规则(Clearance Rules)对话框,选择OK。

9. 选择关闭(Close),关闭网络规则(Net Rules)对话框。

对于定义其他几种类型的,如类(Class)、组(Group)、封装(Decal)和元件(Component)等,都是类似定义规则方式,具体请参考PADS Layout 的帮助文档。在这里我们介绍一下这个层次化规则的定义和优先级关系:

Default:默认,对于没有特殊定义的目标,均使用默认规则;

Class:类,由多个网络Net 组成为一个Class,如+、+、+5V 可

以组成一个名称为PWR 的Class,然后对这里Class 一次性设定统一的规则;Net:网络,选择需要设置特殊规则的网络进行设置;

Group:组,由多个Pin Pairs 组成一个Group,类似Class 的概念;

Pin Pairs:管脚对,两个元件管脚之间的连接,一般是一个网络中的一部分,在这里对指定的管脚对进行特殊规则的设置;

Decal:封装,对某一类型的封装进行特殊规则的设定;

Component:元件,对某个或多个元件进行特殊规则的设定。

他们的优先级顺序是:从左到右优先级越来越高,对有冲突的规则设置,左

边设定的规则服从右边设定的规则。

设置条件规则(Conditional Rules)

当在电路中有两个网络除了对应其它目标的规则外还需要说明它们之间的安

全间距(Clearance),你必须定义条件规则(Conditional Rule)。条件规则(Conditional

rule)定义一种条件,当两个网络在相互非常接近的区域内布线时的条件。你可以

对许多层次化的设计规则(Design Rule)的元件指定条件规则(Conditional Rules),

条件规则(Conditional Rule)可以在网络(Nets)、网络和类(Nets and Classes), 类和类

(Classes and Classes)、网络和层(Nets and Layers)等等之间进行定义。

下面的步骤分配网络到网络条件规则:

1. 从规则(Rules)对话框中选择条件规则(Conditional Rules)图标,条

件规则设置(Conditional Rule Setup)对话框将出现。

2. 从源规则目标(Source Rule Object)区域中选择网络(Nets),网络的列表将

现在源规则目标(Source Rule Object)列表中。

3. 选择+5V 网络。

4. 从相对规则目标(Against Rule Object)区域中选择网络(Nets),网络的列表

将出现在相对规则目标(Against Rule Object)列表中。

5. 选择+12V 网络。

6. 选择建立(Create)按钮,定义条件规则(Conditional Rule),新的规则将出现

在已经存在的规则设置(Existing Rule Sets)区域。

7. 在当前规则设置区域(Current Rule Set),点击矩阵(Matrix)可以进入到这个

规则的完全间距设置矩阵进行规则设置,例如你可以将其完全间距都改成

15mils。

8. 关闭所有打开的对话框。

提示:上面的设置是针对+5V 和+12V 在所有层(All Layers)的安全间距设定,

你还可以附加指定特定的层,在Apply to Layer 中可以下拉选择特定的层(如选择

第三层:Power Plane),创建后,这个条件规则就只应用于此特定的层。

设置层的显示颜色(Layer Colors)

显示颜色(Display Colors)对话框指定或改变层的显示颜色,以及说明哪些项目

可见或不可见。设置屏幕背景的颜色、板框以及在设计中其它内容的颜色。

指定一个新的颜色给次元件面层(Secondary Component Side Layer)。

1. 选择设置/显示颜色(Setup/Display Colors)。显示颜色设置(Display Colors

Setup)对话框将出现。

2. 在对话框的顶部,从可选颜色(Selected Color)区域选择淡蓝色(Light blue),

颜色下面的按钮将指示它为当前有效颜色。

3. 在层颜色(Color by Layer)区域,选择次元件面层(Secondary Component

Side Layer)这一行中代表各种项目的方框,指定它们为淡蓝色(Light blue)。

4. 重复第二步和第三步,选择淡绿色(Light green),分配给电源平面层的所

有项目。

显示元件管脚号

在PADS2007 中增加了元件管脚号显示的选项,你可以打开或关闭此项显示。

在Display Color Setup 窗口中,将Labels 项下的Pin Num 列勾选上,并配置合适

的颜色,在PCB 图上即可显示管脚号。

指定其它项目的颜色

1. 为了隐藏某个目标,将它们设置与背景相同的颜色即可;但是它们还是存

在的,只是你不能看到它们。从可选颜色(Selected Color)区域选择黑色Choose

静态代码分析

静态代码分析 一、什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。 在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠性并节省软件开发和测试成本。 静态代码分析工具的优势 1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。 2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。 3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。 二、主流Java静态分析工具 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语句等 复杂类

内河避碰规则

内河避碰规则 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

中华人民共和国内河避碰规则 2003年修正本 《中华人民共和国内河避碰规则(1991)》根据本决定作相应的修改,重新公布。 二○○三年九月二日 第一章总则 第一条宗旨 为维护水上交通秩序,防止碰撞事故,保障人民生命、财产的安全,制定本规则。 第二条适用范围 在中华人民共和国境内江河、湖泊、水库、运河等通航水域及其港口航行、停泊和作业的一切船舶、排筏均应当遵守本规则。 船舶、排筏在国境河流、湖泊航行、停泊和作业,按照中国政府同相邻国家政府签有的协议或者协定执行。 船舶、排筏在与中俄国境河流相通的水域航行、停泊和作业不适用本规则。 第三条责任 船舶、排筏及其所有人、经营人以及船员应当对遵守本规则的疏忽而产生的后果以及对船员通常做法所要求的或者当时特殊情况要求的任何戒备上的疏忽而产生的后果负责。 不论由于何种原因,两船已逼近或者已处于紧迫局面时,任何一船都应当果断地采取最有助于避碰的行动,包括在紧迫危险时而背离本规则,以挽救危局。 不论由于何种原因,在长江干线航行的客渡船都必须避让顺航道行驶的船舶。 第四条特别规定 本规则授权各省、自治区、直辖市海事机构,长江、黑龙江海事局及辖区内有内河的沿海海事机构根据辖区具体情况,制定包括分道通航等有关交通管制在内的特别规定,报交通部批准后生效。 第五条定义 本规则下列用语的含义是: (一)“船舶”是指各种船艇、移动式平台、水上飞机和其他水上运输工具,但不包括排筏。 (二)“机动船”是指用机器推动的船舶。 (三)“非自航船”是指驳船、囤船等本身没有动力推动的船舶。 (四)“帆船”是指任何正在驶帆的船舶,包括装有推进器而不在使用者。 (五)“拖船”是指从事吊拖或者顶推(包括旁拖)的任何机动船。 (六)“船队”是指由拖船和被吊拖、顶推的船舶、排筏或者其他物体编成的组合体。

java代码缺陷自动分析工具之FindBugs介绍

1 FindBugs是什么? FindBugs 是一个java bytecode静态分析工具,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。 FindBugs检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。 有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。FindBugs不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式进行分析。 2 FindBugs可以做什么? FindBugs提供了35个检测器来检测字节码中可能的缺陷。可以做的事情主要有: 2.1 找出 hash equals 不匹配 找与 equals() 和 hashCode() 的实现相关的几个问题。这两个方法非常重要,因为几乎所有基于集合的类---List、Map、Set 等都调用它们。一般来说,这个检测器寻找两种不同类型的问题: ①当一个类重写对象的 equals() 方法,但是没有重写它的 hashCode 方法,或者相反的情况时。 ②定义一个 co-variant 版本的 equals() 或 compareTo() 方法。例如, Bob 类定义其equals() 方法为布尔 equals(Bob) ,它覆盖了对象中定义的 equals() 方法。因为 Java 代码在编译时解析重载方法的方式,在运行时使用的几乎总是在对象中定义的这个版本的方法,而不是在 Bob 中定义的那一个(除非显式将 equals() 方法的参数强制转换为 Bob 类型)。因此,当这个类的一个实例放入到类集合中的任何一个中时,使用的是 Object.equals() 版本的方法,而不是在 Bob 中定义的版本。在这种情况下, Bob 类应当定义一个接受类型为Object 的参数的 equals() 方法。 2.2 检测:忽略方法返回值 这个检测器查找代码中忽略了不应该忽略的方法返回值的地方。这种情况的一个常见例子是在调用 String 方法时,例如: 1 String aString = "bob"; 2 b.replace('b', 'p'); 3 if(b.equals("pop")) 这个错误很常见。在第 2 行,程序员认为他已经用 p 替换了字符串中的所有 b。确实是这样,但是他忘记了字符串是不可变的。所有这类方法都返回一个新字符串,而从来不会改变消息的接收者。

江苏省内河干线航道通航管理规定

江苏省内河干线航道通航管理规定 第一条? 为加强我省内河通航水域交通安全监督管理,维护通航秩序,提高通航效率,保障通航安全,根据《中华人民共和 国航道法》、《中华人民共和国内河交通安全管理条例》、《内河渡口渡船安全管理规定》、《江苏省内河交通管理条例》、《江苏省港口条例》和《内河通航标准》、《运河通航标准》等法律法规规章标准的规定,结合本省实际,制定本规定。 第二条? 在本省行政区域内除长江航道以外的四级以上内河航道(以下简称“干线航道”)航行、停泊、作业的船舶和船员,以及从事可能影响干线航道通航安全的水上水下活动的单位和人员,应当遵守本规定。 第三条? 省交通运输主管部门主管本省干线航道通航管理工作。 县级以上地方人民政府交通运输主管部门所属的地方海事管理机构具体负责干线航道通航管理工作。有关航道管理机构、港口行政管理部门应当按照各自的职责权限,做好干线航道通航管理相关工作。 第四条? 新建、改造干线航道,有关单位应当根据航道条件和航行需要等,统筹配置交通安全、助航标志等辅助设施。 干线航道的交通安全、助航标志,应当保持良好的使用状态。发现受损、移位、失常,有关单位应当及时予以修复,修复前应当设置临时标志。 第五条? 影响船舶航行的桥梁,以及未达到干线航道通航标准的已建过船设施、架空管线等设施,其权属单位或者管理单位应当依法设置交通安全、助航标志以及防撞保护设施。 第六条? 船舶应当遵守有关法律、法规、规章以及交通管制、交通安全标志和助航标志的规定。船舶的标志标识应当规范,清晰可辨,不得遮挡、涂改。 推广使用标准化船型,逐步限制新建非标准船舶和落后淘汰类船舶进入京杭运河等干线航道航行。 第七条? 船舶配载和系固应当符合国家安全技术规范,货物装载宽度不得超过船舶型宽,装载高度不得遮挡驾驶视线。载运不可解体的大件货物,经营人或营运人应当在装船前24小时报有关地方海事管理机构核定拟航行的航路、时间,并采取必要的安全措施,保障船舶载运安全,需要通过船闸的,应当征求船闸管理单位意见。 第八条? 船舶航行时,应当按照规定保留足够的富余水深,并与跨河建筑物保持合理间距。 在干线航道航行、停泊、作业的船舶应当满足下列航道等级限制要求:

Findbugs安装和使用说明

Findbugs的安装和使用1 、Findbugs 介绍 1.1 、Findbugs 简介 FindBugs 是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。 1.2 、适用人员 Java开发人员 1.3 、FindBugs能解决的问题 FindBugs能解决的问题,举例如下: (1)代码的正确性检查――空指针例子 (2)代码的健壮性检查――静态类变量没有定义成Final

(3)多线程正确性检查――低效率 (4)性能问题检查――生成冗余的对象 (5)格式问题检查――比较分支的重复代码

2 、Eclipse与MyEclipse安装Findbugs 插件 2.1 概述 因为大家使用的IDE不一致,所以关于Findbugs插件的安装,将分为Eclipse(3.6以上),MyEclipse6.5,以及Myeclipse8.5 三个部分讲解。又因为目前大家使用的MyEclipse版本较低,不能安装较高版本的findbugs插件,只能安装相应的最高版本。 2.2 、Eclipse在线安装 步骤一:如图,选择Install New Software

步骤二:如图,点击Add 步骤三:如图, Name:Findbugs Location: https://www.360docs.net/doc/fb5879141.html,/eclipse 步骤四:如图,选中安装项,然后一直“Next”,等待安装完成

2.3 、Eclipse离线安装 把下面的文件解压后放入Eclipse的dropins目录下,再重启Eclipse edu.umd.cs.findbugs.plugin.eclipse_2.0.3.20131122-15020.zip 2.4 、MyEclipse 6.5 安装Findbugs插件 把下面的文件解压后放入MyEclipse6.5的安装目录下的eclipse\plugins下,再重启MyEclipse edu.umd.cs.findbugs.plugin.eclipse_2.0.0.20111220.zip 2.5 、MyEclipse 8.5 安装Findbugs插件 步骤一:将edu.umd.cs.findbugs.plugin.eclipse_2.0.2.20121204.zip文件解压后拷贝到任意目录下,例如D:/plugins目录下。 edu.umd.cs.findbugs.plugin.eclipse_2.0.2.20121204.zip 步骤二:进入MyEclipse安装目录下的 \configuration\org.eclipse.equinox.simpleconfigurator目录,修改https://www.360docs.net/doc/fb5879141.html,文件,在最后一行加入: edu.umd.cs.findbugs.plugin.eclipse,1.3.9.20090821,file:/D:/plugins/edu.umd.cs.findb ugs.plugin.eclipse_2.0.2.20121204,4,false (注意黄色高亮部分的地址需要一致) 步骤三:重启MyEclipse 2.6 、验证安装是否成功 右击项目,出现如下图所示,则安装成功

Findbugs使用简介

Findbugs使用简介 Findbugs是一个在java程序中查找bug的程序,它查找bug模式的实例,也就是可能出错的代码实例,注意Findbugs是检查java字节码,也就是*.class文件。其实准确的说,它是寻找代码缺陷的,很多我们写的不好的地方,可以优化的地方,它都能检查出来。例如:未关闭的数据库连接,缺少必要的null check,多余的null check,多余的if后置条件,相同的条件分支,重复的代码块,错误的使用了"==",建议使用StringBuffer代替字符串连加等等。而且我们还可以自己配置检查规则(做哪些检查,不做哪些检查),也可以自己来实现独有的校验规则(用户自定义特定的bug模式需要继承它的接口,编写自己的校验类,属于高级技巧)。 Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness,1种Internationalization,12种Malicious code vulnerability,27种Multithreaded correctness,23种Performance,43种Dodgy。 Bad practice 坏的实践 一些不好的实践,下面列举几个: HE:类定义了equals(),却没有hashCode();或类定义了equals(),却使用 Object.hashCode();或类定义了hashCode(),却没有equals();或类定义了hashCode(),却使用Object.equals();类继承了equals(),却使用Object.hashCode()。 SQL:Statement 的execute方法调用了非常量的字符串;或Prepared Statement是由一个非常量的字符串产生。 DE:方法终止或不处理异常,一般情况下,异常应该被处理或报告,或被方法抛出。 Correctness 一般的正确性问题 可能导致错误的代码,下面列举几个:

Java静态检测工具的简单介绍 - Sonar、Findbugs

Java静态检测工具的简单介绍- Sonar、Findbugs 2010-11-04 13:55:54 标签:sonar休闲职场 Java静态检测工具的简单介绍 from: https://www.360docs.net/doc/fb5879141.html,/?p=9015静态检查:静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人 工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。 代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和 设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代 码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、 不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题, 包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构 检查等内容。”。看了一系列的静态代码扫描或者叫静态代码分析工具后, 总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的, 他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可 以自定义各种各样的复杂的规则去对代码进行分析。 静态检测工具: 1.PMD 1)PMD是一个代码检查工具,它用于分析 Java 源代码,找出潜在的问题: 1)潜在的bug:空的try/catch/finally/switch语句 2)未使用的代码:未使用的局部变量、参数、私有方法等 3)可选的代码:String/StringBuffer的滥用

4)复杂的表达式:不必须的if语句、可以使用while循环完成的for循环 5)重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs 2)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 集成在一起。 4)PMD规则是可以定制的: 可用的规则并不仅限于内置规则。您可以添加新规则: 可以通过编写 Java 代码并重新编译 PDM,或者更简单些,编写 XPath 表 达式,它会针对每个 Java 类的抽象语法树进行处理。 5)只使用PDM内置规则,PMD 也可以找到你代码中的一些真正问题。某些问题可能 很小,但有些问题则可能很大。PMD 不可能找到每个 bug,你仍然需要做单元测 试和接受测试,在查找已知 bug 时,即使是 PMD 也无法替代一个好的调试器。

国内内河避碰规则(2003年修正本)

中华人民共和国内河避碰规则(2003年修正本) 第一章总则 第一条宗旨 为维护水上交通秩序,防止碰撞事故,保障人民生命、财产的安全,制定本规则。 第二条适用范围 在中华人民共和国境内江河、湖泊、水库、运河等通航水域及其港口航行、停泊和作业的一切船舶、排筏均应当遵守本规则。 船舶、排筏在国境河流、湖泊航行、停泊和作业,按照中国政府同相邻国家政府签有的协议或者协定执行。 船舶、排筏在与中苏国境河流相通的水域航行、停泊和作业不适用本规则。 第三条责任 船舶、排筏及其所有人、经营人以及船员应当对遵守本规则的疏忽而产生的后果以及对船员通常做法所要求的或者当时特殊情况要求的任何戒备上的疏忽而产生的后果负责。 不论由于何种原因,两船已逼近或者已处于紧迫局面时,任何一船都应当果断地采取最有助于避碰的行动,包括在紧迫危险时而背离本规则,以挽救危局。 第四条特别规定 本规则各条规定不妨碍各省、自治区、直辖市港航监督机关及长江港航监督局、黑龙江港航监督局根据辖区的具体情况,制定包括分道通航等有关交通管制的特别规定。特别规定应当尽可能符合本规则各条规定,报交通部批准后生效。 第五条定义 本规则下列用语的含义是:

(一)“船舶”是指各种船艇、移动式平台、水上飞机和其他水上运输工具,但不包括排筏。 (二)“机动船”是指用机器推动的船舶。 (三)“非自航船”是指驳船、囤船等本身没有动力推动的船舶。 (四)“帆船”是指任何正在驶帆的船舶,包括装有推进器而不在使用者。 (五)“拖船”是指从事吊拖或者顶推(包括旁拖)的任何机动船。 (六)“船队”是指由拖船和被吊拖、顶推的船舶、排筏或者其他物体编成的组合体。 (七)“快速船”是指静水时速为35公里以上的船舶。 (八)“限于吃水的海船”是指由于船舶吃水与航道水深的关系,致使其操纵、避让能力受到限制的船舶。限于吃水的海船的实际吃水在长江定为7米以上,珠江定为4米以上。 (九)“在航”是指船舶、排筏不在锚泊、系靠或者搁浅。 (十)“船舶长度”是指船舶的总长度。 (十一)“航路”是指船舶根据河流客观规律或者有关规定,在航道中所选择的航行路(十二)“顺航道行驶”是指船舶顺着航道方向行驶,包括顺着直航道和弯曲航道行驶(十三)“横越”是指船舶由航道一侧横向或者接近横向驶向另一侧,或者横向驶过顺航道行驶船舶的船首方向。 (十四)“对驶相遇”是指顺航道行驶的两船来往相遇,包括对遇或者接近对遇、互从左舷或者右舷相遇、在弯曲航道相遇,但不包括两横越船相遇。 (十五)“能见度不良”是指由于雾、霾、下雪、暴风雨、沙暴等原因而使能见度受到限制的情况。 (十六)“潮流河段”是指沿海各省、自治区、直辖市港航监督机关及长江港航监督局划定的受潮汐影响明显的河段。

Eclipse 插件 FindBugs 使用手册

Eclipse 插件FindBugs 使用手册 前言: 本文介绍如何利用Eclipse 插件FindBugs 优化Java 代码。 本插件是本人在对系统进行代码优化的时候,向迟焕祺同事索取并学习使用的,现在把工具的一些使用方法与大家共享,并把FindBugs提供给大家! 感谢迟哥提供良好资源供大家学习、使用! 问题提出: 当我们编写完代码,做完单元测试等各种测试后就提交正式运行,只能由运行的系统来检测我们代码是否有问题了,代码中隐藏的错误在系统运行的过程中被发现后,然后再来进行相应的修改,那么后期修改的代价就相当高了。 解决方法: 现在有很多Java 代码分析工具,FindBugs 中开源项目当中的一个,它可以帮你找到代码中隐藏的一些错误,提升你的代码能力与系统安全可靠性。 FindBugs 介绍 FindBugs 是一个可以在Java 程序中发现Bugs 的程序。它是专门用来寻找处于“Bug Patterns”列表中的代码的。Bug Patterns 指很有可能是错误的代码的实例。 原文:FindBugs is a program to find bugs in Java programs. It looks for instances of "bug patterns" --- code instances that are likely to be errors. 使用FindBugs 至少需要JDK1.4.0 以上版本,FindBugs是平台独立的,可以运行于GNU/Linux、Windows、MacOS X 等平台上。运行FindBugs 至少需要有256 MB 内存,如果你要分析一个很大的项目,那就需要更加多的内存了。 获取FindBugs 最新版本:https://www.360docs.net/doc/fb5879141.html,/projects/findbugs/files/ FinBugs 介绍:https://www.360docs.net/doc/fb5879141.html,/manual/ Eclipse 插件links 文件夹方式配置: 提示:直接的插件配置方式是使用Eclipse 的Update 方式更新,或者把新下载的插件PlugIn 放在原始的Eclipse 目录下去,这种方式会随着插件的增多而导致插件维护工作量的增加。鉴于上述原因,可以使用links 文件夹的方式进行配置。(MyEclipse 插件就是 使用links 的方式进行配置的)配置方式如下: 1. 安装好Eclipse 工具,可以到https://www.360docs.net/doc/fb5879141.html, 上下载压缩包。比如安装在E:\OpenSource\Eclipse\目录下,以下这个目录以%ECLIPSE_HOME%来进行表示; 2. 此时默认的插件是在%ECLIPSE_HOME%\plugins目录中的; 3. 在%ECLIPSE_HOME%下建立一个PlugInsNew的目录; 比如:E:\OpenSource\Eclipse\PlugInsNew 4. 你下载了个新的插件,比如叫做:XYZ 那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立XYZ目录,目录里面是eclipse 目录,eclipse 目录包含有features与plugins两个子目录;结构如下图所示:

中华人民共和国内河船舶船员适任考试大纲(二三类驾驶和轮机)

附件:
百度文库 - 让每个人平等地提升自我
中华人民共和国内河船舶船员适任考试大纲
一、避碰与信号
5201:各类船长 5202:各类驾驶员
考试大纲
1 总则 1.1 《内河避碰规则》的宗旨 1.2 《内河避碰规则》的适用范围 1.3 责任
适用对象
5201
5202



-1-

1.3.1 不能免责的对象
百度文库 - 让每个人平等地提升自我


1.3.2 各种疏忽的含义


1.3.3 “背离”《内河避碰规则》的条件、目的和行动要求


1.3.4 长江干线航行的客渡船的避让要求(非长江干线水域有特殊规定的,按特


殊规定确定的避让要求)
1.4 制定特别规定的机构、内容、要求


1.5 《内河避碰规则》第 5 条所列用语的含义

2 航行与避让
2.1 行动通则
-2-

2.1.1 瞭望
百度文库 - 让每个人平等地提升自我
2.1.1.1 瞭望的含义
2.1.1.2 瞭望的目的
2.1.1.3 正规瞭望的方法
2.1.2 安全航速
2.1.2.1 安全航速的概念
2.1.2.2 决定安全航速时应考虑的因素
2.1.2.3 控制船速的水域
2.1.2.4 不能免责的规定
-3-















FindBugs使用手册教案资料

文件编号: 配置项编号: FindBugs使用手册 文档版本号 V 1.0 农信银资金清算中心创新研发部

文档修订记录

目录 1、FindBugs简介 (3) 2、FindBugs的检查规则 (4) 2.1Correctness(正确性) (4) 2.2 Bad practice(不良实践) (5) 2.3 Performance(性能) (5) 2.4Multithreaded correctness(多线程正确性) (6) 2.5 Dodgy(不可靠) (7) 3、FindBugs使用 (8) 3.1安装FindBugs (8) 3.2配置FindBugs (8) 3.3使用FindBugs (8) 1、FindBugs简介 FindBugs是用于java代码检查的一种静态分析工具,它检查类或者JAR 文件,将字节

码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。 FindBugs专注于找出潜在程序错误,而不是编码风格问题,目的在于提高程序的健壮性。 2、FindBugs的检查规则 FindBugs提出了超过200种规则,这些规则可主要分为如下类别: 2.1Correctness(正确性) 这些问题涉及到可能在某些方面不正确的代码。如:代码有无限递归,或者读取为写入的字段,这类问题几乎无疑是程序的错误。 例1:使用未初始化的类成员,可能导致NullPointException 代码: FindBugs检测结果: 例2:不使用方法的返回值 代码: FindBugs检测结果:

内河避碰条例题库

全国统考各类船长、驾驶员避碰与信号模拟试卷题库 一、选择题: 1、《内河避碰规则》适用的水域是指: A、船舶能够到达的一切水域 B、中华人民共和国境内江河、湖泊、水库、运河等通航水及其港口 C、可供内河船舶航行的一切水域 D、除海上以外的一切水域 2、机动船横越前应无碍他船行驶,意味着横越船 A.应尽可能慢速行驶 B.应采取行动以留出足够的水域供他船安全通过,不致构成碰撞危险 C、应尽可能采用避免产生紧迫局面的方法航行 D.应尽可能采用避免产生紧迫危险的方法航行 3、同流向的两横越船交叉相遇时,除另有规定外,则: A、有他船在本船右舷者,应给他船让路 B、两船均负有同等的避让责任和义务 C、单船应避让船队 D、双方协商避让 4、判断甲,乙,丙三船的避让关系是: A、甲让乙,丙、甲让乙 B、乙让甲,丙.甲让丙 C、甲让乙,丙.乙让丙 D、丙让甲、乙.乙让甲 5、不论由于何种原因,两船己逼近或者己处于紧迫局面时,应果断地采取最有助于避碰的行动,包括在紧迫危险时而背离《中华人民共和国内河避碰规则》,以挽救危局。 A、让路船

B、被让路船 C、任何一船 D、机动船 6、规则二十一条有关机动船与排筏相遇的条款中的“排筏”是指: A、被拖船顶推的排筏 B、被拖船吊拖的排筏 C、被拖船傍拖的排筏 D、人工流放的排筏 7、不论由于何种原因,在长江干线航行的客渡船必须避让: A、横越船 B、顺航道行驶的船舶 C、下行船 D、上行船 8、在感潮河段,一艘顺流行驶的限于吃水的海船与一艘在航施工的工程船对驶相遇时,下列说法正确的是: A、在航施工的工程船是让路船 B、限于吃水的海船是让路船 C、两船具有同等的避让责任 D、两船会遇属于特殊情况,不具有让路船与被让路船的避让关系 9、某船用帆行驶,同时用机器推进,该船是《中华人民共和国内河避碰规则》中的: A、在航帆船 B、在航机帆船 C、在航机动船 D、在航非自航船 10、机动船抛锚掉头、拖锚航行的过程应当: A、前者属锚泊、后者属在航 B、均属在航 C、前者属在航、后者属锚泊 D、均属不在航 11、下列哪些船舶应保持正规瞭望'①在航船②锚泊船③搁浅船: A、①② B、①③ C、②③ D、①②③ 12、正规瞭望的首要基本手段是: A、雷达 B、听觉 C、视觉

findbugs检测提示详解

findbugs检测提示详解 1、Comparison of String objects using == or != 例,override equals方法时容易犯错 if(this.topic != key.getTopic()) return false; 2、Dead store to newStatusRecord 定义局部变量后没有引用 3、Invocation of toString on values 直接调用数组的toString方法 public Query createQuery(String hql, Object values[],Session session){ logger.debug(values); logger.debug((new StringBuilder()).append("hql=[").append(hql).append("] ").append(((Object) } 正确的例子,调用Arrays.toString()和Arrays.deepToString()方法。import java.util.Arrays; class A{ } class B{ @Override public String toString() { return "BBBBB"; } }

public class Test { public static void main(String[] args) { Object [] a = {new Integer(0),new Boolean(true),true,new A(),new B()}; Object[][]b ={{new A(),new B()},{new A(),new B()},{new A(),new B()}}; System.out.println(Arrays.deepToString(b)); } } 4、ignores exceptional return value of java.io.File.mkdirs() 忽略了返回值,应当含有返回值 public void initFolder() { if (!exitDir.isDirectory()) { exitDir.mkdirs(); https://www.360docs.net/doc/fb5879141.html,("===Finishing create exit trade image folder!===="); } } This method returns a value that is not checked. The return value should be checked since it can indicate an unusual or unexpected function execution. For example, the File.delete() method returns false if the file could not be successfully deleted (rather than throwing an Exception). If you don't check the result, you won't notice if the method invocation signals unexpected behavior by returning an atypical return value. 5、不使用new String()定义空的字符串 String alarmCodeCond = new String(); 应当 String alarmCodeCond = "";

XX海运有限公司船舶在狭水道、限制水域、交通密集区航行须知

1 目的 本文件对船舶在狭水道、限制水域、交通密集区的航行及掉头操作作出规定,旨在保障船舶在通过狭水道、限制水域、交通密集区航行的安全以及船舶在上述水域进行掉头操作时的安全。 2 适用范围 本文件适用于公司的船舶。 3 船舶在狭水道、限制水域、交通密集区航行须知 3.1 进出狭水道、限制水域和交通密集区(下称上述水域)的船舶应使用安全航速,操舵方式改为手操舵,备车航行(必要时)。船长上驾驶台监航或亲自操作(必要时) 3.2 进入上述水域前必须做好下列工作: 3.2.1 对水域、水文、环境、气象、通航情况等特征要全面地了解、掌握,例如:航道水深、宽度、岸标、浮标、湾头、浅滩、礁石、障碍物、渔场养殖区、渔船密集区、潮流规律、安全锚地、分隔带、VTS联系方法等; 3.2.2 保持适当的首、尾吃水; 3.2.3 吃水深的船舶通过以上水域时要有充分的富余水深。操纵性困难的船舶在上述水域航行时应按规定显示必要的号灯、号型或号旗; 3.2.4 检查主机、辅机、舵机、锚机、通信、导航、救生、消防、应急设备等重要设备,并处于良好技术状态; 3.2.5 拟定航线和制定航行计划时,应查阅有关的航路指南等图书、资料,法律法规,尽可能避开传统渔区。 3.2.6 了解、研究通航密集水域,渔船等各类船舶的航行规律和行动特点,避免采取盲目避让行动。 3.3 通过上述水域时,船长和驾引人员应严格遵守《1972年国际海上避碰规则》及其修正案、《中华人民共和国内河避碰规则》及其修正内容及通过该水域的特殊规定。谨慎驾驶,确保安全。 3.3.1 在进出上述水域及在上述水域航行时应开启VHF、AIS、VDR(如有)等设备,并按规定正确使用,掌握该水域中船舶动态、水文气象、救助、航道等信息; 3.3.2 正确掌握和合理利用风流压、掌握旋回要素,警惕大风浪中浮标位移; 3.3.3 应开启并正确使用雷达、电子海图显示和信息系统 (如有); 3.3.4 严格遵守《国际海上避碰规则》、《内河避碰规则》,充分使用视觉、听觉、雷达、AIS等一切有效手段保持正规了望,及早对局面和碰撞危险作出充分的估计。 3.3.5 除主管机关规定和船长要求的区域(叫船长)外,任何时候只要当值驾驶员需要,船长都应立即上驾驶台指导或亲自指挥航行。 3.3.6 当上述水域船舶密度大,安全航行困难时,为确保安全航行,可根据当时的情况,采取绕航的方法,避开密集区域。 3.3.7 渔船的种类、作业方式、显示的信号繁多,不易识别。它们的避让行动往往不规范,甚至违反《国际海上避碰规则》,对此要保持足够戒备并采取不同的避让方法早让、宽让。特别应避免在拖网船中间穿过,或盲目向左转向,或在船舶密集区域近距离频频转向。无论如何,应按《国际海上避碰规则》要求切实做到,“如需为避免碰撞或留有更多的时间来估计局面,船舶应当减速或者停止或倒转推进器把船停住。” 3.3.8 航经交叉地段、转向点及上下引水员区域,特别要注意观察,当发现有碍本船航行安全时,应及早采取安全措施; 3.3.9 在能见度不良时,须严格遵守《船舶在能见度不良情况下操作须知》,必要时可择地抛锚,并施放锚泊声号,并按规定报告。 上海XX海运有限公司操作维护手册

跟我学Java代码质量检测FindBugs工具——如何下载和安装FindBugs检测工具

1.1跟我学Java代码质量检测FindBugs工具——如何下载和安装FindBugs 检测工具 1.1.1应用代码检测工具的必要性 1、应用代码检测工具的必要性 随着软件工程项目越来越复杂和技术应用的不断深入,软件工程项目将变得越来越庞大。此时,如果仅仅依靠人工去检查软件项目中的程序代码内所可能存在的各种潜在问题是不现实的,即使实施单元测试过程,也是无法完全覆盖和及时地发现出相关的问题,因此借助自动化的程序代码质量检测工具去完成对代码的检查工作是十分必要的。 提高软件系统中的程序代码质量不仅仅要求开发人员遵守一定的编程规范,也还要能够通过各种手段和工具及时地发现出隐藏在软件系统程序代码中的各种错误,而依赖人工在很多场合下都是比较难发现出这些问题或者错误的。因此,开发人员有必要借助一定的检测工具提高对系统代码检测的效率。 目前在J2EE的开源领域中,针对Eclipse IDE开发工具提供有许多Eclipse 插件,能够帮助开发人员在“编码标准”、“代码重复度”、“代码覆盖率”和“包之间的依赖性”等方面进行具体的度量和检测。 2、FindBugs 是一个静态分析工具 FindBugs 是由马里兰大学提供的一款开源Java静态代码分析工具,它检查类或者JAR 文件,将字节码(FindBugs其实就是对编译后的class文件进行扫描,藉以发现一些隐藏的Bug)与一组缺陷模式进行对比以发现可能的问题。开发人员一旦有了静态分析工具,就可以在不实际运行程序的情况下对所编写的程序代码进行分析和检测,随时发现出相关的问题,从而提高程序代码的质量。 FindBugs检测工具可以发现出的问题主要包括:多线程竞争问题、性能问题、安全问

FindBugs安装及配置使用说明

FindBugs插件安装及配置使用说明 目录 FindBugs插件安装及配置使用说明 (1) 用途 (1) 安装 (1) 配置 (2) 运行 (3) 其他说明 (8) 额外收获 (10) 用途 FindBugs 是一个java bytecode静态分析工具,它可以帮助java工程师提高代码质量以及排除隐含的缺陷,以期尽可能在项目的初始阶段将代码问题解决。 FindBugs检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。 有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。FindBugs不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用Visitor 模式进行分析。 安装 1.打开eclipse. Help > Software Updates ->Find and Install. 选择Search for new features to install. >next > New Remote Site… 在对话框里填写如下: Name: findbugs. URL: https://www.360docs.net/doc/fb5879141.html,/eclipse >确定 选中findbugs >Finish 2. 在新出来的对话框中,选中findbugs(注意: 此时如果装了Myeclipse插件, 这里可能会报 错. 请先在eclipse的links文件夹下面将Myeclipse的link文件移除, 然后等findbugs

装完之后, 再将Myeclipse的link文件放进来) >next 选中”I accept the terms in the license agreement” >Next >Finish >Install >Yes (重启eclipse) findbugs 安装完成 配置 1.打开FindBugs视图: Windows => Show View => Other… => FindBugs => Bug Info 、Bug Explorer、Bug Reviews 2.配置FindBugs 选择你的项目=>右键=> Properties => FindBugs => 选中”run findbugs automatically”=> OK

试论《1972年国际海上避碰规则》之追越条款

试论《1972年国际海上避碰规则》之追越条款 摘要:随着航运业的发展,船舶种类的增多,船舶的航行速度存在着较大差异,船舶间追越的频率逐渐增多。为了保正船舶在追越过程中的航行安全,以防止船舶在追越过程中发生碰撞事故。本文根据《1972年国际海上避碰规则》对追越条款进行论述,根据追越的定义分析了构成追越的位置、方位、距离三个条件,分析了追越船、被追越船在追越过程中的避让责任与义务,然后对追越船、被追越船在追越前及追越中各自的操作注意事项进行剖析,有助于船舶驾驶员对追越局面做出正确的判断,进而避免紧迫局面的发生,确保船舶的航行安全。 一、追越的含义及判断 1.《1972年国际海上避碰规则》规定:“一船正从他船正横后大于2 2.5度的某一方向赶上、超过他船时,即该船对其所追越的船所处的位置,在夜间只能看见被追越船的尾灯而看不见它的任一舷灯时,应认为是在追越中。”根据以上规定一船追越另一船应具备以下条件: 1).位置 后船应位于前船正横后大于22.5度的任一方向上,即处在前船的尾灯光照弧度范围内,也就是说,在夜间只能看

见被追越船的尾灯而看不见她的任一舷灯。这是追越船与被追越船之间的位置关系。 2).速度 后船正在赶上前船,即后船速度必须大于前船速度,只有这样后船才能赶上前船。这是追越船与被追越船之间的动态关系。 3).距离 一船必须是进入另一船尾灯的能见距离范围以内,即在夜间能看见他船的尾灯,在白天两船已接近到另一船尾灯的规定能见距离内。 2. 《1972年国际海上避碰规则》第十三条规定:“当一船对其是否在追越他船有任何怀疑时,该船应假定在追越,并应采取相应行动。”通常情况下,追越船对是否处于追越中持有怀疑有以下两种情况: 1)为消除信号灯盲区,舷灯和尾灯的水平光弧分别向前后延伸了5度。所以,在前船正横后22.5度附近,后船可能同时看到前船的舷灯和尾灯,从而对两船处于追越局面持有怀疑; 2)当后船处在前船正横后22.5度附近或者由于两船船首向的不稳定,后船可能时而看到前船的尾灯和舷灯,从而对两船处于追越局面持有怀疑。 3)追越不以是否构成碰撞危险为适用条

用Eclipse自带插件创建自定义findbugs检测器

用Eclipse自带插件创建findbugs的检测器 1.准备工作 1.1.为Eclipse安装插件 插件1:ByteCode下载地址:http://andrei.gmxhome.de/eclipse/ 用法:在Eclipse菜单栏上单击windows->show view->other…->Java->Bytecode即可打开Bytecode窗口,方便查看当前文件的字节码,效果如图1所示。 图1 插件2:Findbugs下载地址:https://www.360docs.net/doc/fb5879141.html,/eclipse 用法:在Eclipse菜单栏上单击windows->show view->other…->Findbugs->Bug Explorer即可打开Bug Explorer窗口,进入Findbugs浏览状态,效果如图2所示。

图2 1.2.以下操作需要用的软件(可选) 为了操作方便,建议使用winRAR用来打开jar文件;使用Notepad++打开xml 文件 2.创建自己的Findbugs检测器 2.1.编写自定义的检测器Detector 项目中需要引入Findbugs的jar文件:findbugs.jar 自定义的检测器需要继承OpcodeStackDetector,重写其sawOpcode方法。下面这个检查器Detector用来查找项目中有没有System.out和System.error情况出 现。

public ForbiddenSystemOutClass(BugReporter bugReporter) { this.bugReporter = bugReporter; } /** * visit方法,在每次进入字节码方法的时候调用在每次进入新方法的时候清空标志位 */ @Override public void visit(Code obj) { super.visit(obj); } /** * 每扫描一条字节码就会进入sawOpcode方法 * * @param seen 字节码的枚举值 */ @Override public void sawOpcode(int seen) { if (seen == GETSTATIC) { if (getClassConstantOperand().equals("java/lang/System")// get class mapping && (getNameConstantOperand().equals("out") // get static field mapping || getNameConstantOperand().equals("err"))) { BugInstance bug = new BugInstance(this, "CHECK_SYSTEMCLASS", NORMAL_PRIORITY).addClassAndMethod(this).addSourceLine( this, getPC()); bug.addInt(getPC()); bugReporter.reportBug(bug); } } } } 文件1:自定义检测器ForbiddenSystemOutClass.java 接下来找到Eclipse编译的ForbiddenSystemOutClass.class文件,一般在项目的lib目录里可以找到。将其放入findbugs-plugin.jar文件中对应的目录下。 2.2.修改findbugs.xml文件 找到Eclipse插件安装文件夹中findbugs-plugin.jar所在的文件夹,我的文件夹是F:\eclipse\plugins\edu.umd.cs.findbugs.plugin.eclipse_2.0.0.20111221双击打开findbugs-plugin.jar文件,找到其中的findbugs.xml和messages.xml两个文件,如图3所示。

相关文档
最新文档