【发布时间】:2018-03-08 17:40:53
【问题描述】:
我将如何设置使用 pmd 和 checkstyle 结果仅作为建议并在构建服务器上禁用它们?这样做会是不好的做法吗?
pmd 和 checkstyle 都提供valuable advice,我想继续使用它们。
但是(这里是但是)我发现我的代码收集了很多试图解决一些警告的 lint。举几个例子:
测试类包含许多 mockito 和 junit 静态导入,我总是必须添加 @SuppressWarnings("PMD.TooManyStaticImports")。
被测类需要在其字段中填充模拟对象,这些不会在测试中的任何地方使用,但需要用@Mock 声明和注释,以使被测类正常工作。添加@SuppressWarnings("PMD.UnusedPrivateField")。
在测试类中,我将拥有从一长串参数创建对象的方法,例如:createPerson(String firstname, String lastname, int shoesize, String favouritecolor, ...)。这些对象通常是从数据库或 XML 创建的。添加@SuppressWarnings("PMD.ParameterNumberCheck")。
有时我的文档会是:“此方法确保 X 在以下 3 种情况下:\n ...”。显然这是不允许的,因为第一句应该以句号结尾。
父类 X 有一些它的所有子类都需要和使用的字段 y,但 checkstyle won't allow it 除非通过方法 (getY()) 访问该字段。这是不自然的,IMO。
一种选择是永久关闭导致最讨厌的检查,但是检查可能是讨厌的或非常有用的,具体取决于上下文。 我认识到,在代码中明确禁止警告也是一种记录,仅在特定上下文中,检查是无关紧要且令人讨厌的。让我烦恼的是抑制的数量,几乎每个测试类都需要抑制,而其他一些类需要变通方法。
那么生成警告但不允许 checkstyle 和 pmd 违规导致构建失败的解决方案吗?
【问题讨论】:
标签: java checkstyle pmd software-quality