当前位置: 首页 > 知识库问答 >
问题:

有没有办法确保每个包中都有“package info.java”(使用Findbugs、Checkstyle或PMD)

郤令
2023-03-14

在我们的项目中,我们使用Findbugs、Checkstyle和PMD。来自Findbugs的验证之一是检查潜在的NullPointerException。默认情况下,我们在包级别将所有内容定义为@Nonnull(在“package info.java”中对包应用适当的注释)。

问题是,开发人员不定期地将这个“package info.java”添加到新创建的包中,并且没有任何自动检查来验证这一点。

我想向上面列出的工具之一添加一些自定义规则,以确保每个包中都有“package info.java”(我们有持续集成构建,在本例中会被打破)。有能力做到这一点吗?

另一个选项是以某种方式配置Findbugs,在没有“package info.java”的情况下将所有内容都视为@Nonnull(但据我所知,这是不可能的)。

共有2个答案

冀阳文
2023-03-14

我不知道,但由于这不是一个“代码”问题,而是一个内务管理问题,您可以创建一个简单的构建步骤,调用一个shell脚本来断言,对于每个java文件,目录应该包含一个包信息。JAVA

这样做的外壳脚本只有几行。您可以使用不同的返回代码退出,例如0表示OK,1表示丢失,并输出所有包含丢失文件的目录,并将其包含在生成错误消息中。

梁丘佑运
2023-03-14

可以启用Checkstyle的JavadocPackage检查。将allowLegacy属性保留为默认值false,以确保人们使用包裹信息。java而不是包。html。

据我所知,没有一种有文档记录的方法可以将FindBugs默认值更改为空分析注释。所以你的下一个任务可能是确保每一个包裹的信息。java包含适当的注释。。。

让我添加一条未征求意见的建议:就个人而言,我建议不要使用默认注释,而是显式注释每个必须为非null的方法参数。这意味着默认值可以为null,但FindBugs足够聪明,可以检查方法代码中假定参数为非null的部分,并将其标记为错误。对于大型代码库,从治理的角度来看,这更可靠、更容易。当然,如果您有一个现有的代码库,那么这个路径可能不可用。

 类似资料:
  • 问题内容: 使用PMD,如果要忽略特定的警告,则可以使该行被忽略。 FindBugs有类似的东西吗? 问题答案: FindBugs的初始方法涉及XML配置文件(也称为过滤器)。这确实不如PMD解决方案方便,但是FindBugs只能在字节码上工作,而不能在源代码上工作,因此注释显然不是一个选择。例: 但是,为解决此问题,FindBugs稍后引入了另一个基于注释的解决方案(请参阅参考资料),您可以在类

  • 我们正在运行weblogic,似乎有内存泄漏-我们最终用完了堆空间。 我们在服务器上有5个应用程序(5个war部署)。 您能想到一种方法来收集每个应用程序的内存使用情况吗? (然后我们可以通过查看相应应用程序中的代码来集中搜索。) 我已经运行jmap来获取堆转储并在jvisualvm中加载结果,但不清楚大部分对象来自何处——例如字符串。 我在想,weblogic可能会在每个应用程序中使用单独的类加

  • 问题内容: 假设我有以下情况: 有没有一种方法可以保证实现的任何类也必须扩展?我不想创建一个抽象类,因为我希望能够以类似的方式混合其他一些接口。 例如: 问题答案: Java接口无法扩展类,这很有意义,因为类包含无法在接口内指定的实现细节。 解决此问题的正确方法是通过将接口也完全从实现中分离出来。所述等可以扩展接口以迫使程序员来实现相应的方法。如果要在所有实例之间共享代码,则可以将(可能是抽象的)

  • 问题内容: 我想在Python中使用PhantomJS。我用谷歌搜索了这个问题,但是找不到合适的解决方案。 我发现 可能是一个不错的选择。但是我无法通过一些争论。 使用可能是目前合适的解决方案。我想知道是否有更好的解决方案。 有没有办法在Python中使用PhantomJS? 问题答案: 在python中使用PhantomJS的最简单方法是通过Selenium。最简单的安装方法是 安装NodeJS

  • 我想在Python中使用PhantomJS。我谷歌了这个问题,但找不到合适的解决方案。 我发现可能是一个不错的选择。但我无法向它传递一些论据。 使用目前可能是一个合适的解决方案。我想知道是否有更好的解决办法。 有没有办法在Python中使用PhantomJS?

  • 我们使用PHP7.0运行XAMPP是因为我们的新产品需要PHP7。 但是有些老项目使用等函数,这些函数在PHP7.0中被删除。 那么,有没有办法在XAMPP中轻松更改PHP版本呢? 注意:请不要建议将旧项目升级到与新版本兼容,因为我不能这样做,因为作为一个开发人员(只是一个员工),我不能得到这些决定。