[英]Regex for anything but 'package-info.java' for checkstyle suppression
[英]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.