Compare commits

...

2 commits

5 changed files with 40 additions and 27 deletions

16
.vscode/launch.json vendored
View file

@ -1,23 +1,11 @@
{ {
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{
"type": "java",
"name": "Run Main",
"request": "launch",
"mainClass": "rife.bld.extension.PmdOperation },
{ {
"type": "java", "type": "java",
"name": "Run Tests", "name": "Run Tests",
"request": "launch", "request": "launch",
"mainClass": "org.junit.platform.console.ConsoleLauncher", "mainClass": "rife.bld.extension.PmdOperationTest"
"args": [
"--details=verbose",
"--scan-classpath",
"--disable-banner",
"--disable-ansi-colors",
"--exclude-engine=junit-platform-suite",
"--exclude-engine=junit-vintage"]
} }
] ]
} }

View file

@ -7,8 +7,10 @@
], ],
"java.configuration.updateBuildConfiguration": "automatic", "java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [ "java.project.referencedLibraries": [
"${HOME}bld-1.7.0-SNAPSHOT.jar", "${HOME}/.bld/dist/bld-1.8.0.jar",
"lib/bld/*.jar",
"lib/compile/*.jar", "lib/compile/*.jar",
"lib/provided/*.jar",
"lib/runtime/*.jar", "lib/runtime/*.jar",
"lib/test/*.jar" "lib/test/*.jar"
] ]

Binary file not shown.

View file

@ -34,7 +34,7 @@ public class PmdOperationBuild extends Project {
public PmdOperationBuild() { public PmdOperationBuild() {
pkg = "rife.bld.extension"; pkg = "rife.bld.extension";
name = "bld-pmd"; name = "bld-pmd";
version = version(0, 9, 5); version = version(0, 9, 6);
javaRelease = 17; javaRelease = 17;
downloadSources = true; downloadSources = true;
@ -47,11 +47,11 @@ public class PmdOperationBuild extends Project {
.include(dependency("net.sourceforge.pmd", "pmd-java", pmd)); .include(dependency("net.sourceforge.pmd", "pmd-java", pmd));
scope(runtime) scope(runtime)
.include(dependency("net.sourceforge.pmd", "pmd-java", pmd)) .include(dependency("net.sourceforge.pmd", "pmd-java", pmd))
.include(dependency("org.slf4j", "slf4j-simple", version(2, 0, 11))); .include(dependency("org.slf4j", "slf4j-simple", version(2, 0, 12)));
scope(test) scope(test)
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 1))) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 2)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 1))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 2)))
.include(dependency("org.assertj", "assertj-core", version(3, 25, 2))); .include(dependency("org.assertj", "assertj-core", version(3, 25, 3)));
javadocOperation() javadocOperation()
.javadocOptions() .javadocOptions()

View file

@ -81,6 +81,10 @@ public class PmdOperation extends AbstractOperation<PmdOperation> {
* The path of the ignore file * The path of the ignore file
*/ */
Path ignoreFile_; Path ignoreFile_;
/**
* The include line number toggle.
*/
boolean includeLineNumber_ = true;
/** /**
* The incremental analysis toggle. * The incremental analysis toggle.
*/ */
@ -300,6 +304,18 @@ public class PmdOperation extends AbstractOperation<PmdOperation> {
return this; return this;
} }
/**
* Enables or disables including the line number for the beginning of the violation in the analyzed source file URI.
* <p>
* While clicking on the URI works in IntelliJ IDEA, Visual Studio Code, etc.; it might not in terminal emulators.
* <p>
* Default: {@code TRUE}
*/
public PmdOperation includeLineNumber(boolean includeLineNumber) {
includeLineNumber_ = includeLineNumber;
return this;
}
/** /**
* Enables or disables incremental analysis. * Enables or disables incremental analysis.
*/ */
@ -399,14 +415,17 @@ public class PmdOperation extends AbstractOperation<PmdOperation> {
} }
var numErrors = report.getViolations().size(); var numErrors = report.getViolations().size();
if (numErrors > 0) { if (numErrors > 0) {
var msg = String.format(
"[%s] %d rule violations were found. See the report at: %s", commandName, numErrors,
config.getReportFilePath().toUri());
for (var v : report.getViolations()) { for (var v : report.getViolations()) {
if (LOGGER.isLoggable(Level.WARNING)) { if (LOGGER.isLoggable(Level.WARNING)) {
LOGGER.log(Level.WARNING, "[{0}] {1}:{2}:\n\t{3} ({4})\n\t\t--> {5}", final String msg;
if (includeLineNumber_) {
msg = "[{0}] {1}:{2}\n\t{3} ({4})\n\t\t--> {5}";
} else {
msg = "\"[{0}] {1} (line: {2})\\n\\t{3} ({4})\\n\\t\\t--> {5}\"";
}
LOGGER.log(Level.WARNING, msg,
new Object[]{commandName, new Object[]{commandName,
v.getFileId().getAbsolutePath(), v.getFileId().getUriString(),
v.getBeginLine(), v.getBeginLine(),
v.getRule().getName(), v.getRule().getName(),
v.getRule().getExternalInfoUrl() //TODO bug in PMD? v.getRule().getExternalInfoUrl() //TODO bug in PMD?
@ -415,11 +434,15 @@ public class PmdOperation extends AbstractOperation<PmdOperation> {
v.getDescription()}); v.getDescription()});
} }
} }
var violations = String.format(
"[%s] %d rule violations were found. See the report at: %s", commandName, numErrors,
config.getReportFilePath().toUri());
if (config.isFailOnViolation()) { if (config.isFailOnViolation()) {
throw new RuntimeException(msg); // NOPMD throw new RuntimeException(violations); // NOPMD
} else { } else {
if (LOGGER.isLoggable(Level.WARNING)) { if (LOGGER.isLoggable(Level.WARNING)) {
LOGGER.warning(msg); LOGGER.warning(violations);
} }
} }
} else { } else {