好的,在使用PMD和FindBugs代码分析器审查了一些代码之后,我能够对审查过的代码进行很大的更改。但是,有些事情我不知道如何解决。我将在下面重复它们,并且(为了更好地参考)我会给每个问题一个数字。随意回答任何/所有问题。谢谢你的耐心。
1. 即使我已经删除了一些规则,但重新评估代码后相关的警告仍然存在。知道为什么吗?
2.请看声明:
private Combo comboAdress;
private ProgressBar pBar;
以及 getter 和 setter 对对象的引用:
private final Combo getComboAdress() {
return this.comboAdress;
}
private final void setComboAdress(final Combo comboAdress) {
this.comboAdress = comboAdress;
}
private final ProgressBar getpBar() {
return this.pBar;
}
private final void setpBar(final ProgressBar pBar) {
this.pBar = pBar;
}
现在,我想知道为什么第一个声明没有给我任何关于 PMD 的警告,而第二个声明却给了我以下警告:
Found non-transient, non-static member. Please mark as transient or provide accessors.
有关该警告的更多详细信息,请点击此处。
3. 这是另一个警告,也是由 PMD 给出的:
A method should have only one exit point, and that should be the last statement in the method
有关该警告的更多详细信息,请点击此处。
现在,我同意这一点,但是如果我写这样的东西怎么办:
public void actionPerformedOnModifyComboLocations() {
if (getMainTree().isFocusControl()) {
return;
}
....//do stuffs, based on the initial test
}
我倾向于同意这条规则,但如果代码的性能表明存在多个退出点,我该怎么办?
4. PMD 给了我这个:
Found 'DD'-anomaly for variable 'start_page' (lines '319'-'322').
当我声明类似:
String start_page = null;
如果我删除了对 null 的赋值,我会删除这个信息(警告级别是信息),但是..我从 IDE 收到一个错误,说变量可能在稍后的代码中未初始化。所以,我有点坚持。压制警告是你能做的最好的事情吗?
5. PMD警告:
Assigning an Object to null is a code smell. Consider refactoring.
这是 GUI 组件的单一使用的情况或返回复杂对象的方法的情况。在 catch() 部分中将结果分配给 null 是为了避免返回不完整/不一致的对象。是的,应该使用 NullObject,但在某些情况下我不想这样做。那我应该取消那个警告吗?
6. FindBugs 警告 #1:
Write to static field MyClass.instance from instance method MyClass.handleEvent(Event)
在方法中
@Override
public void handleEvent(Event e) {
switch (e.type) {
case SWT.Dispose: {
if (e.widget == getComposite()) {
MyClass.instance = null;
}
break;
}
}
}
静态变量
private static MyClass instance = null;
该变量允许我测试表单是否已经创建并且是否可见,并且在某些情况下我需要强制重新创建表单。我在这里看不到其他选择。有什么见解吗?(MyClass 实现了 Listener,因此重写了 handleEvent() 方法)。
7. FindBugs 警告 #2:
Class MyClass2 has a circular dependency with other classes
此警告基于其他类的简单导入显示。我是否需要重构这些导入以使此警告消失?还是问题出在 MyClass2 中?
好的,现在说得够多了……期待更新,基于更多的发现和/或你的答案。谢谢。