Checkstyle 和 PMD 仅作为建议
Checkstyle and PMD as advice only
我如何设置仅将 pmd 和 checkstyle 结果用作建议并在构建服务器上禁用它们?这样做是不好的做法吗?
pmd 和 checkstyle 都提供 valuable advice,我想继续使用它们。
但是(但是出现了)我发现我的代码收集了很多 lint 试图解决一些警告。举几个例子:
Test-classes 包含许多 mockito 和 junit 静态导入,我总是必须添加 @SuppressWarnings("PMD.TooManyStaticImports").
A class under test 需要其字段填充 mock objects,这些在测试中的任何地方都没有使用,但需要用 @Mock 声明和注释 class 正在测试中以正常工作。添加@SuppressWarnings("PMD.UnusedPrivateField")。
在测试中 classes 我将拥有从一长串参数创建对象的方法,例如:createPerson(String firstname, String lastname, int shoesize, String favouritecolor, .. .).这些对象通常是从数据库或 XML 创建的。添加@SuppressWarnings("PMD.ParameterNumberCheck").
有时我的文档会是:"This method makes sure that X in the following 3 cases: \n ..."。显然这是不允许的,因为第一句话应该以句号结尾。
父级 class X 有一些字段 y 它的所有子级都需要和使用,但是 checkstyle won't allow it 除非通过方法 (getY()) 访问该字段。这太不自然了,IMO。
一种选择是永久关闭导致最麻烦的检查,但是根据上下文,检查可能是麻烦的或非常有用的。
我认识到,在代码中明确禁止警告也是一种仅在特定上下文中记录的方法,检查是无关紧要且令人讨厌的。令我烦恼的是抑制的数量,几乎每个测试class 都需要抑制,而其他一些 classes 需要解决方法。
那么生成警告但不允许 checkstyle 和 pmd 违规导致构建失败的解决方案吗?
Test-classes contain ...
A class under test ...
In test classes ...
在我看来,你应该在你的测试代码下禁止这些检查,因为你不同意它们。
这是很常见的情况,就像在 Checkstyle 中我们不记录我们的测试代码,但我们的主代码记录了一切。 To get around this for PMD, we split our configuration between test and main. To get around this for Checkstyle utility, we suppress violations for the test directory.您还可以查看检查的选项,看看是否有任何方式可以将其配置为忽略您的案例。
Sometimes my documentation will be: "This method makes sure that X in the following 3 cases: \n ...".
我不能肯定地说,因为我不知道你的方法的内容,但第一句话应该是对方法的作用和目标的简单解释。然后你可以根据你提到的具体案例来关注它。 Checkstyle只要求首句以句号结尾,而不是每句。
Parent class X has some field y that all its children need and use, but checkstyle won't allow it unless the field is accessed through a method (getY()). This is just unnatural, IMO.
既然你完全不喜欢这个,那就把保护字段的检查关掉吧。 If you look at the documentation for VisibilityModifier
,您可以将 protectedAllowed
更改为 true
并让它忽略这些特定情况。
i find that my code collects a lot of lint trying to work around some of the warnings.
对我来说,您似乎没有根据自己的喜好自定义这些工具,而只是尝试使用默认配置。
我如何设置仅将 pmd 和 checkstyle 结果用作建议并在构建服务器上禁用它们?这样做是不好的做法吗?
pmd 和 checkstyle 都提供 valuable advice,我想继续使用它们。
但是(但是出现了)我发现我的代码收集了很多 lint 试图解决一些警告。举几个例子:
Test-classes 包含许多 mockito 和 junit 静态导入,我总是必须添加 @SuppressWarnings("PMD.TooManyStaticImports").
A class under test 需要其字段填充 mock objects,这些在测试中的任何地方都没有使用,但需要用 @Mock 声明和注释 class 正在测试中以正常工作。添加@SuppressWarnings("PMD.UnusedPrivateField")。
在测试中 classes 我将拥有从一长串参数创建对象的方法,例如:createPerson(String firstname, String lastname, int shoesize, String favouritecolor, .. .).这些对象通常是从数据库或 XML 创建的。添加@SuppressWarnings("PMD.ParameterNumberCheck").
有时我的文档会是:"This method makes sure that X in the following 3 cases: \n ..."。显然这是不允许的,因为第一句话应该以句号结尾。
父级 class X 有一些字段 y 它的所有子级都需要和使用,但是 checkstyle won't allow it 除非通过方法 (getY()) 访问该字段。这太不自然了,IMO。
一种选择是永久关闭导致最麻烦的检查,但是根据上下文,检查可能是麻烦的或非常有用的。 我认识到,在代码中明确禁止警告也是一种仅在特定上下文中记录的方法,检查是无关紧要且令人讨厌的。令我烦恼的是抑制的数量,几乎每个测试class 都需要抑制,而其他一些 classes 需要解决方法。
那么生成警告但不允许 checkstyle 和 pmd 违规导致构建失败的解决方案吗?
Test-classes contain ...
A class under test ...
In test classes ...
在我看来,你应该在你的测试代码下禁止这些检查,因为你不同意它们。
这是很常见的情况,就像在 Checkstyle 中我们不记录我们的测试代码,但我们的主代码记录了一切。 To get around this for PMD, we split our configuration between test and main. To get around this for Checkstyle utility, we suppress violations for the test directory.您还可以查看检查的选项,看看是否有任何方式可以将其配置为忽略您的案例。
Sometimes my documentation will be: "This method makes sure that X in the following 3 cases: \n ...".
我不能肯定地说,因为我不知道你的方法的内容,但第一句话应该是对方法的作用和目标的简单解释。然后你可以根据你提到的具体案例来关注它。 Checkstyle只要求首句以句号结尾,而不是每句。
Parent class X has some field y that all its children need and use, but checkstyle won't allow it unless the field is accessed through a method (getY()). This is just unnatural, IMO.
既然你完全不喜欢这个,那就把保护字段的检查关掉吧。 If you look at the documentation for VisibilityModifier
,您可以将 protectedAllowed
更改为 true
并让它忽略这些特定情况。
i find that my code collects a lot of lint trying to work around some of the warnings.
对我来说,您似乎没有根据自己的喜好自定义这些工具,而只是尝试使用默认配置。