我们正在使用maven checkstyle插件。下面是pom.xml配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.17</version>
<configuration>
<configLocation>sun_checks.xml</configLocation>
<encoding>UTF-8</encoding>
<consoleOutput>true</consoleOutput>
<logViolationsToConsole>true</logViolationsToConsole>
<failsOnError>true</failsOnError>
<failOnViolation>true</failOnViolation>
<violationSeverity>error</violationSeverity>
</configuration>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>7.8.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
我们有以下java代码。
package com.comp.teststyleguide;
public class A {
public A(String s) {
s = "test1";
}
}
现在,mvn clean package
给出了以下控制台消息。
[ERROR] /work/checkstyle/teststyleguide/src/main/java/com/comp/teststyleguide/A.java:5:12: 参数s应该是最终的。 [FinalParameters]
答案 0 :(得分:2)
你不应该重新分配参数。
对于您不想制作参数final
的情况,Checkstyle有一个单独的ParameterAssignmentCheck。
来自JavaDoc:
禁止分配参数。
理由:参数分配通常被认为是编程不佳 实践。强制开发人员经常将参数声明为final 繁重。检查确保从未分配参数 会给两个世界带来最好的效果。
答案 1 :(得分:2)
在方法中重新分配方法参数值不是一个好的编程习惯,
检查方法,构造函数和catch块的参数是否为 最后。不检查接口,抽象和本机方法: final关键字对于接口,抽象和本机没有意义 方法参数,因为没有可以修改参数的代码。
基本原理:在执行期间更改参数值 该方法的算法可能令人困惑,应该避免。一个伟大的 让Java编译器阻止这种编码风格的方法是声明 参数final。
您可以在checkstyle文档中找到更多信息。 http://checkstyle.sourceforge.net/config_misc.html#FinalParameters