diff --git a/README.md b/README.md index c2bfc4a2..ca364037 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ Argument | Description **‑v**, **‑‑verbosity** | choose logging level according [this](https://docs.python.org/3/library/logging.html#levels) list: `1` - **ERROR**; `2` - **INFO**; `3` - **DEBUG**; `0` - disable logging (**CRITICAL** value); default value is `0` (**CRITICAL**). **‑d**, **‑‑disable** | disable inspectors. Available values: for **Python** language: `pylint` for [Pylint](https://github.com/PyCQA/pylint), `flake8` for [flake8](https://flake8.pycqa.org/en/latest/), `radon` for [Radon](https://radon.readthedocs.io/en/latest/), `python_ast` to check different measures providing by AST; for **Java** language: `checkstyle` for the [Checkstyle](https://checkstyle.sourceforge.io/), `pmd` for [PMD](https://pmd.github.io/); for `Kotlin` language: detekt for [Detekt](https://detekt.github.io/detekt/); for **JavaScript** language: `eslint` for [ESlint](https://eslint.org/). Example: `-d pylint,flake8`. **‑‑allow-duplicates** | allow duplicate issues found by different linters. By default, duplicates are skipped. -**‑‑language-version**, **‑‑language_version** | specify the language version for JAVA inspectors. Available values: `java7`, `java8`, `java9`, `java11`. **Note**: **‑‑language_version** is deprecated. Will be deleted in the future. +**‑‑language-version**, **‑‑language_version** | specify the language version for JAVA inspectors. Available values: `java7`, `java8`, `java9`, `java11`, `java15`. **Note**: **‑‑language_version** is deprecated and will be deleted in the future. **‑‑n-cpu**, **‑‑n_cpu** | specify number of _cpu_ that can be used to run inspectors. **Note**: **‑‑n_cpu** is deprecated. Will be deleted in the future. **‑f**, **‑‑format** | the output format. Available values: `json`, `text`. Default value is `json`. **‑s**, **‑‑start-line**| the first line to be analyzed. By default it starts from `1`. diff --git a/src/python/review/application_config.py b/src/python/review/application_config.py index eb6109a1..40c2c706 100644 --- a/src/python/review/application_config.py +++ b/src/python/review/application_config.py @@ -25,6 +25,7 @@ class LanguageVersion(Enum): JAVA_8 = 'java8' JAVA_9 = 'java9' JAVA_11 = 'java11' + JAVA_15 = 'java15' PYTHON_3 = 'python3' KOTLIN = 'kotlin' @@ -39,6 +40,7 @@ def language_to_extension_dict(cls) -> Dict['LanguageVersion', Extension]: cls.JAVA_8: Extension.JAVA, cls.JAVA_9: Extension.JAVA, cls.JAVA_11: Extension.JAVA, + cls.JAVA_15: Extension.JAVA, cls.KOTLIN: Extension.KT} def extension_by_language(self) -> Extension: @@ -50,4 +52,5 @@ def is_java(self) -> bool: or self == LanguageVersion.JAVA_8 or self == LanguageVersion.JAVA_9 or self == LanguageVersion.JAVA_11 + or self == LanguageVersion.JAVA_15 ) diff --git a/src/python/review/inspectors/common.py b/src/python/review/inspectors/common.py index dfedbb1e..a307bd96 100644 --- a/src/python/review/inspectors/common.py +++ b/src/python/review/inspectors/common.py @@ -10,3 +10,14 @@ def convert_percentage_of_value_to_lack_of_value(percentage_of_value: float) -> :return: lack of value. """ return floor(100 - percentage_of_value) + + +# TODO: When upgrading to python 3.9+, replace it with removeprefix. +# See: https://docs.python.org/3.9/library/stdtypes.html#str.removeprefix +def remove_prefix(text: str, prefix: str) -> str: + """ + Removes the prefix if it is present, otherwise returns the original string. + """ + if text.startswith(prefix): + return text[len(prefix):] + return text diff --git a/src/python/review/inspectors/pmd/files/bin/ast-dump.bat b/src/python/review/inspectors/pmd/files/bin/ast-dump.bat new file mode 100755 index 00000000..e0cc6edf --- /dev/null +++ b/src/python/review/inspectors/pmd/files/bin/ast-dump.bat @@ -0,0 +1,6 @@ +@echo off +set TOPDIR=%~dp0.. +set OPTS= +set MAIN_CLASS=net.sourceforge.pmd.util.treeexport.TreeExportCli + +java %PMD_JAVA_OPTS% -classpath "%TOPDIR%\lib\*" %OPTS% %MAIN_CLASS% %* diff --git a/src/python/review/inspectors/pmd/files/bin/basic.xml b/src/python/review/inspectors/pmd/files/bin/basic.xml index 6cacd764..a0ebbcfb 100644 --- a/src/python/review/inspectors/pmd/files/bin/basic.xml +++ b/src/python/review/inspectors/pmd/files/bin/basic.xml @@ -1,19 +1,23 @@ + - - The Basic ruleset contains a collection of good practices which should be followed. - + xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd"> + + + The Basic ruleset contains a collection of good practices which should be followed. + + - + + @@ -25,65 +29,62 @@ - + + - - - + + - + - + + - - - + + + - - - - - - + + + - - - - - - + + - + + + + + - @@ -91,21 +92,11 @@ - - - - - - - - - - - + @@ -117,12 +108,12 @@ - - + + @@ -134,23 +125,24 @@ + - - + - - - + + + + @@ -161,13 +153,12 @@ - - + @@ -191,30 +182,28 @@ - + - + - + + - - - + - + - diff --git a/src/python/review/inspectors/pmd/files/bin/designerold.bat b/src/python/review/inspectors/pmd/files/bin/designerold.bat new file mode 100755 index 00000000..d41f2622 --- /dev/null +++ b/src/python/review/inspectors/pmd/files/bin/designerold.bat @@ -0,0 +1,6 @@ +@echo off +set TOPDIR=%~dp0.. +set OPTS= +set MAIN_CLASS=net.sourceforge.pmd.util.designer.Designer + +java %PMD_JAVA_OPTS% -classpath "%TOPDIR%\lib\*" %OPTS% %MAIN_CLASS% %* diff --git a/src/python/review/inspectors/pmd/files/bin/run.sh b/src/python/review/inspectors/pmd/files/bin/run.sh index 3a6636a8..1501db12 100755 --- a/src/python/review/inspectors/pmd/files/bin/run.sh +++ b/src/python/review/inspectors/pmd/files/bin/run.sh @@ -10,7 +10,7 @@ usage() { } valid_app_options () { - echo "pmd, cpd, cpdgui, designer, bgastviewer, designerold" + echo "pmd, cpd, cpdgui, designer, bgastviewer, designerold, ast-dump" } is_cygwin() { @@ -193,6 +193,9 @@ case "${APPNAME}" in "cpdgui") readonly CLASSNAME="net.sourceforge.pmd.cpd.GUI" ;; + "ast-dump") + readonly CLASSNAME="net.sourceforge.pmd.util.treeexport.TreeExportCli" + ;; *) echo "${APPNAME} is NOT a valid application name, valid options are:$(valid_app_options)" ;; diff --git a/src/python/review/inspectors/pmd/files/lib/ant-1.10.1.jar b/src/python/review/inspectors/pmd/files/lib/ant-1.10.1.jar deleted file mode 100644 index 4a7f8edc..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/ant-1.10.1.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/ant-1.10.9.jar b/src/python/review/inspectors/pmd/files/lib/ant-1.10.9.jar new file mode 100644 index 00000000..d8632ce1 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/ant-1.10.9.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/ant-launcher-1.10.1.jar b/src/python/review/inspectors/pmd/files/lib/ant-launcher-1.10.1.jar deleted file mode 100644 index 5073d2f8..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/ant-launcher-1.10.1.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/ant-launcher-1.10.9.jar b/src/python/review/inspectors/pmd/files/lib/ant-launcher-1.10.9.jar new file mode 100644 index 00000000..9cbb597d Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/ant-launcher-1.10.9.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/antlr4-runtime-4.7.jar b/src/python/review/inspectors/pmd/files/lib/antlr4-runtime-4.7.2.jar similarity index 79% rename from src/python/review/inspectors/pmd/files/lib/antlr4-runtime-4.7.jar rename to src/python/review/inspectors/pmd/files/lib/antlr4-runtime-4.7.2.jar index 5c3bf7d3..7a27e1b2 100644 Binary files a/src/python/review/inspectors/pmd/files/lib/antlr4-runtime-4.7.jar and b/src/python/review/inspectors/pmd/files/lib/antlr4-runtime-4.7.2.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/asm-7.1.jar b/src/python/review/inspectors/pmd/files/lib/asm-7.1.jar deleted file mode 100644 index 355eb08d..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/asm-7.1.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/asm-9.1.jar b/src/python/review/inspectors/pmd/files/lib/asm-9.1.jar new file mode 100644 index 00000000..82380198 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/asm-9.1.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/checker-qual-2.5.2.jar b/src/python/review/inspectors/pmd/files/lib/checker-qual-2.5.2.jar deleted file mode 100644 index ae4e7f1f..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/checker-qual-2.5.2.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/groovy-2.4.21.jar b/src/python/review/inspectors/pmd/files/lib/groovy-2.4.21.jar new file mode 100644 index 00000000..5cb8f661 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/groovy-2.4.21.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/groovy-2.4.7.jar b/src/python/review/inspectors/pmd/files/lib/groovy-2.4.7.jar deleted file mode 100644 index 36983ff9..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/groovy-2.4.7.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/guava-26.0-jre.jar b/src/python/review/inspectors/pmd/files/lib/guava-26.0-jre.jar deleted file mode 100644 index cd71a92f..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/guava-26.0-jre.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/javacc-5.0.jar b/src/python/review/inspectors/pmd/files/lib/javacc-5.0.jar deleted file mode 100644 index 2550727e..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/javacc-5.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/jcommander-1.48.jar b/src/python/review/inspectors/pmd/files/lib/jcommander-1.48.jar new file mode 100644 index 00000000..ad0a12c9 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/jcommander-1.48.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/jcommander-1.72.jar b/src/python/review/inspectors/pmd/files/lib/jcommander-1.72.jar deleted file mode 100644 index acb8e609..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/jcommander-1.72.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/jline-2.14.6.jar b/src/python/review/inspectors/pmd/files/lib/jline-2.14.6.jar deleted file mode 100644 index fe11ed54..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/jline-2.14.6.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/logback-classic-1.1.7.jar b/src/python/review/inspectors/pmd/files/lib/logback-classic-1.1.7.jar deleted file mode 100644 index e05c037f..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/logback-classic-1.1.7.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/logback-classic-1.2.3.jar b/src/python/review/inspectors/pmd/files/lib/logback-classic-1.2.3.jar new file mode 100644 index 00000000..bed00c0a Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/logback-classic-1.2.3.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/logback-core-1.1.7.jar b/src/python/review/inspectors/pmd/files/lib/logback-core-1.1.7.jar deleted file mode 100644 index f14819b4..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/logback-core-1.1.7.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/logback-core-1.2.3.jar b/src/python/review/inspectors/pmd/files/lib/logback-core-1.2.3.jar new file mode 100644 index 00000000..487b3956 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/logback-core-1.2.3.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-apex-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-apex-6.20.0.jar deleted file mode 100644 index 07c29668..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-apex-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-apex-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-apex-6.36.0.jar new file mode 100644 index 00000000..219a353f Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-apex-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.20.0-lib.jar b/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.36.0-lib.jar similarity index 59% rename from src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.20.0-lib.jar rename to src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.36.0-lib.jar index bb1964a6..4546f33c 100644 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.20.0-lib.jar and b/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.36.0-lib.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.20.0.pom b/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.36.0.pom similarity index 89% rename from src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.20.0.pom rename to src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.36.0.pom index f5790c5b..45d0b90c 100644 --- a/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.20.0.pom +++ b/src/python/review/inspectors/pmd/files/lib/pmd-apex-jorje-6.36.0.pom @@ -8,15 +8,13 @@ net.sourceforge.pmd pmd - 6.20.0 + 6.36.0 + ../ 8 - - 1.${java.version} - 1.${java.version} - 2019-01-18-a041d7 + 2020-09-10-5a5192 @@ -56,12 +54,12 @@ ch.qos.logback logback-classic - 1.1.7 + 1.2.3 ch.qos.logback logback-core - 1.1.7 + 1.2.3 com.google.code.findbugs @@ -81,7 +79,6 @@ com.google.guava guava - 26.0-jre com.google.j2objc @@ -91,7 +88,6 @@ org.antlr antlr-runtime - 3.5.2 org.antlr @@ -121,7 +117,7 @@ org.yaml snakeyaml - 1.17 + 1.26 aopalliance diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-core-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-core-6.20.0.jar deleted file mode 100644 index 8d849eff..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-core-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-core-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-core-6.36.0.jar new file mode 100644 index 00000000..0480f6f0 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-core-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-cpp-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-cpp-6.20.0.jar deleted file mode 100644 index 581460cb..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-cpp-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-cpp-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-cpp-6.36.0.jar new file mode 100644 index 00000000..d71d917c Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-cpp-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-cs-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-cs-6.20.0.jar deleted file mode 100644 index 8a2a1dfd..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-cs-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-cs-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-cs-6.36.0.jar new file mode 100644 index 00000000..b2d740c8 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-cs-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-dart-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-dart-6.20.0.jar deleted file mode 100644 index fb9a6610..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-dart-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-dart-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-dart-6.36.0.jar new file mode 100644 index 00000000..903d06bf Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-dart-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-fortran-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-fortran-6.20.0.jar deleted file mode 100644 index 9fa9e9a6..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-fortran-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-fortran-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-fortran-6.36.0.jar new file mode 100644 index 00000000..727c639c Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-fortran-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-go-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-go-6.20.0.jar deleted file mode 100644 index 51b72e62..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-go-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-go-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-go-6.36.0.jar new file mode 100644 index 00000000..c73f7b44 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-go-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-groovy-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-groovy-6.20.0.jar deleted file mode 100644 index cbc51a70..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-groovy-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-groovy-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-groovy-6.36.0.jar new file mode 100644 index 00000000..3397d601 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-groovy-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-java-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-java-6.20.0.jar deleted file mode 100644 index 9cebecdb..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-java-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-java-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-java-6.36.0.jar new file mode 100644 index 00000000..54f4161a Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-java-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-javascript-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-javascript-6.20.0.jar deleted file mode 100644 index c074c354..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-javascript-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-javascript-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-javascript-6.36.0.jar new file mode 100644 index 00000000..b920e837 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-javascript-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-jsp-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-jsp-6.20.0.jar deleted file mode 100644 index 4884e646..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-jsp-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-jsp-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-jsp-6.36.0.jar new file mode 100644 index 00000000..fc5107f0 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-jsp-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-kotlin-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-kotlin-6.20.0.jar deleted file mode 100644 index 5d6b741c..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-kotlin-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-kotlin-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-kotlin-6.36.0.jar new file mode 100644 index 00000000..0c9c6a23 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-kotlin-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-lua-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-lua-6.20.0.jar deleted file mode 100644 index a138a1b3..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-lua-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-lua-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-lua-6.36.0.jar new file mode 100644 index 00000000..b572d019 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-lua-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-matlab-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-matlab-6.20.0.jar deleted file mode 100644 index f08a093b..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-matlab-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-matlab-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-matlab-6.36.0.jar new file mode 100644 index 00000000..a38664df Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-matlab-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-modelica-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-modelica-6.36.0.jar new file mode 100644 index 00000000..11015e89 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-modelica-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-objectivec-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-objectivec-6.20.0.jar deleted file mode 100644 index 72fd2d2c..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-objectivec-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-objectivec-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-objectivec-6.36.0.jar new file mode 100644 index 00000000..0c8773d1 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-objectivec-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-perl-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-perl-6.20.0.jar deleted file mode 100644 index 091b59cf..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-perl-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-perl-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-perl-6.36.0.jar new file mode 100644 index 00000000..f4b080d9 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-perl-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-php-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-php-6.20.0.jar deleted file mode 100644 index 368f1840..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-php-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-php-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-php-6.36.0.jar new file mode 100644 index 00000000..b745cda0 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-php-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-plsql-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-plsql-6.20.0.jar deleted file mode 100644 index 0d5ed200..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-plsql-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-plsql-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-plsql-6.36.0.jar new file mode 100644 index 00000000..3090912d Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-plsql-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-python-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-python-6.20.0.jar deleted file mode 100644 index 6ec84d25..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-python-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-python-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-python-6.36.0.jar new file mode 100644 index 00000000..8a9d6ded Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-python-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-ruby-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-ruby-6.20.0.jar deleted file mode 100644 index ada5152d..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-ruby-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-ruby-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-ruby-6.36.0.jar new file mode 100644 index 00000000..4182a430 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-ruby-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-scala-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-scala-6.20.0.jar deleted file mode 100644 index 3e69bc52..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-scala-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-scala_2.13-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-scala_2.13-6.36.0.jar new file mode 100644 index 00000000..c72f0d42 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-scala_2.13-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-swift-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-swift-6.20.0.jar deleted file mode 100644 index a070ff4a..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-swift-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-swift-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-swift-6.36.0.jar new file mode 100644 index 00000000..4bedcefd Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-swift-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-ui-6.19.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-ui-6.27.0.jar similarity index 88% rename from src/python/review/inspectors/pmd/files/lib/pmd-ui-6.19.0.jar rename to src/python/review/inspectors/pmd/files/lib/pmd-ui-6.27.0.jar index 1b0b00e6..9ccc9e0f 100644 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-ui-6.19.0.jar and b/src/python/review/inspectors/pmd/files/lib/pmd-ui-6.27.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-visualforce-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-visualforce-6.20.0.jar deleted file mode 100644 index 511bc3ed..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-visualforce-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-visualforce-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-visualforce-6.36.0.jar new file mode 100644 index 00000000..fcb8008c Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-visualforce-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-vm-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-vm-6.20.0.jar deleted file mode 100644 index feade8d0..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-vm-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-vm-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-vm-6.36.0.jar new file mode 100644 index 00000000..536713b7 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-vm-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-xml-6.20.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-xml-6.20.0.jar deleted file mode 100644 index 5520477b..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/pmd-xml-6.20.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/pmd-xml-6.36.0.jar b/src/python/review/inspectors/pmd/files/lib/pmd-xml-6.36.0.jar new file mode 100644 index 00000000..56dc9e79 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/pmd-xml-6.36.0.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/rhino-1.7.13.jar b/src/python/review/inspectors/pmd/files/lib/rhino-1.7.13.jar new file mode 100644 index 00000000..6433ffc3 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/rhino-1.7.13.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/rhino-1.7.7.2.jar b/src/python/review/inspectors/pmd/files/lib/rhino-1.7.7.2.jar deleted file mode 100644 index 4a18d336..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/rhino-1.7.7.2.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/scala-compiler-2.13.0.jar b/src/python/review/inspectors/pmd/files/lib/scala-compiler-2.13.0.jar deleted file mode 100644 index 8cff2511..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/scala-compiler-2.13.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/scala-library-2.13.0.jar b/src/python/review/inspectors/pmd/files/lib/scala-library-2.13.3.jar similarity index 53% rename from src/python/review/inspectors/pmd/files/lib/scala-library-2.13.0.jar rename to src/python/review/inspectors/pmd/files/lib/scala-library-2.13.3.jar index 85964eea..39939531 100644 Binary files a/src/python/review/inspectors/pmd/files/lib/scala-library-2.13.0.jar and b/src/python/review/inspectors/pmd/files/lib/scala-library-2.13.3.jar differ diff --git a/src/python/review/inspectors/pmd/files/lib/scala-reflect-2.13.0.jar b/src/python/review/inspectors/pmd/files/lib/scala-reflect-2.13.0.jar deleted file mode 100644 index 0290492a..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/scala-reflect-2.13.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/scalameta_2.13-4.2.0.jar b/src/python/review/inspectors/pmd/files/lib/scalameta_2.13-4.2.0.jar deleted file mode 100644 index a4adfcdf..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/scalameta_2.13-4.2.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/scalap-2.13.0.jar b/src/python/review/inspectors/pmd/files/lib/scalap-2.13.0.jar deleted file mode 100644 index 3dbe3e2a..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/scalap-2.13.0.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/snakeyaml-1.17.jar b/src/python/review/inspectors/pmd/files/lib/snakeyaml-1.17.jar deleted file mode 100644 index b0372a3c..00000000 Binary files a/src/python/review/inspectors/pmd/files/lib/snakeyaml-1.17.jar and /dev/null differ diff --git a/src/python/review/inspectors/pmd/files/lib/snakeyaml-1.26.jar b/src/python/review/inspectors/pmd/files/lib/snakeyaml-1.26.jar new file mode 100644 index 00000000..8f301fd0 Binary files /dev/null and b/src/python/review/inspectors/pmd/files/lib/snakeyaml-1.26.jar differ diff --git a/src/python/review/inspectors/pmd/issue_types.py b/src/python/review/inspectors/pmd/issue_types.py index 2188702b..35bae337 100644 --- a/src/python/review/inspectors/pmd/issue_types.py +++ b/src/python/review/inspectors/pmd/issue_types.py @@ -3,13 +3,13 @@ from src.python.review.inspectors.issue import IssueType PMD_RULE_TO_ISSUE_TYPE: Dict[str, IssueType] = { - # Best Practices + # ---- Best Practices ---- 'AbstractClassWithoutAbstractMethod': IssueType.BEST_PRACTICES, 'AccessorClassGeneration': IssueType.BEST_PRACTICES, 'AccessorMethodGeneration': IssueType.BEST_PRACTICES, 'ArrayIsStoredDirectly': IssueType.BEST_PRACTICES, 'AvoidMessageDigestField': IssueType.BEST_PRACTICES, - 'AvoidPrintStackTrace': IssueType.BEST_PRACTICES, + 'AvoidReassigningCatchVariables': IssueType.BEST_PRACTICES, 'AvoidReassigningLoopVariables': IssueType.BEST_PRACTICES, 'AvoidReassigningParameters': IssueType.BEST_PRACTICES, 'AvoidStringBufferField': IssueType.BEST_PRACTICES, @@ -17,168 +17,165 @@ 'CheckResultSet': IssueType.BEST_PRACTICES, 'ConstantsInInterface': IssueType.BEST_PRACTICES, 'DefaultLabelNotLastInSwitchStmt': IssueType.BEST_PRACTICES, - 'DoubleBraceInitialization': IssueType.BEST_PRACTICES, 'ForLoopCanBeForeach': IssueType.BEST_PRACTICES, 'ForLoopVariableCount': IssueType.BEST_PRACTICES, - 'GuardLogStatement': IssueType.BEST_PRACTICES, - 'JUnit4SuitesShouldUseSuiteAnnotation': IssueType.BEST_PRACTICES, - 'JUnit4TestShouldUseAfterAnnotation': IssueType.BEST_PRACTICES, - 'JUnit4TestShouldUseBeforeAnnotation': IssueType.BEST_PRACTICES, - 'JUnit4TestShouldUseTestAnnotation': IssueType.BEST_PRACTICES, - 'JUnitAssertionsShouldIncludeMessage': IssueType.BEST_PRACTICES, - 'JUnitTestContainsTooManyAsserts': IssueType.BEST_PRACTICES, - 'JUnitTestsShouldIncludeAssert': IssueType.BEST_PRACTICES, - 'JUnitUseExpected': IssueType.BEST_PRACTICES, - 'LooseCoupling': IssueType.BEST_PRACTICES, + 'LiteralsFirstInComparisons': IssueType.BEST_PRACTICES, 'MethodReturnsInternalArray': IssueType.BEST_PRACTICES, 'MissingOverride': IssueType.BEST_PRACTICES, 'OneDeclarationPerLine': IssueType.CODE_STYLE, - 'PositionLiteralsFirstInCaseInsensitiveComparisons': - IssueType.BEST_PRACTICES, - 'PositionLiteralsFirstInComparisons': IssueType.BEST_PRACTICES, 'PreserveStackTrace': IssueType.BEST_PRACTICES, 'ReplaceEnumerationWithIterator': IssueType.BEST_PRACTICES, - 'ReplaceHashtableWithMap': IssueType.BEST_PRACTICES, - 'ReplaceVectorWithList': IssueType.BEST_PRACTICES, 'SwitchStmtsShouldHaveDefault': IssueType.ERROR_PRONE, - 'SystemPrintln': IssueType.BEST_PRACTICES, 'UnusedFormalParameter': IssueType.BEST_PRACTICES, - 'UnusedImports': IssueType.BEST_PRACTICES, 'UnusedLocalVariable': IssueType.BEST_PRACTICES, 'UnusedPrivateField': IssueType.BEST_PRACTICES, 'UnusedPrivateMethod': IssueType.BEST_PRACTICES, - 'UseAssertEqualsInsteadOfAssertTrue': IssueType.BEST_PRACTICES, - 'UseAssertNullInsteadOfAssertTrue': IssueType.BEST_PRACTICES, - 'UseAssertSameInsteadOfAssertTrue': IssueType.BEST_PRACTICES, - 'UseAssertTrueInsteadOfAssertEquals': IssueType.BEST_PRACTICES, 'UseCollectionIsEmpty': IssueType.BEST_PRACTICES, + 'UseStandardCharsets': IssueType.BEST_PRACTICES, 'UseTryWithResources': IssueType.BEST_PRACTICES, - 'UseVarargs': IssueType.BEST_PRACTICES, 'WhileLoopWithLiteralBoolean': IssueType.BEST_PRACTICES, + # 'AvoidPrintStackTrace': IssueType.BEST_PRACTICES, + # 'DoubleBraceInitialization': IssueType.BEST_PRACTICES, + # 'GuardLogStatement': IssueType.BEST_PRACTICES, + # 'JUnit4SuitesShouldUseSuiteAnnotation': IssueType.BEST_PRACTICES, + # 'JUnit4TestShouldUseAfterAnnotation': IssueType.BEST_PRACTICES, + # 'JUnit4TestShouldUseBeforeAnnotation': IssueType.BEST_PRACTICES, + # 'JUnit4TestShouldUseTestAnnotation': IssueType.BEST_PRACTICES, + # 'JUnit5TestShouldBePackagePrivate': IssueType.BEST_PRACTICES, + # 'JUnitAssertionsShouldIncludeMessage': IssueType.BEST_PRACTICES, + # 'JUnitTestContainsTooManyAsserts': IssueType.BEST_PRACTICES, + # 'JUnitTestsShouldIncludeAssert': IssueType.BEST_PRACTICES, + # 'JUnitUseExpected': IssueType.BEST_PRACTICES, + # 'LooseCoupling': IssueType.BEST_PRACTICES, + # 'PositionLiteralsFirstInCaseInsensitiveComparisons': IssueType.BEST_PRACTICES, + # 'PositionLiteralsFirstInComparisons': IssueType.BEST_PRACTICES, + # 'ReplaceHashtableWithMap': IssueType.BEST_PRACTICES, + # 'ReplaceVectorWithList': IssueType.BEST_PRACTICES, + # 'SystemPrintln': IssueType.BEST_PRACTICES, + # 'UnusedAssignment': IssueType.BEST_PRACTICES, + # 'UnusedImports': IssueType.BEST_PRACTICES, + # 'UseAssertEqualsInsteadOfAssertTrue': IssueType.BEST_PRACTICES, + # 'UseAssertNullInsteadOfAssertTrue': IssueType.BEST_PRACTICES, + # 'UseAssertSameInsteadOfAssertTrue': IssueType.BEST_PRACTICES, + # 'UseAssertTrueInsteadOfAssertEquals': IssueType.BEST_PRACTICES, + # 'UseVarargs': IssueType.BEST_PRACTICES, - # Code Style - 'AbstractNaming': IssueType.CODE_STYLE, - 'AtLeastOneConstructor': IssueType.CODE_STYLE, + # ---- Code Style ---- 'AvoidDollarSigns': IssueType.CODE_STYLE, - 'AvoidFinalLocalVariable': IssueType.CODE_STYLE, - 'AvoidPrefixingMethodParameters': IssueType.CODE_STYLE, 'AvoidProtectedFieldInFinalClass': IssueType.BEST_PRACTICES, 'AvoidProtectedMethodInFinalClassNotExtending': IssueType.CODE_STYLE, - 'AvoidUsingNativeCode': IssueType.BEST_PRACTICES, 'BooleanGetMethodName': IssueType.CODE_STYLE, 'CallSuperInConstructor': IssueType.CODE_STYLE, 'ClassNamingConventions': IssueType.CODE_STYLE, - 'CommentDefaultAccessModifier': IssueType.CODE_STYLE, - 'ConfusingTernary': IssueType.BEST_PRACTICES, 'ControlStatementBraces': IssueType.CODE_STYLE, - 'DefaultPackage': IssueType.BEST_PRACTICES, - 'DontImportJavaLang': IssueType.BEST_PRACTICES, - 'DuplicateImports': IssueType.BEST_PRACTICES, 'EmptyMethodInAbstractClassShouldBeAbstract': IssueType.BEST_PRACTICES, 'ExtendsObject': IssueType.BEST_PRACTICES, 'FieldDeclarationsShouldBeAtStartOfClass': IssueType.CODE_STYLE, 'FieldNamingConventions': IssueType.CODE_STYLE, 'ForLoopShouldBeWhileLoop': IssueType.BEST_PRACTICES, - 'ForLoopsMustUseBraces': IssueType.CODE_STYLE, 'FormalParameterNamingConventions': IssueType.CODE_STYLE, - 'GenericsNaming': IssueType.CODE_STYLE, 'IdenticalCatchBranches': IssueType.BEST_PRACTICES, - 'IfElseStmtsMustUseBraces': IssueType.CODE_STYLE, - 'IfStmtsMustUseBraces': IssueType.CODE_STYLE, - 'LinguisticNaming': IssueType.CODE_STYLE, - 'LocalHomeNamingConvention': IssueType.CODE_STYLE, - 'LocalInterfaceSessionNamingConvention': IssueType.CODE_STYLE, - 'LocalVariableCouldBeFinal': IssueType.CODE_STYLE, 'LocalVariableNamingConventions': IssueType.CODE_STYLE, - 'LongVariable': IssueType.CODE_STYLE, - 'MDBAndSessionBeanNamingConvention': IssueType.CODE_STYLE, - 'MethodArgumentCouldBeFinal': IssueType.CODE_STYLE, 'MethodNamingConventions': IssueType.CODE_STYLE, - 'MIsLeadingVariableName': IssueType.CODE_STYLE, - 'NoPackage': IssueType.BEST_PRACTICES, - 'OnlyOneReturn': IssueType.BEST_PRACTICES, 'PackageCase': IssueType.CODE_STYLE, - 'PrematureDeclaration': IssueType.CODE_STYLE, - 'RemoteInterfaceNamingConvention': IssueType.CODE_STYLE, - 'RemoteSessionInterfaceNamingConvention': IssueType.CODE_STYLE, - 'ShortClassName': IssueType.CODE_STYLE, - 'ShortMethodName': IssueType.CODE_STYLE, - 'ShortVariable': IssueType.CODE_STYLE, - 'SuspiciousConstantFieldName': IssueType.CODE_STYLE, - 'TooManyStaticImports': IssueType.CODE_STYLE, - 'UnnecessaryAnnotationValueElement': IssueType.CODE_STYLE, + 'UnnecessaryCast': IssueType.BEST_PRACTICES, 'UnnecessaryConstructor': IssueType.BEST_PRACTICES, 'UnnecessaryFullyQualifiedName': IssueType.CODE_STYLE, + 'UnnecessaryImport': IssueType.BEST_PRACTICES, 'UnnecessaryLocalBeforeReturn': IssueType.CODE_STYLE, - 'UnnecessaryModifier': IssueType.CODE_STYLE, 'UnnecessaryReturn': IssueType.CODE_STYLE, 'UseDiamondOperator': IssueType.CODE_STYLE, 'UselessParentheses': IssueType.CODE_STYLE, 'UselessQualifiedThis': IssueType.CODE_STYLE, 'UseShortArrayInitializer': IssueType.BEST_PRACTICES, - 'UseUnderscoresInNumericLiterals': IssueType.BEST_PRACTICES, - 'VariableNamingConventions': IssueType.CODE_STYLE, - 'WhileLoopsMustUseBraces': IssueType.CODE_STYLE, + # 'AbstractNaming': IssueType.CODE_STYLE, + # 'AtLeastOneConstructor': IssueType.CODE_STYLE, + # 'AvoidFinalLocalVariable': IssueType.CODE_STYLE, + # 'AvoidPrefixingMethodParameters': IssueType.CODE_STYLE, + # 'AvoidUsingNativeCode': IssueType.BEST_PRACTICES, + # 'CommentDefaultAccessModifier': IssueType.CODE_STYLE, + # 'ConfusingTernary': IssueType.BEST_PRACTICES, + # 'DefaultPackage': IssueType.BEST_PRACTICES, + # 'DontImportJavaLang': IssueType.BEST_PRACTICES, + # 'DuplicateImports': IssueType.BEST_PRACTICES, + # 'ForLoopsMustUseBraces': IssueType.CODE_STYLE, + # 'GenericsNaming': IssueType.CODE_STYLE, + # 'IfElseStmtsMustUseBraces': IssueType.CODE_STYLE, + # 'IfStmtsMustUseBraces': IssueType.CODE_STYLE, + # 'LinguisticNaming': IssueType.CODE_STYLE, + # 'LocalHomeNamingConvention': IssueType.CODE_STYLE, + # 'LocalInterfaceSessionNamingConvention': IssueType.CODE_STYLE, + # 'LocalVariableCouldBeFinal': IssueType.CODE_STYLE, + # 'LongVariable': IssueType.CODE_STYLE, + # 'MDBAndSessionBeanNamingConvention': IssueType.CODE_STYLE, + # 'MethodArgumentCouldBeFinal': IssueType.CODE_STYLE, + # 'MIsLeadingVariableName': IssueType.CODE_STYLE, + # 'NoPackage': IssueType.BEST_PRACTICES, + # 'OnlyOneReturn': IssueType.BEST_PRACTICES, + # 'UnnecessaryModifier': IssueType.CODE_STYLE, + # 'UseUnderscoresInNumericLiterals': IssueType.BEST_PRACTICES, + # 'VariableNamingConventions': IssueType.CODE_STYLE, + # 'WhileLoopsMustUseBraces': IssueType.CODE_STYLE, - # Design - 'AbstractClassWithoutAnyMethod': IssueType.BEST_PRACTICES, - 'AvoidCatchingGenericException': IssueType.BEST_PRACTICES, + # ---- Design ---- 'AvoidDeeplyNestedIfStmts': IssueType.COMPLEXITY, 'AvoidRethrowingException': IssueType.BEST_PRACTICES, 'AvoidThrowingNewInstanceOfSameException': IssueType.BEST_PRACTICES, - 'AvoidThrowingNullPointerException': IssueType.BEST_PRACTICES, - 'AvoidThrowingRawExceptionTypes': IssueType.BEST_PRACTICES, 'AvoidUncheckedExceptionsInSignatures': IssueType.BEST_PRACTICES, - 'ClassWithOnlyPrivateConstructorsShouldBeFinal': IssueType.BEST_PRACTICES, 'CollapsibleIfStatements': IssueType.BEST_PRACTICES, - 'CouplingBetweenObjects': IssueType.BEST_PRACTICES, - 'CyclomaticComplexity': IssueType.COMPLEXITY, - 'DataClass': IssueType.BEST_PRACTICES, 'DoNotExtendJavaLangError': IssueType.BEST_PRACTICES, - 'ExceptionAsFlowControl': IssueType.BEST_PRACTICES, - 'ExcessiveClassLength': IssueType.BEST_PRACTICES, - 'ExcessiveImports': IssueType.BEST_PRACTICES, - 'ExcessiveMethodLength': IssueType.COMPLEXITY, 'ExcessiveParameterList': IssueType.BEST_PRACTICES, 'ExcessivePublicCount': IssueType.BEST_PRACTICES, - 'FinalFieldCouldBeStatic': IssueType.BEST_PRACTICES, 'GodClass': IssueType.BEST_PRACTICES, - 'ImmutableField': IssueType.BEST_PRACTICES, - 'LawOfDemeter': IssueType.BEST_PRACTICES, 'LogicInversion': IssueType.BEST_PRACTICES, - 'LoosePackageCoupling': IssueType.BEST_PRACTICES, - 'ModifiedCyclomaticComplexity': IssueType.COMPLEXITY, - 'NcssConstructorCount': IssueType.COMPLEXITY, - 'NcssCount': IssueType.COMPLEXITY, - 'NcssMethodCount': IssueType.COMPLEXITY, - 'NcssTypeCount': IssueType.COMPLEXITY, - 'NPathComplexity': IssueType.COMPLEXITY, - 'SignatureDeclareThrowsException': IssueType.BEST_PRACTICES, 'SimplifiedTernary': IssueType.BEST_PRACTICES, 'SimplifyBooleanAssertion': IssueType.BEST_PRACTICES, 'SimplifyBooleanExpressions': IssueType.BEST_PRACTICES, 'SimplifyBooleanReturns': IssueType.BEST_PRACTICES, 'SimplifyConditional': IssueType.BEST_PRACTICES, 'SingularField': IssueType.BEST_PRACTICES, - 'StdCyclomaticComplexity': IssueType.COMPLEXITY, 'SwitchDensity': IssueType.COMPLEXITY, 'TooManyFields': IssueType.COMPLEXITY, - 'TooManyMethods': IssueType.COMPLEXITY, 'UselessOverridingMethod': IssueType.BEST_PRACTICES, 'UseObjectForClearerAPI': IssueType.BEST_PRACTICES, - 'UseUtilityClass': IssueType.BEST_PRACTICES, + # 'AbstractClassWithoutAnyMethod': IssueType.BEST_PRACTICES, + # 'AvoidCatchingGenericException': IssueType.BEST_PRACTICES, + # 'AvoidThrowingNullPointerException': IssueType.BEST_PRACTICES, + # 'AvoidThrowingRawExceptionTypes': IssueType.BEST_PRACTICES, + # 'ClassWithOnlyPrivateConstructorsShouldBeFinal': IssueType.BEST_PRACTICES, + # 'CognitiveComplexity': IssueType.COMPLEXITY, + # 'CouplingBetweenObjects': IssueType.BEST_PRACTICES, + # 'CyclomaticComplexity': IssueType.COMPLEXITY, + # 'DataClass': IssueType.BEST_PRACTICES, + # 'ExceptionAsFlowControl': IssueType.BEST_PRACTICES, + # 'ExcessiveClassLength': IssueType.BEST_PRACTICES, + # 'ExcessiveImports': IssueType.BEST_PRACTICES, + # 'ExcessiveMethodLength': IssueType.COMPLEXITY, + # 'FinalFieldCouldBeStatic': IssueType.BEST_PRACTICES, + # 'ImmutableField': IssueType.BEST_PRACTICES, + # 'LawOfDemeter': IssueType.BEST_PRACTICES, + # 'LoosePackageCoupling': IssueType.BEST_PRACTICES, + # 'ModifiedCyclomaticComplexity': IssueType.COMPLEXITY, + # 'MutableStaticState': IssueType.BEST_PRACTICES, + # 'NcssConstructorCount': IssueType.COMPLEXITY, + # 'NcssCount': IssueType.COMPLEXITY, + # 'NcssMethodCount': IssueType.COMPLEXITY, + # 'NcssTypeCount': IssueType.COMPLEXITY, + # 'NPathComplexity': IssueType.COMPLEXITY, + # 'SignatureDeclareThrowsException': IssueType.BEST_PRACTICES, + # 'StdCyclomaticComplexity': IssueType.COMPLEXITY, + # 'TooManyMethods': IssueType.COMPLEXITY, + # 'UseUtilityClass': IssueType.BEST_PRACTICES, - # Documentation - 'CommentContent': IssueType.BEST_PRACTICES, - 'CommentRequired': IssueType.BEST_PRACTICES, - 'CommentSize': IssueType.BEST_PRACTICES, + # ---- Documentation ---- 'UncommentedEmptyConstructor': IssueType.BEST_PRACTICES, 'UncommentedEmptyMethodBody': IssueType.BEST_PRACTICES, + # 'CommentContent': IssueType.BEST_PRACTICES, + # 'CommentRequired': IssueType.BEST_PRACTICES, + # 'CommentSize': IssueType.BEST_PRACTICES, - # Error Prone + # ---- Error Prone ---- 'AssignmentInOperand': IssueType.ERROR_PRONE, - 'AssignmentToNonFinalStatic': IssueType.ERROR_PRONE, - 'AvoidAccessibilityAlteration': IssueType.ERROR_PRONE, 'AvoidAssertAsIdentifier': IssueType.ERROR_PRONE, 'AvoidBranchingStatementAsLastInLoop': IssueType.BEST_PRACTICES, 'AvoidCallingFinalize': IssueType.ERROR_PRONE, @@ -190,32 +187,17 @@ 'AvoidFieldNameMatchingMethodName': IssueType.BEST_PRACTICES, 'AvoidFieldNameMatchingTypeName': IssueType.BEST_PRACTICES, 'AvoidInstanceofChecksInCatchClause': IssueType.BEST_PRACTICES, - 'AvoidLiteralsInIfCondition': IssueType.ERROR_PRONE, + 'AvoidLiteralsInIfCondition': IssueType.INFO, 'AvoidLosingExceptionInformation': IssueType.ERROR_PRONE, 'AvoidMultipleUnaryOperators': IssueType.ERROR_PRONE, 'AvoidUsingOctalValues': IssueType.BEST_PRACTICES, - 'BadComparison': IssueType.ERROR_PRONE, - 'BeanMembersShouldSerialize': IssueType.ERROR_PRONE, 'BrokenNullCheck': IssueType.ERROR_PRONE, - 'CallSuperFirst': IssueType.ERROR_PRONE, - 'CallSuperLast': IssueType.ERROR_PRONE, 'CheckSkipResult': IssueType.ERROR_PRONE, 'ClassCastExceptionWithToArray': IssueType.ERROR_PRONE, - 'CloneMethodMustBePublic': IssueType.ERROR_PRONE, - 'CloneMethodMustImplementCloneable': IssueType.ERROR_PRONE, - 'CloneMethodReturnTypeMustMatchClassName': IssueType.ERROR_PRONE, - 'CloneThrowsCloneNotSupportedException': IssueType.ERROR_PRONE, - 'CloseResource': IssueType.ERROR_PRONE, 'CompareObjectsWithEquals': IssueType.ERROR_PRONE, + 'ComparisonWithNaN': IssueType.ERROR_PRONE, 'ConstructorCallsOverridableMethod': IssueType.ERROR_PRONE, - 'DataflowAnomalyAnalysis': IssueType.ERROR_PRONE, - 'DetachedTestCase': IssueType.ERROR_PRONE, - 'DoNotCallGarbageCollectionExplicitly': IssueType.ERROR_PRONE, - 'DoNotCallSystemExit': IssueType.ERROR_PRONE, 'DoNotExtendJavaLangThrowable': IssueType.ERROR_PRONE, - 'DoNotHardCodeSDCard': IssueType.ERROR_PRONE, - 'DoNotThrowExceptionInFinally': IssueType.ERROR_PRONE, - 'DontImportSun': IssueType.ERROR_PRONE, 'DontUseFloatTypeForLoopIndices': IssueType.ERROR_PRONE, 'EmptyCatchBlock': IssueType.BEST_PRACTICES, 'EmptyFinalizer': IssueType.BEST_PRACTICES, @@ -234,94 +216,115 @@ 'FinalizeOverloaded': IssueType.ERROR_PRONE, 'FinalizeShouldBeProtected': IssueType.ERROR_PRONE, 'IdempotentOperations': IssueType.BEST_PRACTICES, - 'ImportFromSamePackage': IssueType.BEST_PRACTICES, 'InstantiationToGetClass': IssueType.ERROR_PRONE, - 'InvalidLogMessageFormat': IssueType.ERROR_PRONE, - 'InvalidSlf4jMessageFormat': IssueType.ERROR_PRONE, 'JumbledIncrementer': IssueType.ERROR_PRONE, - 'JUnitSpelling': IssueType.ERROR_PRONE, - 'JUnitStaticSuite': IssueType.ERROR_PRONE, - 'LoggerIsNotStaticFinal': IssueType.ERROR_PRONE, 'MethodWithSameNameAsEnclosingClass': IssueType.BEST_PRACTICES, 'MisplacedNullCheck': IssueType.ERROR_PRONE, 'MissingBreakInSwitch': IssueType.ERROR_PRONE, 'MissingSerialVersionUID': IssueType.ERROR_PRONE, 'MissingStaticMethodInNonInstantiatableClass': IssueType.ERROR_PRONE, - 'MoreThanOneLogger': IssueType.ERROR_PRONE, 'NonCaseLabelInSwitchStatement': IssueType.BEST_PRACTICES, - 'NonStaticInitializer': IssueType.ERROR_PRONE, - 'NullAssignment': IssueType.ERROR_PRONE, 'OverrideBothEqualsAndHashcode': IssueType.ERROR_PRONE, 'ProperCloneImplementation': IssueType.ERROR_PRONE, - 'ProperLogger': IssueType.ERROR_PRONE, 'ReturnEmptyArrayRatherThanNull': IssueType.ERROR_PRONE, 'ReturnFromFinallyBlock': IssueType.BEST_PRACTICES, 'SimpleDateFormatNeedsLocale': IssueType.BEST_PRACTICES, 'SingleMethodSingleton': IssueType.ERROR_PRONE, 'SingletonClassReturningNewInstance': IssueType.ERROR_PRONE, - 'StaticEJBFieldShouldBeFinal': IssueType.ERROR_PRONE, 'StringBufferInstantiationWithChar': IssueType.ERROR_PRONE, 'SuspiciousEqualsMethodName': IssueType.ERROR_PRONE, 'SuspiciousHashcodeMethodName': IssueType.ERROR_PRONE, - 'SuspiciousOctalEscape': IssueType.ERROR_PRONE, - 'TestClassWithoutTestCases': IssueType.ERROR_PRONE, 'UnconditionalIfStatement': IssueType.BEST_PRACTICES, 'UnnecessaryBooleanAssertion': IssueType.BEST_PRACTICES, 'UnnecessaryCaseChange': IssueType.BEST_PRACTICES, 'UnnecessaryConversionTemporary': IssueType.BEST_PRACTICES, - 'UnusedNullCheckInEquals': IssueType.ERROR_PRONE, - 'UseCorrectExceptionLogging': IssueType.ERROR_PRONE, 'UseEqualsToCompareStrings': IssueType.ERROR_PRONE, - 'UselessOperationOnImmutable': IssueType.ERROR_PRONE, - 'UseLocaleWithCaseConversions': IssueType.ERROR_PRONE, - 'UseProperClassLoader': IssueType.ERROR_PRONE, + # 'AssignmentToNonFinalStatic': IssueType.ERROR_PRONE, + # 'AvoidAccessibilityAlteration': IssueType.ERROR_PRONE, + # 'BadComparison': IssueType.ERROR_PRONE, + # 'BeanMembersShouldSerialize': IssueType.ERROR_PRONE, + # 'CallSuperFirst': IssueType.ERROR_PRONE, + # 'CallSuperLast': IssueType.ERROR_PRONE, + # 'CloneMethodMustBePublic': IssueType.ERROR_PRONE, + # 'CloneMethodMustImplementCloneable': IssueType.ERROR_PRONE, + # 'CloneMethodReturnTypeMustMatchClassName': IssueType.ERROR_PRONE, + # 'CloneThrowsCloneNotSupportedException': IssueType.ERROR_PRONE, + # 'CloseResource': IssueType.ERROR_PRONE, + # 'DataflowAnomalyAnalysis': IssueType.ERROR_PRONE, + # 'DetachedTestCase': IssueType.ERROR_PRONE, + # 'DoNotCallGarbageCollectionExplicitly': IssueType.ERROR_PRONE, + # 'DoNotCallSystemExit': IssueType.ERROR_PRONE, + # 'DoNotHardCodeSDCard': IssueType.ERROR_PRONE, + # 'DoNotTerminateVM': IssueType.ERROR_PRONE, + # 'DoNotThrowExceptionInFinally': IssueType.ERROR_PRONE, + # 'DontImportSun': IssueType.ERROR_PRONE, + # 'ImportFromSamePackage': IssueType.BEST_PRACTICES, + # 'InvalidLogMessageFormat': IssueType.ERROR_PRONE, + # 'InvalidSlf4jMessageFormat': IssueType.ERROR_PRONE, + # 'JUnitSpelling': IssueType.ERROR_PRONE, + # 'JUnitStaticSuite': IssueType.ERROR_PRONE, + # 'LoggerIsNotStaticFinal': IssueType.ERROR_PRONE, + # 'MoreThanOneLogger': IssueType.ERROR_PRONE, + # 'NonStaticInitializer': IssueType.ERROR_PRONE, + # 'NullAssignment': IssueType.ERROR_PRONE, + # 'ProperLogger': IssueType.ERROR_PRONE, + # 'StaticEJBFieldShouldBeFinal': IssueType.ERROR_PRONE, + # 'SuspiciousOctalEscape': IssueType.ERROR_PRONE, + # 'TestClassWithoutTestCases': IssueType.ERROR_PRONE, + # 'UnusedNullCheckInEquals': IssueType.ERROR_PRONE, + # 'UseCorrectExceptionLogging': IssueType.ERROR_PRONE, + # 'UselessOperationOnImmutable': IssueType.ERROR_PRONE, + # 'UseLocaleWithCaseConversions': IssueType.ERROR_PRONE, + # 'UseProperClassLoader': IssueType.ERROR_PRONE, - # Multithreading - 'AvoidSynchronizedAtMethodLevel': IssueType.BEST_PRACTICES, + # ---- Multithreading ---- 'AvoidThreadGroup': IssueType.ERROR_PRONE, - # 'AvoidUsingVolatile': IssueType.ERROR_PRONE, - # 'DoNotUseThreads': IssueType.ERROR_PRONE, 'DontCallThreadRun': IssueType.ERROR_PRONE, 'DoubleCheckedLocking': IssueType.ERROR_PRONE, - 'NonThreadSafeSingleton': IssueType.ERROR_PRONE, - 'UnsynchronizedStaticDateFormatter': IssueType.ERROR_PRONE, 'UnsynchronizedStaticFormatter': IssueType.ERROR_PRONE, - 'UseConcurrentHashMap': IssueType.ERROR_PRONE, 'UseNotifyAllInsteadOfNotify': IssueType.ERROR_PRONE, + # 'AvoidSynchronizedAtMethodLevel': IssueType.BEST_PRACTICES, + # 'AvoidUsingVolatile': IssueType.ERROR_PRONE, + # 'DoNotUseThreads': IssueType.ERROR_PRONE, + # 'NonThreadSafeSingleton': IssueType.ERROR_PRONE, + # 'UnsynchronizedStaticDateFormatter': IssueType.ERROR_PRONE, + # 'UseConcurrentHashMap': IssueType.ERROR_PRONE, - # Performance + # ---- Performance ---- 'AddEmptyString': IssueType.BEST_PRACTICES, - 'AppendCharacterWithChar': IssueType.BEST_PRACTICES, 'AvoidArrayLoops': IssueType.BEST_PRACTICES, - 'AvoidFileStream': IssueType.BEST_PRACTICES, - 'AvoidInstantiatingObjectsInLoops': IssueType.BEST_PRACTICES, - 'AvoidUsingShortType': IssueType.BEST_PRACTICES, - 'BigIntegerInstantiation': IssueType.BEST_PRACTICES, - 'BooleanInstantiation': IssueType.BEST_PRACTICES, - 'ByteInstantiation': IssueType.BEST_PRACTICES, 'ConsecutiveAppendsShouldReuse': IssueType.BEST_PRACTICES, 'ConsecutiveLiteralAppends': IssueType.BEST_PRACTICES, - 'InefficientEmptyStringCheck': IssueType.BEST_PRACTICES, 'InefficientStringBuffering': IssueType.BEST_PRACTICES, - 'InsufficientStringBufferDeclaration': IssueType.BEST_PRACTICES, - 'IntegerInstantiation': IssueType.BEST_PRACTICES, - 'LongInstantiation': IssueType.BEST_PRACTICES, 'OptimizableToArrayCall': IssueType.BEST_PRACTICES, - 'RedundantFieldInitializer': IssueType.BEST_PRACTICES, - 'ShortInstantiation': IssueType.BEST_PRACTICES, - 'SimplifyStartsWith': IssueType.BEST_PRACTICES, - 'StringInstantiation': IssueType.BEST_PRACTICES, 'StringToString': IssueType.BEST_PRACTICES, 'TooFewBranchesForASwitchStatement': IssueType.BEST_PRACTICES, 'UnnecessaryWrapperObjectCreation': IssueType.BEST_PRACTICES, - 'UseArrayListInsteadOfVector': IssueType.BEST_PRACTICES, 'UseArraysAsList': IssueType.BEST_PRACTICES, - 'UseIndexOfChar': IssueType.BEST_PRACTICES, 'UselessStringValueOf': IssueType.BEST_PRACTICES, - 'UseStringBufferForStringAppends': IssueType.BEST_PRACTICES, 'UseStringBufferLength': IssueType.BEST_PRACTICES, + # 'AppendCharacterWithChar': IssueType.BEST_PRACTICES, + # 'AvoidCalendarDateCreation': IssueType.BEST_PRACTICES, + # 'AvoidFileStream': IssueType.BEST_PRACTICES, + # 'AvoidInstantiatingObjectsInLoops': IssueType.BEST_PRACTICES, + # 'AvoidUsingShortType': IssueType.BEST_PRACTICES, + # 'BigIntegerInstantiation': IssueType.BEST_PRACTICES, + # 'BooleanInstantiation': IssueType.BEST_PRACTICES, + # 'ByteInstantiation': IssueType.BEST_PRACTICES, + # 'InefficientEmptyStringCheck': IssueType.BEST_PRACTICES, + # 'InsufficientStringBufferDeclaration': IssueType.BEST_PRACTICES, + # 'IntegerInstantiation': IssueType.BEST_PRACTICES, + # 'LongInstantiation': IssueType.BEST_PRACTICES, + # 'RedundantFieldInitializer': IssueType.BEST_PRACTICES, + # 'ShortInstantiation': IssueType.BEST_PRACTICES, + # 'SimplifyStartsWith': IssueType.BEST_PRACTICES, + # 'StringInstantiation': IssueType.BEST_PRACTICES, + # 'UseArrayListInsteadOfVector': IssueType.BEST_PRACTICES, + # 'UseIndexOfChar': IssueType.BEST_PRACTICES, + # 'UseIOStreamsWithApacheCommonsFileItem': IssueType.BEST_PRACTICES, + # 'UseStringBufferForStringAppends': IssueType.BEST_PRACTICES, - # Security + # ---- Security ---- 'HardCodedCryptoKey': IssueType.BEST_PRACTICES, 'InsecureCryptoIv': IssueType.BEST_PRACTICES, } diff --git a/src/python/review/inspectors/pmd/pmd.py b/src/python/review/inspectors/pmd/pmd.py index c1f98194..345931c8 100644 --- a/src/python/review/inspectors/pmd/pmd.py +++ b/src/python/review/inspectors/pmd/pmd.py @@ -8,6 +8,7 @@ from src.python.review.common.file_system import new_temp_dir from src.python.review.common.subprocess_runner import run_in_subprocess from src.python.review.inspectors.base_inspector import BaseInspector +from src.python.review.inspectors.common import remove_prefix from src.python.review.inspectors.inspector_type import InspectorType from src.python.review.inspectors.issue import BaseIssue, CodeIssue, IssueType from src.python.review.inspectors.pmd.issue_types import PMD_RULE_TO_ISSUE_TYPE @@ -17,6 +18,7 @@ PATH_TOOLS_PMD_FILES = Path(__file__).parent / 'files' PATH_TOOLS_PMD_SHELL_SCRIPT = PATH_TOOLS_PMD_FILES / 'bin' / 'run.sh' PATH_TOOLS_PMD_RULES_SET = PATH_TOOLS_PMD_FILES / 'bin' / 'basic.xml' +DEFAULT_JAVA_VERSION = LanguageVersion.JAVA_11 class PMDInspector(BaseInspector): @@ -28,14 +30,14 @@ def __init__(self): @classmethod def _create_command(cls, path: Path, output_path: Path, - java_version: LanguageVersion, + language_version: LanguageVersion, n_cpu: int) -> List[str]: return [ PATH_TOOLS_PMD_SHELL_SCRIPT, 'pmd', '-d', str(path), '-no-cache', '-R', PATH_TOOLS_PMD_RULES_SET, '-language', 'java', - '-version', java_version.value, + '-version', cls._get_java_version(language_version), '-f', 'csv', '-r', str(output_path), '-t', str(n_cpu), ] @@ -46,7 +48,10 @@ def inspect(self, path: Path, config: dict) -> List[BaseIssue]: language_version = config.get('language_version') if language_version is None: - language_version = LanguageVersion.JAVA_11 + logger.info( + f"The version of Java is not passed. The version to be used is: {DEFAULT_JAVA_VERSION.value}.", + ) + language_version = DEFAULT_JAVA_VERSION command = self._create_command(path, output_path, language_version, config['n_cpu']) run_in_subprocess(command) @@ -65,7 +70,7 @@ def parse_output(self, output_path: Path) -> List[BaseIssue]: line_no=int(row['Line']), column_no=1, type=self.choose_issue_type(row['Rule']), - origin_class=row['Rule set'], + origin_class=row['Rule'], description=row['Description'], inspector_type=self.inspector_type, ) for row in reader] @@ -79,3 +84,20 @@ def choose_issue_type(cls, rule: str) -> IssueType: return IssueType.BEST_PRACTICES return issue_type + + @staticmethod + def _get_java_version(language_version: LanguageVersion) -> str: + """ + Converts language_version to the version of Java that PMD can work with. + + For example, java11 will be converted to 11. + """ + java_version = language_version.value + + if not language_version.is_java(): + logger.warning( + f"The version passed is not the Java version. The version to be used is: {DEFAULT_JAVA_VERSION.value}.", + ) + java_version = DEFAULT_JAVA_VERSION.value + + return remove_prefix(java_version, "java") diff --git a/test/python/inspectors/test_pmd_inspector.py b/test/python/inspectors/test_pmd_inspector.py index 393a2d46..71ae077e 100644 --- a/test/python/inspectors/test_pmd_inspector.py +++ b/test/python/inspectors/test_pmd_inspector.py @@ -8,11 +8,11 @@ FILE_NAMES_AND_N_ISSUES = [ ('test_algorithm_with_scanner.java', 0), ('test_simple_valid_program.java', 0), - ('test_boolean_expr.java', 1), + ('test_boolean_expr.java', 2), ('test_class_with_booleans.java', 3), ('test_closing_streams.java', 1), ('test_code_with_comments.java', 0), - ('test_comparing_strings.java', 3), + ('test_comparing_strings.java', 4), ('test_constants.java', 4), ('test_covariant_equals.java', 1), ('test_curly_braces.java', 2), @@ -29,7 +29,7 @@ ('test_thread_run.java', 1), ('test_unused_imports.java', 4), ('test_valid_algorithm_1.java', 0), - ('test_valid_curly_braces.java', 0), + ('test_valid_curly_braces.java', 1), ('test_when_only_equals_overridden.java', 1), ('test_valid_spaces.java', 0), ] diff --git a/test/resources/evaluation/xlsx_target_files/target_sorted_order.xlsx b/test/resources/evaluation/xlsx_target_files/target_sorted_order.xlsx index a6ad5df7..1b9ed1dc 100644 Binary files a/test/resources/evaluation/xlsx_target_files/target_sorted_order.xlsx and b/test/resources/evaluation/xlsx_target_files/target_sorted_order.xlsx differ diff --git a/test/resources/evaluation/xlsx_target_files/target_unsorted_order.xlsx b/test/resources/evaluation/xlsx_target_files/target_unsorted_order.xlsx index 1e96d109..0fe8ca6f 100644 Binary files a/test/resources/evaluation/xlsx_target_files/target_unsorted_order.xlsx and b/test/resources/evaluation/xlsx_target_files/target_unsorted_order.xlsx differ diff --git a/whitelist.txt b/whitelist.txt index 464ba1cd..92f5e9ce 100644 --- a/whitelist.txt +++ b/whitelist.txt @@ -160,3 +160,19 @@ ndarray Runtime matcher pathlib +instantiation +initializer +formatter +unsynchronized +unit4 +unit5 +ncss +hashtable +varargs +println +dataflow +dont +stmts +cloneable +slf4j +removeprefix