Add deprecations

This commit is contained in:
Clément Fournier
2022-03-05 14:28:25 +01:00
parent c7e4d821bc
commit b806954d88
5 changed files with 83 additions and 13 deletions

View File

@ -70,6 +70,7 @@ The CLI itself remains compatible, if you run PMD via command-line, no action is
{% jdoc core::PMDConfiguration#setRuleSets(java.util.List) %},
{% jdoc core::PMDConfiguration#addRuleSet(java.lang.String) %},
and {% jdoc core::PMDConfiguration#getRuleSetPaths() %}.
* Several members of {% jdoc test::cli.BaseCLITest %} have been deprecated with replacements.
#### Experimental APIs

View File

@ -7,6 +7,7 @@ package net.sourceforge.pmd.cli;
import java.util.Properties;
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.PMD.StatusCode;
import net.sourceforge.pmd.PMDVersion;
import net.sourceforge.pmd.annotation.InternalApi;
import net.sourceforge.pmd.lang.LanguageRegistry;
@ -26,13 +27,39 @@ import com.beust.jcommander.ParameterException;
@InternalApi
public final class PMDCommandLineInterface {
@Deprecated
public static final String PROG_NAME = "pmd";
/**
* @deprecated This is used for testing, but support for it will be removed in PMD 7.
* Use {@link PMD#runPmd(String...)} or an overload to avoid exiting the VM. In PMD 7,
* {@link PMD#main(String[])} will call {@link System#exit(int)} always.
*/
@Deprecated
public static final String NO_EXIT_AFTER_RUN = "net.sourceforge.pmd.cli.noExit";
/**
* @deprecated This is used for testing, but support for it will be removed in PMD 7.
* Use {@link PMD#runPmd(String...)} or an overload to avoid exiting the VM. In PMD 7,
* {@link PMD#main(String[])} will call {@link System#exit(int)} always.
*/
@Deprecated
public static final String STATUS_CODE_PROPERTY = "net.sourceforge.pmd.cli.status";
/**
* @deprecated Use {@link StatusCode#OK}
*/
@Deprecated
public static final int NO_ERRORS_STATUS = 0;
/**
* @deprecated Use {@link StatusCode#ERROR}
*/
@Deprecated
public static final int ERROR_STATUS = 1;
/**
* @deprecated Use {@link StatusCode#VIOLATIONS_FOUND}
*/
@Deprecated
public static final int VIOLATIONS_FOUND = 4;
private PMDCommandLineInterface() { }
@ -124,7 +151,10 @@ public final class PMDCommandLineInterface {
* For testing purpose only...
*
* @param args
*
* @deprecated Use {@link PMD#runPmd(String...)}
*/
@Deprecated
public static void main(String[] args) {
System.out.println(PMDCommandLineInterface.buildUsageText());
}
@ -159,13 +189,14 @@ public final class PMDCommandLineInterface {
}
/**
* @deprecated Use {@link PMD#main(String[])}
* @deprecated Use {@link PMD#runPmd(String...)}
*/
@Deprecated
public static void run(String[] args) {
setStatusCodeOrExit(PMD.run(args));
}
@Deprecated
public static void setStatusCodeOrExit(int status) {
if (isExitAfterRunSet()) {
System.exit(status);

View File

@ -9,6 +9,8 @@ import static org.hamcrest.Matchers.containsString;
import org.junit.Test;
import net.sourceforge.pmd.PMD.StatusCode;
/**
* @author Romain Pelisse <belaran@gmail.com>
*
@ -51,21 +53,21 @@ public class CLITest extends BaseCLITest {
@Test
public void exitStatusWithViolations() {
String[] args = { "-d", SOURCE_FOLDER, "-f", "text", "-R", "category/java/errorprone.xml", };
String log = runTest(4, args);
String log = runTest(StatusCode.VIOLATIONS_FOUND, args);
assertThat(log, containsString("Avoid empty if"));
}
@Test
public void exitStatusWithViolationsAndWithoutFailOnViolations() {
String[] args = { "-d", SOURCE_FOLDER, "-f", "text", "-R", "category/java/errorprone.xml", "-failOnViolation", "false", };
String log = runTest(0, args);
String log = runTest(StatusCode.OK, args);
assertThat(log, containsString("Avoid empty if"));
}
@Test
public void exitStatusWithViolationsAndWithoutFailOnViolationsLongOption() {
String[] args = { "-d", SOURCE_FOLDER, "-f", "text", "-R", "category/java/errorprone.xml", "--fail-on-violation", "false", };
String log = runTest(0, args);
String log = runTest(StatusCode.OK, args);
assertThat(log, containsString("Avoid empty if"));
}
@ -75,7 +77,7 @@ public class CLITest extends BaseCLITest {
@Test
public void testWrongRuleset() {
String[] args = { "-d", SOURCE_FOLDER, "-f", "text", "-R", "category/java/designn.xml", };
String log = runTest(1, args);
String log = runTest(StatusCode.ERROR, args);
assertThat(log, containsString("Can't find resource 'category/java/designn.xml' for rule 'null'."
+ " Make sure the resource is a valid file"));
}
@ -86,7 +88,7 @@ public class CLITest extends BaseCLITest {
@Test
public void testWrongRulesetWithRulename() {
String[] args = { "-d", SOURCE_FOLDER, "-f", "text", "-R", "category/java/designn.xml/UseCollectionIsEmpty", };
String log = runTest(1, args);
String log = runTest(StatusCode.ERROR, args);
assertThat(log, containsString("Can't find resource 'category/java/designn.xml' for rule "
+ "'UseCollectionIsEmpty'."));
}
@ -97,7 +99,7 @@ public class CLITest extends BaseCLITest {
@Test
public void testWrongRulename() {
String[] args = { "-d", SOURCE_FOLDER, "-f", "text", "-R", "category/java/design.xml/ThisRuleDoesNotExist", };
String log = runTest(1, args);
String log = runTest(StatusCode.OK, args);
assertThat(log, containsString("No rules found. Maybe you misspelled a rule name?"
+ " (category/java/design.xml/ThisRuleDoesNotExist)"));
}

View File

@ -25,6 +25,7 @@ import org.junit.BeforeClass;
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.PMD.StatusCode;
import net.sourceforge.pmd.internal.util.AssertionUtil;
/**
* @author Romain Pelisse <belaran@gmail.com>
@ -79,11 +80,19 @@ public abstract class BaseCLITest {
}
}
/**
* @deprecated Use {@link #runTest(String...)}, note that
* it returns the log while this returns the name of a file containing the log.
*/
@Deprecated
protected String runTest(String[] args, String testname) {
return runTest(args);
return runTest(args, testname, 0);
}
/**
* @deprecated Use {@link #runTest(StatusCode, String...)}, note that
* it returns the log while this returns the name of a file containing the log.
*/
@Deprecated
protected String runTest(String[] args, String testname, int expectedExitCode) {
String filename = TEST_OUPUT_DIRECTORY + testname + ".txt";
@ -100,27 +109,49 @@ public abstract class BaseCLITest {
* Returns the log output.
*/
protected String runTest(String... args) {
return runTest(0, args);
return runTest(StatusCode.OK, args);
}
/**
* Returns the log output.
*
* @deprecated Use {@link #runTest(StatusCode, String...)}
*/
@Deprecated
protected String runTest(int expectedExitCode, String... args) {
switch (expectedExitCode) {
case 0:
return runTest(StatusCode.OK, args);
case 1:
return runTest(StatusCode.ERROR, args);
case 4:
return runTest(StatusCode.VIOLATIONS_FOUND, args);
default:
throw AssertionUtil.shouldNotReachHere("unknown status code " + expectedExitCode);
}
}
protected String runTest(StatusCode expectedExitCode, String... args) {
ByteArrayOutputStream console = new ByteArrayOutputStream();
PrintStream out = new PrintStream(console);
System.setOut(out);
System.setErr(out);
StatusCode statusCode = PMD.runPmd(args);
assertEquals(expectedExitCode, statusCode.toInt());
assertEquals(expectedExitCode, statusCode);
return console.toString();
}
/**
* @deprecated Use {@link #runTest(StatusCode, String...)}
*/
@Deprecated
protected void runPMDWith(String[] args) {
PMD.main(args);
}
/**
* @deprecated Use {@link #runTest(StatusCode, String...)} instead of checking the return code manually
*/
@Deprecated
protected void checkStatusCode(int expectedExitCode) {
int statusCode = getStatusCode();
@ -129,6 +160,10 @@ public abstract class BaseCLITest {
}
}
/**
* @deprecated Use {@link #runTest(StatusCode, String...)} instead
* of checking the return code manually
*/
@Deprecated
protected int getStatusCode() {
return Integer.parseInt(System.getProperty(PMDCommandLineInterface.STATUS_CODE_PROPERTY));

View File

@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;
import net.sourceforge.pmd.PMD.StatusCode;
import net.sourceforge.pmd.cli.BaseCLITest;
public class XmlCliTest extends BaseCLITest {
@ -36,19 +37,19 @@ public class XmlCliTest extends BaseCLITest {
@Test
public void analyzeSingleXmlWithoutForceLanguage() {
String log = runTest(0, createArgs("/src/file1.ext"));
String log = runTest(StatusCode.OK, createArgs("/src/file1.ext"));
assertRuleMessage(0, log);
}
@Test
public void analyzeSingleXmlWithForceLanguage() {
String log = runTest(4, createArgs("/src/file1.ext", "-force-language", "xml"));
String log = runTest(StatusCode.VIOLATIONS_FOUND, createArgs("/src/file1.ext", "-force-language", "xml"));
assertRuleMessage(1, log);
}
@Test
public void analyzeDirectoryWithForceLanguage() {
String log = runTest(4, createArgs("/src/", "-force-language", "xml"));
String log = runTest(StatusCode.VIOLATIONS_FOUND, createArgs("/src/", "-force-language", "xml"));
assertRuleMessage(3, log);
}