Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.6
-
Fix Version/s: 2.7
-
Labels:None
-
Patch Submitted:Yes
-
Number of attachments :
Description
When includeTestSourceDirectory=true is set for maven-checkstyle-plugin, the full test classpath should be made available to checkstyle. Patch included to resolve issue by setting @requiresDependencyResolution to test.
In DefaultCheckstyleExecutor.java the checker.setClassLoader() is configured using the classpath string from request.getProject().getTestClasspathElements() (see DefaultCheckstyleExecutor line 114).
However, the CheckstyleViolationCheckMojo only has @requiresDependencyResolution compile which means that pom dependencies which have been declared as <scope>test</scope> are not returned by project.getTestClasspathElements().
This is a particular issue for the checkstyle RedundantThrows check (http://checkstyle.sourceforge.net/config_coding.html#RedundantThrows) as it requires all Exceptions to be available on it's classpath.
If code throws an Exception which has been imported from a maven <scope>test</scope> dependency, the exception will not be available on the classpath and this checkstyle check will fail.
Example:
Include junit as a test scope dependency in the project POM:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>$
</version>
<scope>test</scope>
</dependency>
Throw any junit exception within project test code, e.g.:
public class MyCustomTestRunner extends BlockJUnit4ClassRunner {
public MyCustomTestRunner(final Class<?> klass) throws InitializationError {
If RedundantThrows check is enabled, the following error will be thrown:
[INFO] — maven-checkstyle-plugin:2.7-SNAPSHOT:check (checkstyle-verify) @ sample-project —
[INFO] Starting audit...
C:\Working\hg\sample-project\src\test\java\com\sample\support\junit\MyCustomTestRunner.java:28:72: warning: Unable to get class information for InitializationError.
Audit done.
[ERROR] MyCustomTestRunner.java[28:72] Unable to get class information for InitializationError.
could you please provide a sample project in a zip file ?