繁体   English   中英

有什么方法可以确保每个软件包中都存在“ package-info.java”(使用Findbugs,Checkstyle或PMD)

[英]Is there any way to ensure “package-info.java” is present in every package (using Findbugs, Checkstyle or PMD)

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

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

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

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

您可以启用Checkstyle的JavadocPackage检查。 保留allowLegacy属性的默认值false ,以确保人们使用package-info.java而不是package.html

我不知道有任何记录的方式可以更改空分析注释的FindBugs默认值。 因此,您的下一个任务可能是确保每个package-info.java都包含适当的注释...


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

并不是我所知道的,但是由于这不是“代码”问题,而是更多的管家问题,因此您可以创建一个简单的构建步骤,该步骤调用一个Shell脚本来断言对于每个Java文件,该目录应包含一个package-info.java。

这样做的shell脚本只有几行。 您可以使用不同的返回码退出它,例如,0表示确定,1表示丢失,然后输出所有包含丢失文件的目录,并将其包含在构建错误消息中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM