当前位置: 首页 > 面试题库 >

这些PMD规则的原因是什么?

梁马鲁
2023-03-14
问题内容

DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DD”异常。

DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DU”异常。

DD和DU听起来很熟悉…我想在涉及最差的前后条件的测试和分析中说些什么,但我不记得具体情况。

NullAssignment:将Object分配为null是一种代码味道。考虑重构。

null如果该对象是本地对象(未在方法外部使用),是否会设置对象来帮助进行垃圾回收?还是那是神话?

MethodArgumentCouldBeFinal:参数“ param”未分配,可以声明为final

LocalVariableCouldBeFinal:可以将局部变量“变量”声明为final

使用final参数和变量有什么好处?

LooseCoupling:避免使用“ LinkedList”之类的实现类型;使用界面代替

如果我知道我特别需要a
LinkedList,为什么不使用a来向未来的开发人员明确表明我的意图?返回有意义的类路径中最高级别的类是一回事,但是为什么我不将变量声明为最严格的呢?

避免使用SynchronizedAtMethodLevel:使用块级而不是方法级同步

与方法级同步相比,块级同步有哪些优势?

PreventUsingShortType:请勿使用短型

我最初的语言是C和C ++,但是在Java世界中,为什么不使用最能描述我的数据的类型?


问题答案:
  • DD和DU异常(如果我没记错的话,我使用FindBugs,并且消息有些不同),是指为从未读取的局部变量分配值,通常是因为在读取之前将其重新分配了另一个值。典型的情况null是在声明变量时对其进行初始化。

  • 分配null给局部变量以“辅助”垃圾收集器是一个神话。PMD让您知道这只是适得其反。

  • 在局部变量上指定final对优化器来说 应该 非常有用,但是我没有任何具体实例说明当前JIT充分利用了这一提示。我发现它在推理我自己的代码的正确性方面很有用。

  • 从以下方面指定接口:好的, 接口 是一种很好的设计实践。您可以轻松更改集合的实现,而完全不会影响调用者。这就是接口的全部意义。

  • 我想不出有很多情况下,呼叫者就 需要 一个LinkedList,因为它不公开不是由一些接口声明的API。如果客户端依赖于该API,则可以通过正确的接口使用它。

  • 块级同步可以使关键部分更小,从而可以同时进行尽可能多的工作。也许更重要的是,它允许使用由封闭对象私有控制的锁定对象。这样,您可以保证不会发生死锁。使用实例本身作为锁,任何人都可以错误地对其进行同步,从而导致死锁。

  • 类型的操作数shortint在任何操作中提升。该规则让您知道此促销正在进行中,您最好使用int。但是,使用short类型可以节省内存,因此如果它是实例成员,则可能会忽略该规则。



 类似资料:
  • 问题内容: 是否有很好的资源来描述PMD规则集背后的“为什么”?PMD的站点具有“什么”(每条规则的作用),但是并未说明PMD为何具有该规则以及为何忽略该规则会使您在现实世界中遇到麻烦。特别是,我很想知道PMD为何具有避免规则In避免(InstantInstantiatingObjectsInLoops和OnlyOneReturn)(如果需要创建一个与集合中每个对象相对应的新对象,则第一个似乎是必

  • 我对编程很陌生,我已经自学了将近一个月了,有谁能给我解释一下我代码中错误的原因吗?在“Total(moneyConv(moneySum*moneyRate))”中出错。行,表示实际和形式的论点在长度上是不同的。我检查了我所有的参数,我觉得很好。多谢!

  • 问题内容: 当我尝试运行程序时,出现以下错误 请帮忙 问题答案: 从Javadoc: 如果Java虚拟机找不到声明为native的方法的适当本机语言定义,则抛出该异常。 这是与JNI相关的错误。loadJacobLibrary试图加载名为jacob-1.14.3-x86的本机库,但在java.library.path定义的路径上找不到该库。启动JVM时,应将此路径定义为系统属性。例如 在Windo

  • 在这里抛出RejectedExecutionException是否有其他原因? java.util.concurrent.RejectedExecutionException:任务java.util.concurrent.FutureTask@4194a5f0被java.util.concurrent.ThreadPoolExecutor@41a36e90拒绝[终止,池大小=0,活动线程=0,排队

  • 下面我写了一个C++函数,它通过一个整数向量进行循环。每通过一次,它就从所有的数字中减去最小的数字。它应该在每次传递时返回非零元素的数量(这存储在向量结果中并返回)。然而,每当我尝试运行时,我都会得到“std::bad_alloc”。当删除行“flag=true”时,错误就会消失。我将需要它工作,以便while循环中断。帮我修好这个。

  • 我是一个菜鸟,我在跟着 swift 官方文档进行学习。 ↓这是官方的示例图片,以证明我没有写错 示例代码如下,以便于大家复制 但是我在 Xcode 中却无法编译成功(最后 struct... 不是我自己改的,文件创建出来就是这样的,好像是写法改了)