From 62bc8f301771fcd67301e900a14f13f350539a1e Mon Sep 17 00:00:00 2001 From: Simon Stewart Date: Mon, 4 Nov 2024 18:31:29 +0000 Subject: [PATCH] Bump pmd to 7.7.0 (#309) This required reworking the default ruleset we use for PMD, since they've re-arranged everything in the 6 to 7 version jump. --- MODULE.bazel | 2 +- README.md | 2 +- contrib_rules_jvm_deps_install.json | 2125 +++++++++++++---- java/pmd-ruleset.xml | 54 +- java/private/contrib_rules_jvm_deps.zip | Bin 255951 -> 357606 bytes java/private/pmd.bzl | 2 + java/private/pmd_ruleset.bzl | 2 +- .../generators/ClasspathParserTest.java | 7 +- .../junit5/HangingThreadTest.java | 1 + .../contrib_rules_jvm/junit5/SafeXmlTest.java | 28 +- .../TestRunningSecurityManagerTest.java | 2 +- 11 files changed, 1744 insertions(+), 481 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 7676a732..7a3f31b5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -163,7 +163,7 @@ maven.install( "com.puppycrawl.tools:checkstyle:10.20.0", # PMD deps - "net.sourceforge.pmd:pmd-dist:6.46.0", + "net.sourceforge.pmd:pmd-dist:7.7.0", # Spotbugs deps "org.slf4j:slf4j-api:1.7.32", diff --git a/README.md b/README.md index 388ec7f3..30fb1464 100644 --- a/README.md +++ b/README.md @@ -482,7 +482,7 @@ pmd_binary( | Name | Description | Default Value | | :------------- | :------------- | :------------- | | name | The name of the target | none | -| main_class | The main class to use for PMD. | `"net.sourceforge.pmd.PMD"` | +| main_class | The main class to use for PMD. | `"net.sourceforge.pmd.cli.PmdCli"` | | deps | The deps required for compiling this binary. May be omitted. | `None` | | runtime_deps | The deps required by PMD at runtime. May be omitted. | `None` | | srcs | If you're compiling your own PMD binary, the sources to use. | `None` | diff --git a/contrib_rules_jvm_deps_install.json b/contrib_rules_jvm_deps_install.json index c11fd661..959ddcb1 100755 --- a/contrib_rules_jvm_deps_install.json +++ b/contrib_rules_jvm_deps_install.json @@ -1,28 +1,49 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": -1045382214, - "__RESOLVED_ARTIFACTS_HASH": -1611055006, + "__INPUT_ARTIFACTS_HASH": 1807985906, + "__RESOLVED_ARTIFACTS_HASH": 2091084267, "conflict_resolution": { + "com.google.code.gson:gson:2.9.0": "com.google.code.gson:gson:2.11.0", "com.google.errorprone:error_prone_annotations:2.11.0": "com.google.errorprone:error_prone_annotations:2.28.0", "com.google.guava:failureaccess:1.0.1": "com.google.guava:failureaccess:1.0.2", "com.google.guava:guava:30.1.1-jre": "com.google.guava:guava:33.3.1-jre", "com.google.guava:guava:31.0.1-android": "com.google.guava:guava:33.3.1-jre", "com.google.j2objc:j2objc-annotations:1.3": "com.google.j2objc:j2objc-annotations:3.0.0", - "junit:junit:4.12": "junit:junit:4.13.2" + "junit:junit:4.12": "junit:junit:4.13.2", + "org.slf4j:slf4j-api:1.7.32": "org.slf4j:slf4j-api:1.7.36", + "org.slf4j:slf4j-simple:1.7.32": "org.slf4j:slf4j-simple:1.7.36" }, "artifacts": { - "com.beust:jcommander": { - "shasums": { - "jar": "a7313fcfde070930e40ec79edf3c5948cf34e4f0d25cb3a09f9963d8bdd84113" - }, - "version": "1.48" - }, "com.fasterxml.jackson.core:jackson-core": { "shasums": { "jar": "78cd0a6b936232e06dd3e38da8a0345348a09cd1ff9c4d844c6ee72c75cfc402" }, "version": "2.11.3" }, + "com.github.nawforce:scala-json-rpc-upickle-json-serializer_2.13": { + "shasums": { + "jar": "4ce9d100d26080a7b8813b6c3c6bc568c7c33b500b2b42120862c3f9fda926ff" + }, + "version": "1.1.0" + }, + "com.github.nawforce:scala-json-rpc_2.13": { + "shasums": { + "jar": "0fcac451d102a687a1be2d8cb3ad4854a0beb9a26398f01db03d95f9851fa3e1" + }, + "version": "1.1.0" + }, + "com.github.oowekyala.ooxml:nice-xml-messages": { + "shasums": { + "jar": "0b4ceb5b8362d43c9c6c49b1bd57f1c5da54d3c5c7c305fa39c0a04462bb4799" + }, + "version": "3.1" + }, + "com.github.pathikrit:better-files_2.13": { + "shasums": { + "jar": "ba44cdde78320ea3800a8e99b5b3d0f3fc3bab0a9e9962c653b016d06e396022" + }, + "version": "3.9.2" + }, "com.github.spotbugs:spotbugs": { "shasums": { "jar": "94c44d86c83b8fe63b20023e510874aef721b1081982051706e1da841572f295" @@ -79,9 +100,9 @@ }, "com.google.code.gson:gson": { "shasums": { - "jar": "c96d60551331a196dac54b745aa642cd078ef89b6f267146b705f2c2cbef052d" + "jar": "57928d6e5a6edeb2abd3770a8f95ba44dce45f3b23b7a9dc2b309c581552a78b" }, - "version": "2.9.0" + "version": "2.11.0" }, "com.google.errorprone:error_prone_annotations": { "shasums": { @@ -89,6 +110,18 @@ }, "version": "2.28.0" }, + "com.google.flogger:flogger": { + "shasums": { + "jar": "bebe7cd82be6c8d5208d6e960cd4344ea10672132ef06f5d4c71a48ab442b963" + }, + "version": "0.8" + }, + "com.google.flogger:flogger-system-backend": { + "shasums": { + "jar": "eb4428e483c5332381778d78c6a19da63b4fef3fa7e40f62dadabea0d7600cb4" + }, + "version": "0.8" + }, "com.google.googlejavaformat:google-java-format": { "shasums": { "jar": "4f546cfe159547ac3b9547daa9649e728f6abc254979c975f1cb9971793692c3" @@ -149,6 +182,12 @@ }, "version": "1.6" }, + "com.google.summit:summit-ast": { + "shasums": { + "jar": "f8c489d1fcbfb45fdf0291f9acb1e3cec194209234a55048511ee4f54a607a49" + }, + "version": "2.3.0" + }, "com.google.truth:truth": { "shasums": { "jar": "1ccf4334e7a94cf00a20a619b5462b53acf3274e00b70498bf5b28a3bc1be9b1" @@ -161,6 +200,54 @@ }, "version": "1.3.0" }, + "com.lihaoyi:geny_2.13": { + "shasums": { + "jar": "26017fa73ec7fa3cd2d44a4f5d3462c58cd6ddebf7d42d40123768edf7dee43c" + }, + "version": "0.6.2" + }, + "com.lihaoyi:mainargs_2.13": { + "shasums": { + "jar": "f22a85b990fc68747b8caa51394a308c2778e9b230d69a3cdd79bb8bd7d1b562" + }, + "version": "0.5.4" + }, + "com.lihaoyi:sourcecode_2.13": { + "shasums": { + "jar": "0e663be9a6c81e9515bdd07c04831397e38ea648a211e85ad005300fe840a03d" + }, + "version": "0.3.1" + }, + "com.lihaoyi:ujson_2.13": { + "shasums": { + "jar": "68474183a6ff657f97a91488e294cbe977b2a439fec216d5167700c72471f358" + }, + "version": "1.2.0" + }, + "com.lihaoyi:upack_2.13": { + "shasums": { + "jar": "1ed89d975c11ca0c87398f57e29ace72ff00835ba87b504a83c4190d17416c26" + }, + "version": "1.2.0" + }, + "com.lihaoyi:upickle-core_2.13": { + "shasums": { + "jar": "503d9d2687053a401f974e902ed095e7534f11f9b06448e03543f72c02f4e6bd" + }, + "version": "1.2.0" + }, + "com.lihaoyi:upickle-implicits_2.13": { + "shasums": { + "jar": "31d16e260f6eae6c4172f430f2c0711f669cd9dff576aadd1370b8bc5472f8d4" + }, + "version": "1.2.0" + }, + "com.lihaoyi:upickle_2.13": { + "shasums": { + "jar": "eba8ec18d8284cfcb10395842c254280b46f97ea2aca7f48b2b3db20205bae6f" + }, + "version": "1.2.0" + }, "com.puppycrawl.tools:checkstyle": { "shasums": { "jar": "20ace49b1c1a3b9df50cc845e5edcff79c01b3eb251cae922571e76afec042c6" @@ -179,6 +266,18 @@ }, "version": "1.17.5" }, + "com.thesamet.scalapb:lenses_2.13": { + "shasums": { + "jar": "cf85c64803b72d2663b352301d292220ecdb86755897eb57054cd734bc3a35e3" + }, + "version": "0.11.15" + }, + "com.thesamet.scalapb:scalapb-runtime_2.13": { + "shasums": { + "jar": "7a5e7b4c6945d76bb05eb05905fe99b1fc6b58db3cc632d81ea7fb3879efbb77" + }, + "version": "0.11.15" + }, "commons-beanutils:commons-beanutils": { "shasums": { "jar": "7d938c81789028045c08c065e94be75fc280527620d5bd62b519d5838532368a" @@ -215,6 +314,48 @@ }, "version": "4.7.6" }, + "io.github.apex-dev-tools:apex-ls_2.13": { + "shasums": { + "jar": "091fa02fd19a159a757129e3278c1b1fee9c587a9e70aa97c28830aa502cfbde" + }, + "version": "5.2.0" + }, + "io.github.apex-dev-tools:apex-parser": { + "shasums": { + "jar": "329270981e99e42ffee60369d6363614bb015fb611da4cdd9657978d217bc26e" + }, + "version": "4.3.0" + }, + "io.github.apex-dev-tools:apex-types_2.13": { + "shasums": { + "jar": "9d5bbd48a29abfc704d026382f7c9bb08c8bf0b114efcd065a31fb222f84a90f" + }, + "version": "1.3.0" + }, + "io.github.apex-dev-tools:outline-parser_2.13": { + "shasums": { + "jar": "e86854d0aed6b509134fd356ad7d28d7c181f0216e053384b80b662741176313" + }, + "version": "1.3.0" + }, + "io.github.apex-dev-tools:sobject-types": { + "shasums": { + "jar": "970ae1d4937e1395d85d6cb134cda5b0bab36a62175beca28cd4386fe8b7570c" + }, + "version": "60.0.1" + }, + "io.github.apex-dev-tools:standard-types": { + "shasums": { + "jar": "488401133a155b9b9eb9c380a9d7b29a04ad63fd60f84378c398c76d3e8a33fa" + }, + "version": "60.0.1" + }, + "io.github.apex-dev-tools:vf-parser": { + "shasums": { + "jar": "9515efe1c7f81c205d01f508c82f432a72735d132fc6bb5a1ebd954d9f881457" + }, + "version": "1.1.0" + }, "io.grpc:grpc-api": { "shasums": { "jar": "e8996c17a0ff6665c3463f6800259a3755aa3d4863c5d51737b93b11e818a0bd" @@ -263,6 +404,18 @@ }, "version": "1.40.0" }, + "io.methvin:directory-watcher": { + "shasums": { + "jar": "18f67869b0d31d39512623226220abeedd6bde486d5599e6256eab7975110754" + }, + "version": "0.18.0" + }, + "io.methvin:directory-watcher-better-files_2.13": { + "shasums": { + "jar": "839d3d970babacb606bb2f2e8461c2d7c40f6e36920753c41bf9561ba638d128" + }, + "version": "0.18.0" + }, "io.netty:netty-buffer": { "shasums": { "jar": "4e3abdf4ddb8810f5fb4a2b57c9144407873b359faa1894007673ed1465dd3e8" @@ -382,6 +535,12 @@ }, "version": "0.25.0" }, + "javax.annotation:jsr250-api": { + "shasums": { + "jar": "a1a922d0d9b6d183ed3800dfac01d1e1eb159f0e8c6f94736931c1def54a941f" + }, + "version": "1.0" + }, "jaxen:jaxen": { "shasums": { "jar": "70feef9dd75ad064def05a3ce8975aeba515ee7d1be146d12199c8828a64174c" @@ -394,6 +553,18 @@ }, "version": "4.13.2" }, + "me.tongfei:progressbar": { + "shasums": { + "jar": "a1a086fa66f85c49bb3ca701a78cebb33647f367d4a5be8588c784d56272cc6e" + }, + "version": "0.9.5" + }, + "net.java.dev.jna:jna": { + "shasums": { + "jar": "91a814ac4f40d60dee91d842e1a8ad874c62197984403d0e3c30d39e55cf53b3" + }, + "version": "5.12.1" + }, "net.jcip:jcip-annotations": { "shasums": { "jar": "be5805392060c71474bf6c9a67a099471274d30b83eef84bfc4e0889a4f1dcc0" @@ -406,150 +577,221 @@ }, "version": "12.5" }, + "net.sourceforge.pmd:pmd-ant": { + "shasums": { + "jar": "cd05dafecbcecca5bcb7946fa3c52d2c59b4ba1e273e6e6f45b522694b9381bd" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-apex": { + "shasums": { + "jar": "57fe6e13b89dfb3bea34411139e9e6f188a549f15543060747dbeceafe72354a" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-cli": { + "shasums": { + "jar": "ba61729debeb6bbb7f8168230f8fdaf9c3315286a88e4fc0e19022823197a0e8" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-coco": { + "shasums": { + "jar": "0106d7fb98d5f1cbdfe8162575baced8777b1c2e6f038d45c680ac095fd011cb" + }, + "version": "7.7.0" + }, "net.sourceforge.pmd:pmd-core": { "shasums": { - "jar": "2b360928d33b5c96be7c1fe45d77366c1ae25d9305a331a78e937ef437caed0e" + "jar": "154a77eb6f32b00270c65f9796318252b0f25e5f394b1935b456fb8dc0de3563" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-cpp": { "shasums": { - "jar": "ca9706589b5ae645c8ddba804e0d216283bfc34618f9317b967edbef7e71787e" + "jar": "7b61fcaf5f8ee9d66805880d528918e9dfba8c16225054bda9a0bc79fc5a1f3e" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-cs": { "shasums": { - "jar": "5038975c0e26cf53d227eea17627ded5e6f4db9fea96a4725241ab63eff63f91" + "jar": "9e39796ae011ad3ac3c981e9889d315ec5ded085ba0fa50ce4b85177f1a2a7f0" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-dart": { "shasums": { - "jar": "7380dd063ada4677ff3aad3b2d063f6f64fbfed4752643b46bb335c82b616378" + "jar": "09ae3531d07c55bbaea37477f83a47636b27cdeb3cea1aba50e58d9c75cec601" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-designer": { + "shasums": { + "jar": "d7bdecaf6ea499ed0bf2767d638657b36f286f20ac2cc3bc498c25a8a71f1c85" }, - "version": "6.46.0" + "version": "7.2.0" }, "net.sourceforge.pmd:pmd-dist": { "shasums": { - "jar": "38d0485b171e3f520d74091847ee571de55e4485d9c89f42a1e6b9688a2a7fbd" + "jar": "ab31c56321ceec536a8e0591a59645b33f486f3b2cdde7afa914c1261d3b2b23" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-fortran": { "shasums": { - "jar": "242a88b2a67d2984fd98fd08c600dda7164900c720d2134a1ff4a08f173a4929" + "jar": "cebbd0a9b825844639feabe29e9b3fbf4fc10688d86ad2700c63905730220bf4" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-gherkin": { + "shasums": { + "jar": "18629e5a3ef54b579dc7fab1767e0e2784910dd9f28cc461a32c58bce69c0fea" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-go": { "shasums": { - "jar": "057fdc250d0859a6e4feb38006b556cebabb50c88d05fd523c753706c2a60b8a" + "jar": "933262390a5293dc2ec30df78106c33f6a68b24f2f5aa67991f8fd2df9f52e8a" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-groovy": { "shasums": { - "jar": "a776ef8b5005089cead9c214495c25423a7aae1aec845378b51883e33d3f3858" + "jar": "82efcb0689c6876d6e2a5c3a42c27335e6901482f093ef2516c8e6b48eefb6e8" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-html": { + "shasums": { + "jar": "c4b51bba99f206a308bb39a2f12331413296317b35c91dcfcb6c605cefdc510a" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-java": { "shasums": { - "jar": "47c62abfcdd441cb999ca991d309045ad5e958eb6f45c67119cdc2e808655d21" + "jar": "95160f77a5ec3da2a3b5f4fe8968d0bfed8155c4ab583e530c49b7c9944eb968" }, - "version": "6.46.0" + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-javascript": { + "shasums": { + "jar": "c93ba2e7943967e6ce541e6c07eca9db819dd242c99cf2ad8ce2a757af001a06" + }, + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-jsp": { "shasums": { - "jar": "3006a8db0b391590d6e2cd68b7212a25722d3b0bfa4d5c216ebcee53df7d6193" + "jar": "e5d06fb8b46874a2ca14a21244d36f848edb4a85b3a1ed9010dd9367ae74aa96" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-julia": { + "shasums": { + "jar": "ee349032557dd1c8aafbac8d90b9a1b6d4b924bbb8520bebe5c92cfe4101d62f" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-kotlin": { "shasums": { - "jar": "a91a8fb9ef368353f0f23edfeb740eb11b5ab66b9361eef28afaf3095f188b3d" + "jar": "b2564f643d1f1349f3b052a8fd062fb26a8d49f3a0a6c7750da084eb60d1fd01" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-languages-deps:pom": { + "shasums": { + "jar": "c2baf0a9a1fcc9f82b95c95692d8a75d9c147500cfee0c2d96e965b982d66bde" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-lua": { "shasums": { - "jar": "91a04d323eeb10ea57fed7a9fc9605513623e11932dea6d3b00646c79fcecc55" + "jar": "318f66b1f5e20caad10ce416bca3c2739d5a68c107fa1a507bd5bba4f0bb886b" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-matlab": { "shasums": { - "jar": "b03fd6d124b349e5c88261534995b584575410186a90b05cb783c184d2c6b12b" + "jar": "6c201adb0c1149483094e752265ec96fa0a57342307e68efe263f5f157cb3860" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-modelica": { "shasums": { - "jar": "7a52346f911a7bad4b8b6af5b69b1f8a09e0118940c8670644f4eefc7878967c" + "jar": "6ee11e8bccad56aa0788363fdb77a2615206c4f327ee591221a8ad549e506b1b" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-objectivec": { "shasums": { - "jar": "2f6ab12b615f98517a9917b9540c98fc3e720929a1789c333d4a02a5ebbe87b4" + "jar": "48d86fc578ee92cccf76cac0c89364e2a4cd03d4ff1f34c74967597004bef6da" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-perl": { "shasums": { - "jar": "989ed3bf54d41ea901c8c0eabbb8280856d55a278ffdd087de966ea46b60004d" + "jar": "67dac2b726f4fe5f309fd2ab31e82e86417f5ad315af2cf99816ebdef7d47260" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-php": { "shasums": { - "jar": "5bf518994be87e1dc20982953f986c5d5cde24220adcd333bab9d321e95f5be5" + "jar": "679ad2736ffb0067aa17a8c48ff30272606639e22982777a9cb9d59b56affe1a" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-plsql": { "shasums": { - "jar": "e26abffe4c38b9e53b9402c70cd57b6f5fcae382af9e02e33b75497b17f42ccd" + "jar": "1176e9c9d32df1cac70baa1a677fc164466037e98cf9fb175e671d0d84f40130" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-python": { "shasums": { - "jar": "77530045c1a2df457d95466d448bfaef5a8e16d69474741647b26ddb1f858e65" + "jar": "266ad9374196ab188ed6e4488a0eab7f4d4c2c6ba5f4d5fc758ce8bdb2ab05aa" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-ruby": { "shasums": { - "jar": "5d6788300d245bcf2412d55da6ee170f6459b9f89acded4565dfb64303fb264e" + "jar": "9be3cdf1cb6365dbf43e5282ae25e0b523ebbefadd94a68b6106d4a7318f880b" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-scala_2.13": { + "shasums": { + "jar": "0d14fd5efc914fbf1be59b643cd2c668662d24087090b05821f65400affb63ef" }, - "version": "6.46.0" + "version": "7.7.0" }, "net.sourceforge.pmd:pmd-swift": { "shasums": { - "jar": "2ed558ea9b07b03f4e416e8e10402bcd441ef126315645b4019abccf01f369f6" + "jar": "662d3fbd5a3cefc1bd2e272475914a17da7f4e6663d8d3a5da012014d28d35fb" }, - "version": "6.46.0" + "version": "7.7.0" }, - "net.sourceforge.pmd:pmd-vm": { + "net.sourceforge.pmd:pmd-tsql": { "shasums": { - "jar": "ff59f120ebb7302d3a1489da8259adead91e4c8a8a51afd78e10bffc3de8a6b6" + "jar": "c8515721ae6263006cdd7e87bf7033b0fbc51a48794cb8f17f3d1a702426115e" }, - "version": "6.46.0" + "version": "7.7.0" }, - "net.sourceforge.pmd:pmd-xml": { + "net.sourceforge.pmd:pmd-velocity": { + "shasums": { + "jar": "69e3f8b9d1dbff1c3c9e4db2236fd84cf94fc3b3fd514cb3b151061990c61862" + }, + "version": "7.7.0" + }, + "net.sourceforge.pmd:pmd-visualforce": { "shasums": { - "jar": "3efe446efc6d1d112420d611fc8a92d0414bc62377bb6d96dc3ae9a7a8dbff77" + "jar": "fed550e03961ad29486c01e8ce0d1f08ed7272007da986aef3df148b4630180a" }, - "version": "6.46.0" + "version": "7.7.0" }, - "net.sourceforge.saxon:saxon": { + "net.sourceforge.pmd:pmd-xml": { "shasums": { - "dom": "c6cf3ecc7f4b65ab8b613d00fd9e9c0648a5aa03264a941ba0fd2da5339f917a", - "jar": "f3dcde81066c75db4ffca341d543555dbbbba7fff7ba6d1c2e7de1101dea394a" + "jar": "5635cdccad59e08a8018aa68005ec253934b8a769cab5dbced16587d11b7dbef" }, - "version": "9.1.0.8" + "version": "7.7.0" }, "org.antlr:antlr4-runtime": { "shasums": { @@ -565,9 +807,9 @@ }, "org.apache.commons:commons-lang3": { "shasums": { - "jar": "d919d904486c037f8d193412da0c92e22a9fa24230b9d67a57855c5c31c7e94e" + "jar": "7b96bf3ee68949abb5bc465559ac270e0551596fa34523fddf890ec418dde13c" }, - "version": "3.12.0" + "version": "3.14.0" }, "org.apache.commons:commons-text": { "shasums": { @@ -575,6 +817,12 @@ }, "version": "1.9" }, + "org.apache.groovy:groovy": { + "shasums": { + "jar": "96c650051f44cb6cdaff9d389d06eb881966d1c13d0067f69b39022cda926112" + }, + "version": "4.0.19" + }, "org.apache.httpcomponents.client5:httpclient5": { "shasums": { "jar": "28c759254f4e35319e078bb6ffea75676608dc12cb243b24fb3c8732522977fe" @@ -659,12 +907,6 @@ }, "version": "3.48.1" }, - "org.codehaus.groovy:groovy": { - "shasums": { - "jar": "cc637a03e8ffddd487177bed948f162200a08f4847089091e06d70c2a1480fee" - }, - "version": "2.4.21" - }, "org.codehaus.mojo:animal-sniffer-annotations": { "shasums": { "jar": "2f25841c937e24959a57b630e2c4b8525b3d0f536f2e511c9b2bed30b1651d54" @@ -695,6 +937,12 @@ }, "version": "3.3.0" }, + "org.danilopianini:gson-extras": { + "shasums": { + "jar": "a8bec65d0eb9d5fcda6410eea9993104f8c0852f8024972d8662b4dac8258c1d" + }, + "version": "1.3.0" + }, "org.dom4j:dom4j": { "shasums": { "jar": "549f3007c6290f6a901e57d1d331b4ed0e6bf7384f78bf10316ffceeca834de6" @@ -713,6 +961,42 @@ }, "version": "3.28.0-GA" }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "shasums": { + "jar": "858b902696da9cf585ab9d98ffc1c2712269828354dfe9107e3711b084a36468" + }, + "version": "1.9.24" + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk7": { + "shasums": { + "jar": "b6699b850ba0789f2e904279cd8bdc7bea9130ffd157cdba001fc7425d8a47b7" + }, + "version": "1.9.24" + }, + "org.jetbrains.kotlin:kotlin-stdlib-jdk8": { + "shasums": { + "jar": "5b5bbfb3e1184b5e13317c3d42237fa24add443b2e7781961eea334db136adb1" + }, + "version": "1.9.24" + }, + "org.jetbrains:annotations": { + "shasums": { + "jar": "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" + }, + "version": "13.0" + }, + "org.jline:jline": { + "shasums": { + "jar": "1e7d63a2bd1c26354ca1987e55469ea4327c4a3845c10d7a7790ca9729c49c02" + }, + "version": "3.21.0" + }, + "org.jsoup:jsoup": { + "shasums": { + "jar": "f60b33b38e9d7ac93eaaa68a6c70f706bb99036494b2e2add2bfee11d09ac6f5" + }, + "version": "1.17.2" + }, "org.junit.jupiter:junit-jupiter-api": { "shasums": { "jar": "1808ee87e0f718cd6e25f3b75afc17956ac8a3edc48c7e9bab9f19f9a79e3801" @@ -755,6 +1039,12 @@ }, "version": "5.8.2" }, + "org.mozilla:rhino": { + "shasums": { + "jar": "2427fdcbc149ca0a25ccfbb7c71b01f39ad42708773a47816cd2342861766b63" + }, + "version": "1.7.15" + }, "org.opentest4j:opentest4j": { "shasums": { "jar": "58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2" @@ -763,9 +1053,9 @@ }, "org.ow2.asm:asm": { "shasums": { - "jar": "1263369b59e29c943918de11d6d6152e2ec6085ce63e5710516f8c67d368e4bc" + "jar": "adf46d5e34940bdf148ecdd26a9ee8eea94496a72034ff7141066b3eea5c4e9d" }, - "version": "9.3" + "version": "9.7" }, "org.ow2.asm:asm-analysis": { "shasums": { @@ -791,17 +1081,83 @@ }, "version": "9.3" }, + "org.pcollections:pcollections": { + "shasums": { + "jar": "2bbeef5797a241300c4f7513cd546239629ed7deda4fc0c31df90bb95f5f13ef" + }, + "version": "4.0.2" + }, "org.reflections:reflections": { "shasums": { "jar": "938a2d08fe54050d7610b944d8ddc3a09355710d9e6be0aac838dbc04e9a2825" }, "version": "0.10.2" }, + "org.scala-js:scalajs-stubs_2.13": { + "shasums": { + "jar": "60a58e75030081111da2e96e70140e6e370f2d1db7a353fe065b62eb757f82e3" + }, + "version": "1.0.0" + }, + "org.scala-lang.modules:scala-collection-compat_2.13": { + "shasums": { + "jar": "0c1108883b7b97851750e8932f9584346ccb23f1260c197f97295ac2e6c56cec" + }, + "version": "2.11.0" + }, + "org.scala-lang.modules:scala-parallel-collections_2.13": { + "shasums": { + "jar": "fc08be49e91db44d7fe5c1ff95a322ad4500805a525cc2c4b1b91693f041c8e4" + }, + "version": "1.0.0" + }, + "org.scala-lang.modules:scala-xml_2.13": { + "shasums": { + "jar": "6d96d45a7fc6fc7ab69bdbac841b48cf67ab109f048c8db375ae4effae524f39" + }, + "version": "1.3.0" + }, + "org.scala-lang:scala-library": { + "shasums": { + "jar": "b58b223f9b59f88d04c9dc9ec26f4b463e93e6f296de5663dbd710a7dfce2743" + }, + "version": "2.13.13" + }, + "org.scala-lang:scala-reflect": { + "shasums": { + "jar": "62bd7a7198193c5373a992c122990279e413af3307162472a5d3cbb8ecadb35e" + }, + "version": "2.13.10" + }, + "org.scalameta:common_2.13": { + "shasums": { + "jar": "223c3dc10561ffe4522bb29b2d5e93d2c3d12bbc81d896b6400a31a292e40ab3" + }, + "version": "4.9.1" + }, + "org.scalameta:parsers_2.13": { + "shasums": { + "jar": "9240ab9c384572e1aa9cecef91b5a1276498a63b1d0794db7da72615aa0b44de" + }, + "version": "4.9.1" + }, + "org.scalameta:trees_2.13": { + "shasums": { + "jar": "d3a86bd56296d39fdf915c5f07629f60261852bd8127e11bef800e3b0c9d3e9e" + }, + "version": "4.9.1" + }, + "org.slf4j:jul-to-slf4j": { + "shasums": { + "jar": "9e641fb142c5f0b0623d6222c09ea87523a41bf6bed48ac79940724010b989de" + }, + "version": "1.7.36" + }, "org.slf4j:slf4j-api": { "shasums": { - "jar": "3624f8474c1af46d75f98bc097d7864a323c81b3808aa43689a6e1c601c027be" + "jar": "d3ef575e3e4979678dc01bf1dcce51021493b4d11fb7f1be8ad982877c16a1c0" }, - "version": "1.7.32" + "version": "1.7.36" }, "org.slf4j:slf4j-jdk14": { "shasums": { @@ -811,9 +1167,9 @@ }, "org.slf4j:slf4j-simple": { "shasums": { - "jar": "d2fdd7b73ca2019a2062d145a0d86179a58f98c8c3e35ca7c735a27b3b5621c3" + "jar": "2f39bed943d624dfa8f4102d0571283a10870b6aa36f197a8a506f147010c10f" }, - "version": "1.7.32" + "version": "1.7.36" }, "org.xmlresolver:xmlresolver": { "shasums": { @@ -824,6 +1180,20 @@ } }, "dependencies": { + "com.github.nawforce:scala-json-rpc-upickle-json-serializer_2.13": [ + "com.github.nawforce:scala-json-rpc_2.13", + "com.lihaoyi:upickle_2.13", + "org.scala-lang:scala-library", + "org.scala-lang:scala-reflect" + ], + "com.github.nawforce:scala-json-rpc_2.13": [ + "com.lihaoyi:upickle_2.13", + "org.scala-lang:scala-library", + "org.scala-lang:scala-reflect" + ], + "com.github.pathikrit:better-files_2.13": [ + "org.scala-lang:scala-library" + ], "com.github.spotbugs:spotbugs": [ "com.github.spotbugs:spotbugs-annotations", "com.google.code.gson:gson", @@ -854,6 +1224,16 @@ "com.google.http-client:google-http-client", "com.google.http-client:google-http-client-jackson2" ], + "com.google.code.gson:gson": [ + "com.google.errorprone:error_prone_annotations" + ], + "com.google.flogger:flogger": [ + "org.checkerframework:checker-compat-qual" + ], + "com.google.flogger:flogger-system-backend": [ + "com.google.flogger:flogger", + "org.checkerframework:checker-compat-qual" + ], "com.google.googlejavaformat:google-java-format": [ "com.google.guava:guava" ], @@ -884,6 +1264,24 @@ "com.google.guava:guava", "com.google.protobuf:protobuf-java" ], + "com.google.summit:summit-ast": [ + "com.google.code.findbugs:jsr305", + "com.google.code.gson:gson", + "com.google.errorprone:error_prone_annotations", + "com.google.flogger:flogger", + "com.google.flogger:flogger-system-backend", + "com.google.guava:failureaccess", + "com.google.guava:guava", + "com.google.guava:listenablefuture", + "com.google.j2objc:j2objc-annotations", + "io.github.apex-dev-tools:apex-parser", + "javax.annotation:jsr250-api", + "org.antlr:antlr4-runtime", + "org.apache.commons:commons-lang3", + "org.checkerframework:checker-compat-qual", + "org.checkerframework:checker-qual", + "org.danilopianini:gson-extras" + ], "com.google.truth:truth": [ "com.google.auto.value:auto-value-annotations", "com.google.errorprone:error_prone_annotations", @@ -892,6 +1290,31 @@ "junit:junit", "org.checkerframework:checker-compat-qual" ], + "com.lihaoyi:mainargs_2.13": [ + "org.scala-lang.modules:scala-collection-compat_2.13", + "org.scala-lang:scala-library" + ], + "com.lihaoyi:sourcecode_2.13": [ + "org.scala-lang:scala-library" + ], + "com.lihaoyi:ujson_2.13": [ + "com.lihaoyi:upickle-core_2.13" + ], + "com.lihaoyi:upack_2.13": [ + "com.lihaoyi:upickle-core_2.13" + ], + "com.lihaoyi:upickle-core_2.13": [ + "com.lihaoyi:geny_2.13", + "org.scala-lang.modules:scala-collection-compat_2.13" + ], + "com.lihaoyi:upickle-implicits_2.13": [ + "com.lihaoyi:upickle-core_2.13" + ], + "com.lihaoyi:upickle_2.13": [ + "com.lihaoyi:ujson_2.13", + "com.lihaoyi:upack_2.13", + "com.lihaoyi:upickle-implicits_2.13" + ], "com.puppycrawl.tools:checkstyle": [ "com.google.guava:guava", "commons-beanutils:commons-beanutils", @@ -906,10 +1329,52 @@ "com.squareup.okhttp:okhttp": [ "com.squareup.okio:okio" ], + "com.thesamet.scalapb:lenses_2.13": [ + "org.scala-lang.modules:scala-collection-compat_2.13", + "org.scala-lang:scala-library" + ], + "com.thesamet.scalapb:scalapb-runtime_2.13": [ + "com.google.protobuf:protobuf-java", + "com.thesamet.scalapb:lenses_2.13", + "org.scala-lang.modules:scala-collection-compat_2.13", + "org.scala-lang:scala-library" + ], "commons-beanutils:commons-beanutils": [ "commons-collections:commons-collections", "commons-logging:commons-logging" ], + "io.github.apex-dev-tools:apex-ls_2.13": [ + "com.github.nawforce:scala-json-rpc-upickle-json-serializer_2.13", + "com.github.nawforce:scala-json-rpc_2.13", + "com.lihaoyi:mainargs_2.13", + "com.lihaoyi:upickle_2.13", + "io.github.apex-dev-tools:apex-parser", + "io.github.apex-dev-tools:outline-parser_2.13", + "io.github.apex-dev-tools:sobject-types", + "io.github.apex-dev-tools:standard-types", + "io.github.apex-dev-tools:vf-parser", + "io.methvin:directory-watcher-better-files_2.13", + "org.scala-js:scalajs-stubs_2.13", + "org.scala-lang.modules:scala-parallel-collections_2.13", + "org.scala-lang.modules:scala-xml_2.13", + "org.scala-lang:scala-library" + ], + "io.github.apex-dev-tools:apex-parser": [ + "org.antlr:antlr4-runtime" + ], + "io.github.apex-dev-tools:apex-types_2.13": [ + "org.scala-lang:scala-library" + ], + "io.github.apex-dev-tools:outline-parser_2.13": [ + "io.github.apex-dev-tools:apex-types_2.13", + "org.scala-lang:scala-library" + ], + "io.github.apex-dev-tools:sobject-types": [ + "io.github.apex-dev-tools:standard-types" + ], + "io.github.apex-dev-tools:vf-parser": [ + "org.antlr:antlr4-runtime" + ], "io.grpc:grpc-api": [ "com.google.code.findbugs:jsr305", "com.google.errorprone:error_prone_annotations", @@ -958,6 +1423,15 @@ "com.google.guava:guava", "io.grpc:grpc-api" ], + "io.methvin:directory-watcher": [ + "net.java.dev.jna:jna", + "org.slf4j:slf4j-api" + ], + "io.methvin:directory-watcher-better-files_2.13": [ + "com.github.pathikrit:better-files_2.13", + "io.methvin:directory-watcher", + "org.scala-lang:scala-library" + ], "io.netty:netty-buffer": [ "io.netty:netty-common" ], @@ -1086,23 +1560,55 @@ "junit:junit": [ "org.hamcrest:hamcrest-core" ], + "me.tongfei:progressbar": [ + "org.jline:jline" + ], "net.sf.saxon:Saxon-HE": [ "org.xmlresolver:xmlresolver", "org.xmlresolver:xmlresolver:jar:data" ], - "net.sourceforge.pmd:pmd-core": [ - "com.beust:jcommander", - "com.google.code.gson:gson", - "net.sourceforge.saxon:saxon", - "net.sourceforge.saxon:saxon:jar:dom", - "org.antlr:antlr4-runtime", - "org.apache.commons:commons-lang3", - "org.ow2.asm:asm" - ], - "net.sourceforge.pmd:pmd-cpp": [ + "net.sourceforge.pmd:pmd-ant": [ "net.sourceforge.pmd:pmd-core" ], - "net.sourceforge.pmd:pmd-cs": [ + "net.sourceforge.pmd:pmd-apex": [ + "com.google.guava:guava", + "com.google.summit:summit-ast", + "io.github.apex-dev-tools:apex-ls_2.13", + "io.github.apex-dev-tools:apex-parser", + "net.sourceforge.pmd:pmd-core", + "org.apache.commons:commons-lang3", + "org.jetbrains.kotlin:kotlin-stdlib", + "org.jetbrains.kotlin:kotlin-stdlib-jdk8" + ], + "net.sourceforge.pmd:pmd-cli": [ + "info.picocli:picocli", + "me.tongfei:progressbar", + "net.sourceforge.pmd:pmd-core", + "net.sourceforge.pmd:pmd-designer", + "org.checkerframework:checker-qual", + "org.slf4j:slf4j-api", + "org.slf4j:slf4j-simple" + ], + "net.sourceforge.pmd:pmd-coco": [ + "net.sourceforge.pmd:pmd-core", + "org.antlr:antlr4-runtime" + ], + "net.sourceforge.pmd:pmd-core": [ + "com.github.oowekyala.ooxml:nice-xml-messages", + "com.google.code.gson:gson", + "net.sf.saxon:Saxon-HE", + "org.antlr:antlr4-runtime", + "org.apache.commons:commons-lang3", + "org.checkerframework:checker-qual", + "org.ow2.asm:asm", + "org.pcollections:pcollections", + "org.slf4j:jul-to-slf4j", + "org.slf4j:slf4j-api" + ], + "net.sourceforge.pmd:pmd-cpp": [ + "net.sourceforge.pmd:pmd-core" + ], + "net.sourceforge.pmd:pmd-cs": [ "net.sourceforge.pmd:pmd-core", "org.antlr:antlr4-runtime" ], @@ -1111,54 +1617,89 @@ "org.antlr:antlr4-runtime" ], "net.sourceforge.pmd:pmd-dist": [ + "net.sourceforge.pmd:pmd-ant", + "net.sourceforge.pmd:pmd-cli", "net.sourceforge.pmd:pmd-core", - "net.sourceforge.pmd:pmd-cpp", - "net.sourceforge.pmd:pmd-cs", - "net.sourceforge.pmd:pmd-dart", - "net.sourceforge.pmd:pmd-fortran", - "net.sourceforge.pmd:pmd-go", - "net.sourceforge.pmd:pmd-groovy", - "net.sourceforge.pmd:pmd-java", - "net.sourceforge.pmd:pmd-jsp", - "net.sourceforge.pmd:pmd-kotlin", - "net.sourceforge.pmd:pmd-lua", - "net.sourceforge.pmd:pmd-matlab", - "net.sourceforge.pmd:pmd-modelica", - "net.sourceforge.pmd:pmd-objectivec", - "net.sourceforge.pmd:pmd-perl", - "net.sourceforge.pmd:pmd-php", - "net.sourceforge.pmd:pmd-plsql", - "net.sourceforge.pmd:pmd-python", - "net.sourceforge.pmd:pmd-ruby", - "net.sourceforge.pmd:pmd-swift", - "net.sourceforge.pmd:pmd-vm", - "net.sourceforge.pmd:pmd-xml", - "org.apache.commons:commons-lang3" + "net.sourceforge.pmd:pmd-designer", + "net.sourceforge.pmd:pmd-languages-deps:pom", + "org.apache.commons:commons-lang3", + "org.slf4j:slf4j-simple" ], "net.sourceforge.pmd:pmd-fortran": [ "net.sourceforge.pmd:pmd-core" ], + "net.sourceforge.pmd:pmd-gherkin": [ + "net.sourceforge.pmd:pmd-core", + "org.antlr:antlr4-runtime" + ], "net.sourceforge.pmd:pmd-go": [ "net.sourceforge.pmd:pmd-core", "org.antlr:antlr4-runtime" ], "net.sourceforge.pmd:pmd-groovy": [ "net.sourceforge.pmd:pmd-core", - "org.codehaus.groovy:groovy" + "org.apache.groovy:groovy" + ], + "net.sourceforge.pmd:pmd-html": [ + "net.sourceforge.pmd:pmd-core", + "org.jsoup:jsoup" ], "net.sourceforge.pmd:pmd-java": [ + "net.sf.saxon:Saxon-HE", "net.sourceforge.pmd:pmd-core", - "net.sourceforge.saxon:saxon", "org.apache.commons:commons-lang3", - "org.ow2.asm:asm" + "org.checkerframework:checker-qual", + "org.ow2.asm:asm", + "org.pcollections:pcollections" + ], + "net.sourceforge.pmd:pmd-javascript": [ + "net.sourceforge.pmd:pmd-core", + "org.antlr:antlr4-runtime", + "org.mozilla:rhino" ], "net.sourceforge.pmd:pmd-jsp": [ "net.sourceforge.pmd:pmd-core" ], + "net.sourceforge.pmd:pmd-julia": [ + "net.sourceforge.pmd:pmd-core", + "org.antlr:antlr4-runtime" + ], "net.sourceforge.pmd:pmd-kotlin": [ "net.sourceforge.pmd:pmd-core", "org.antlr:antlr4-runtime" ], + "net.sourceforge.pmd:pmd-languages-deps:pom": [ + "net.sourceforge.pmd:pmd-apex", + "net.sourceforge.pmd:pmd-coco", + "net.sourceforge.pmd:pmd-cpp", + "net.sourceforge.pmd:pmd-cs", + "net.sourceforge.pmd:pmd-dart", + "net.sourceforge.pmd:pmd-fortran", + "net.sourceforge.pmd:pmd-gherkin", + "net.sourceforge.pmd:pmd-go", + "net.sourceforge.pmd:pmd-groovy", + "net.sourceforge.pmd:pmd-html", + "net.sourceforge.pmd:pmd-java", + "net.sourceforge.pmd:pmd-javascript", + "net.sourceforge.pmd:pmd-jsp", + "net.sourceforge.pmd:pmd-julia", + "net.sourceforge.pmd:pmd-kotlin", + "net.sourceforge.pmd:pmd-lua", + "net.sourceforge.pmd:pmd-matlab", + "net.sourceforge.pmd:pmd-modelica", + "net.sourceforge.pmd:pmd-objectivec", + "net.sourceforge.pmd:pmd-perl", + "net.sourceforge.pmd:pmd-php", + "net.sourceforge.pmd:pmd-plsql", + "net.sourceforge.pmd:pmd-python", + "net.sourceforge.pmd:pmd-ruby", + "net.sourceforge.pmd:pmd-scala_2.13", + "net.sourceforge.pmd:pmd-swift", + "net.sourceforge.pmd:pmd-tsql", + "net.sourceforge.pmd:pmd-velocity", + "net.sourceforge.pmd:pmd-visualforce", + "net.sourceforge.pmd:pmd-xml" + ], "net.sourceforge.pmd:pmd-lua": [ "net.sourceforge.pmd:pmd-core", "org.antlr:antlr4-runtime" @@ -1187,17 +1728,31 @@ "net.sourceforge.pmd:pmd-ruby": [ "net.sourceforge.pmd:pmd-core" ], + "net.sourceforge.pmd:pmd-scala_2.13": [ + "net.sourceforge.pmd:pmd-core", + "org.apache.commons:commons-lang3", + "org.scala-lang:scala-library", + "org.scalameta:parsers_2.13", + "org.scalameta:trees_2.13" + ], "net.sourceforge.pmd:pmd-swift": [ "net.sourceforge.pmd:pmd-core", "org.antlr:antlr4-runtime" ], - "net.sourceforge.pmd:pmd-vm": [ + "net.sourceforge.pmd:pmd-tsql": [ + "net.sourceforge.pmd:pmd-core", + "org.antlr:antlr4-runtime" + ], + "net.sourceforge.pmd:pmd-velocity": [ "net.sourceforge.pmd:pmd-core", "org.apache.commons:commons-lang3" ], + "net.sourceforge.pmd:pmd-visualforce": [ + "net.sourceforge.pmd:pmd-apex", + "net.sourceforge.pmd:pmd-core" + ], "net.sourceforge.pmd:pmd-xml": [ "net.sourceforge.pmd:pmd-core", - "net.sourceforge.saxon:saxon:jar:dom", "org.antlr:antlr4-runtime" ], "org.apache.commons:commons-text": [ @@ -1206,7 +1761,8 @@ "org.apache.httpcomponents.client5:httpclient5": [ "commons-codec:commons-codec", "org.apache.httpcomponents.core5:httpcore5", - "org.apache.httpcomponents.core5:httpcore5-h2" + "org.apache.httpcomponents.core5:httpcore5-h2", + "org.slf4j:slf4j-api" ], "org.apache.httpcomponents.core5:httpcore5-h2": [ "org.apache.httpcomponents.core5:httpcore5" @@ -1243,6 +1799,20 @@ "org.codehaus.plexus:plexus-classworlds", "org.codehaus.plexus:plexus-utils" ], + "org.danilopianini:gson-extras": [ + "com.google.code.gson:gson", + "javax.annotation:jsr250-api" + ], + "org.jetbrains.kotlin:kotlin-stdlib": [ + "org.jetbrains:annotations" + ], + "org.jetbrains.kotlin:kotlin-stdlib-jdk7": [ + "org.jetbrains.kotlin:kotlin-stdlib" + ], + "org.jetbrains.kotlin:kotlin-stdlib-jdk8": [ + "org.jetbrains.kotlin:kotlin-stdlib", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7" + ], "org.junit.jupiter:junit-jupiter-api": [ "org.apiguardian:apiguardian-api", "org.junit.platform:junit-platform-commons", @@ -1295,6 +1865,37 @@ "org.javassist:javassist", "org.slf4j:slf4j-api" ], + "org.scala-js:scalajs-stubs_2.13": [ + "org.scala-lang:scala-library" + ], + "org.scala-lang.modules:scala-collection-compat_2.13": [ + "org.scala-lang:scala-library" + ], + "org.scala-lang.modules:scala-parallel-collections_2.13": [ + "org.scala-lang:scala-library" + ], + "org.scala-lang.modules:scala-xml_2.13": [ + "org.scala-lang:scala-library" + ], + "org.scala-lang:scala-reflect": [ + "org.scala-lang:scala-library" + ], + "org.scalameta:common_2.13": [ + "com.lihaoyi:sourcecode_2.13", + "com.thesamet.scalapb:scalapb-runtime_2.13", + "org.scala-lang:scala-library" + ], + "org.scalameta:parsers_2.13": [ + "org.scala-lang:scala-library", + "org.scalameta:trees_2.13" + ], + "org.scalameta:trees_2.13": [ + "org.scala-lang:scala-library", + "org.scalameta:common_2.13" + ], + "org.slf4j:jul-to-slf4j": [ + "org.slf4j:slf4j-api" + ], "org.slf4j:slf4j-jdk14": [ "org.slf4j:slf4j-api" ], @@ -1311,13 +1912,6 @@ ] }, "packages": { - "com.beust:jcommander": [ - "com.beust.jcommander", - "com.beust.jcommander.converters", - "com.beust.jcommander.defaultprovider", - "com.beust.jcommander.internal", - "com.beust.jcommander.validators" - ], "com.fasterxml.jackson.core:jackson-core": [ "com.fasterxml.jackson.core", "com.fasterxml.jackson.core.async", @@ -1332,6 +1926,24 @@ "com.fasterxml.jackson.core.type", "com.fasterxml.jackson.core.util" ], + "com.github.nawforce:scala-json-rpc-upickle-json-serializer_2.13": [ + "io.github.shogowada.scala.jsonrpc.serializers" + ], + "com.github.nawforce:scala-json-rpc_2.13": [ + "io.github.shogowada.scala.jsonrpc", + "io.github.shogowada.scala.jsonrpc.api", + "io.github.shogowada.scala.jsonrpc.client", + "io.github.shogowada.scala.jsonrpc.common", + "io.github.shogowada.scala.jsonrpc.serializers", + "io.github.shogowada.scala.jsonrpc.server" + ], + "com.github.oowekyala.ooxml:nice-xml-messages": [ + "com.github.oowekyala.ooxml", + "com.github.oowekyala.ooxml.messages" + ], + "com.github.pathikrit:better-files_2.13": [ + "better.files" + ], "com.github.spotbugs:spotbugs": [ "edu.umd.cs.findbugs", "edu.umd.cs.findbugs.asm", @@ -1461,6 +2073,17 @@ "com.google.errorprone.annotations", "com.google.errorprone.annotations.concurrent" ], + "com.google.flogger:flogger": [ + "com.google.common.flogger", + "com.google.common.flogger.backend", + "com.google.common.flogger.context", + "com.google.common.flogger.parameter", + "com.google.common.flogger.parser", + "com.google.common.flogger.util" + ], + "com.google.flogger:flogger-system-backend": [ + "com.google.common.flogger.backend.system" + ], "com.google.googlejavaformat:google-java-format": [ "com.google.googlejavaformat", "com.google.googlejavaformat.java", @@ -1525,6 +2148,18 @@ "com.google.re2j:re2j": [ "com.google.re2j" ], + "com.google.summit:summit-ast": [ + "com.google.summit", + "com.google.summit.ast", + "com.google.summit.ast.declaration", + "com.google.summit.ast.expression", + "com.google.summit.ast.initializer", + "com.google.summit.ast.modifier", + "com.google.summit.ast.statement", + "com.google.summit.ast.traversal", + "com.google.summit.serialization", + "com.google.summit.translation" + ], "com.google.truth:truth": [ "com.google.common.truth" ], @@ -1532,6 +2167,32 @@ "difflib", "difflib.myers" ], + "com.lihaoyi:geny_2.13": [ + "geny" + ], + "com.lihaoyi:mainargs_2.13": [ + "mainargs" + ], + "com.lihaoyi:sourcecode_2.13": [ + "sourcecode" + ], + "com.lihaoyi:ujson_2.13": [ + "ujson", + "ujson.util" + ], + "com.lihaoyi:upack_2.13": [ + "upack" + ], + "com.lihaoyi:upickle-core_2.13": [ + "upickle.core" + ], + "com.lihaoyi:upickle-implicits_2.13": [ + "upickle.implicits", + "upickle.implicits.internal" + ], + "com.lihaoyi:upickle_2.13": [ + "upickle" + ], "com.puppycrawl.tools:checkstyle": [ "com.puppycrawl.tools.checkstyle", "com.puppycrawl.tools.checkstyle.ant", @@ -1575,6 +2236,28 @@ "com.squareup.okio:okio": [ "okio" ], + "com.thesamet.scalapb:lenses_2.13": [ + "scalapb.lenses" + ], + "com.thesamet.scalapb:scalapb-runtime_2.13": [ + "com.google.protobuf.any", + "com.google.protobuf.api", + "com.google.protobuf.compiler.plugin", + "com.google.protobuf.descriptor", + "com.google.protobuf.duration", + "com.google.protobuf.empty", + "com.google.protobuf.field_mask", + "com.google.protobuf.source_context", + "com.google.protobuf.struct", + "com.google.protobuf.timestamp", + "com.google.protobuf.type", + "com.google.protobuf.wrappers", + "scalapb", + "scalapb.descriptors", + "scalapb.internal", + "scalapb.options", + "scalapb.textformat" + ], "commons-beanutils:commons-beanutils": [ "org.apache.commons.beanutils", "org.apache.commons.beanutils.converters", @@ -1615,6 +2298,119 @@ "info.picocli:picocli": [ "picocli" ], + "io.github.apex-dev-tools:apex-ls_2.13": [ + "com.nawforce.apexlink.analysis", + "com.nawforce.apexlink.api", + "com.nawforce.apexlink.cst", + "com.nawforce.apexlink.cst.stmts", + "com.nawforce.apexlink.deps", + "com.nawforce.apexlink.diagnostics", + "com.nawforce.apexlink.finding", + "com.nawforce.apexlink.indexer", + "com.nawforce.apexlink.memory", + "com.nawforce.apexlink.names", + "com.nawforce.apexlink.opcst", + "com.nawforce.apexlink.org", + "com.nawforce.apexlink.plugins", + "com.nawforce.apexlink.rpc", + "com.nawforce.apexlink.types.apex", + "com.nawforce.apexlink.types.core", + "com.nawforce.apexlink.types.other", + "com.nawforce.apexlink.types.platform", + "com.nawforce.apexlink.types.schema", + "com.nawforce.apexlink.types.synthetic", + "com.nawforce.pkgforce.diagnostics", + "com.nawforce.pkgforce.documents", + "com.nawforce.pkgforce.memory", + "com.nawforce.pkgforce.modifiers", + "com.nawforce.pkgforce.names", + "com.nawforce.pkgforce.parsers", + "com.nawforce.pkgforce.path", + "com.nawforce.pkgforce.pkgs", + "com.nawforce.pkgforce.sfdx", + "com.nawforce.pkgforce.stream", + "com.nawforce.pkgforce.workspace", + "com.nawforce.pkgforce.xml", + "com.nawforce.runtime", + "com.nawforce.runtime.cmds", + "com.nawforce.runtime.parsers", + "com.nawforce.runtime.platform", + "com.nawforce.runtime.types.platform", + "com.nawforce.runtime.workspace", + "com.nawforce.runtime.xml", + "com.vmware.antlr4c3", + "io.github.apexdevtools.apexls", + "io.github.apexdevtools.apexls.api", + "io.github.apexdevtools.apexls.types" + ], + "io.github.apex-dev-tools:apex-parser": [ + "io.github.apexdevtools.apexparser" + ], + "io.github.apex-dev-tools:apex-types_2.13": [ + "com.financialforce.types", + "com.financialforce.types.base", + "io.github.apexdevtools.api", + "io.github.apexdevtools.spi" + ], + "io.github.apex-dev-tools:outline-parser_2.13": [ + "com.financialforce.oparser", + "com.financialforce.oparser.cmds" + ], + "io.github.apex-dev-tools:sobject-types": [ + "com.nawforce.runforce.SObjects" + ], + "io.github.apex-dev-tools:standard-types": [ + "com.nawforce.runforce.Apex", + "com.nawforce.runforce.ApexPages", + "com.nawforce.runforce.Approval", + "com.nawforce.runforce.Auth", + "com.nawforce.runforce.Canvas", + "com.nawforce.runforce.ChatterAnswers", + "com.nawforce.runforce.Component", + "com.nawforce.runforce.Compression", + "com.nawforce.runforce.ConnectApi", + "com.nawforce.runforce.DataProtection", + "com.nawforce.runforce.DataSource", + "com.nawforce.runforce.DataWeave", + "com.nawforce.runforce.Database", + "com.nawforce.runforce.Datacloud", + "com.nawforce.runforce.Flow", + "com.nawforce.runforce.FormulaEval", + "com.nawforce.runforce.Internal", + "com.nawforce.runforce.Invocable", + "com.nawforce.runforce.IsvPartners", + "com.nawforce.runforce.KbManagement", + "com.nawforce.runforce.LiveAgent", + "com.nawforce.runforce.Messaging", + "com.nawforce.runforce.Metadata", + "com.nawforce.runforce.Package", + "com.nawforce.runforce.Process", + "com.nawforce.runforce.QuickAction", + "com.nawforce.runforce.RichMessaging", + "com.nawforce.runforce.SObjectStubs", + "com.nawforce.runforce.Schema", + "com.nawforce.runforce.Search", + "com.nawforce.runforce.Site", + "com.nawforce.runforce.Support", + "com.nawforce.runforce.System", + "com.nawforce.runforce.TerritoryMgmt", + "com.nawforce.runforce.TxnSecurity", + "com.nawforce.runforce.UserProvisioning", + "com.nawforce.runforce.VisualEditor", + "com.nawforce.runforce.Wave", + "com.nawforce.runforce.applauncher", + "com.nawforce.runforce.cache", + "com.nawforce.runforce.dom", + "com.nawforce.runforce.eventbus", + "com.nawforce.runforce.hammer", + "com.nawforce.runforce.malwaredefense", + "com.nawforce.runforce.networkspulse", + "com.nawforce.runforce.reports", + "com.nawforce.runforce.wavetemplate" + ], + "io.github.apex-dev-tools:vf-parser": [ + "com.nawforce.vfparser" + ], "io.grpc:grpc-api": [ "io.grpc" ], @@ -1648,6 +2444,17 @@ "io.grpc.stub", "io.grpc.stub.annotations" ], + "io.methvin:directory-watcher": [ + "io.methvin.watcher", + "io.methvin.watcher.changeset", + "io.methvin.watcher.hashing", + "io.methvin.watcher.visitor", + "io.methvin.watchservice", + "io.methvin.watchservice.jna" + ], + "io.methvin:directory-watcher-better-files_2.13": [ + "io.methvin.better.files" + ], "io.netty:netty-buffer": [ "io.netty.buffer", "io.netty.buffer.search" @@ -1767,6 +2574,10 @@ "io.perfmark:perfmark-api": [ "io.perfmark" ], + "javax.annotation:jsr250-api": [ + "javax.annotation", + "javax.annotation.security" + ], "jaxen:jaxen": [ "org.jaxen", "org.jaxen.dom", @@ -1819,6 +2630,16 @@ "org.junit.runners.parameterized", "org.junit.validator" ], + "me.tongfei:progressbar": [ + "me.tongfei.progressbar", + "me.tongfei.progressbar.wrapped" + ], + "net.java.dev.jna:jna": [ + "com.sun.jna", + "com.sun.jna.internal", + "com.sun.jna.ptr", + "com.sun.jna.win32" + ], "net.jcip:jcip-annotations": [ "net.jcip.annotations" ], @@ -1883,132 +2704,198 @@ "net.sf.saxon.xpath", "net.sf.saxon.z" ], + "net.sourceforge.pmd:pmd-ant": [ + "net.sourceforge.pmd.ant", + "net.sourceforge.pmd.ant.internal" + ], + "net.sourceforge.pmd:pmd-apex": [ + "net.sourceforge.pmd.lang.apex", + "net.sourceforge.pmd.lang.apex.ast", + "net.sourceforge.pmd.lang.apex.cpd", + "net.sourceforge.pmd.lang.apex.internal", + "net.sourceforge.pmd.lang.apex.metrics", + "net.sourceforge.pmd.lang.apex.metrics.internal", + "net.sourceforge.pmd.lang.apex.multifile", + "net.sourceforge.pmd.lang.apex.rule", + "net.sourceforge.pmd.lang.apex.rule.bestpractices", + "net.sourceforge.pmd.lang.apex.rule.codestyle", + "net.sourceforge.pmd.lang.apex.rule.design", + "net.sourceforge.pmd.lang.apex.rule.documentation", + "net.sourceforge.pmd.lang.apex.rule.errorprone", + "net.sourceforge.pmd.lang.apex.rule.internal", + "net.sourceforge.pmd.lang.apex.rule.performance", + "net.sourceforge.pmd.lang.apex.rule.security" + ], + "net.sourceforge.pmd:pmd-cli": [ + "me.tongfei.progressbar", + "net.sourceforge.pmd.cli", + "net.sourceforge.pmd.cli.commands.internal", + "net.sourceforge.pmd.cli.commands.mixins.internal", + "net.sourceforge.pmd.cli.commands.typesupport.internal", + "net.sourceforge.pmd.cli.internal" + ], + "net.sourceforge.pmd:pmd-coco": [ + "net.sourceforge.pmd.lang.coco", + "net.sourceforge.pmd.lang.coco.ast", + "net.sourceforge.pmd.lang.coco.cpd" + ], "net.sourceforge.pmd:pmd-core": [ "net.sourceforge.pmd", "net.sourceforge.pmd.annotation", - "net.sourceforge.pmd.ant", - "net.sourceforge.pmd.ant.internal", "net.sourceforge.pmd.benchmark", "net.sourceforge.pmd.cache", "net.sourceforge.pmd.cache.internal", - "net.sourceforge.pmd.cli", - "net.sourceforge.pmd.cli.internal", "net.sourceforge.pmd.cpd", + "net.sourceforge.pmd.cpd.impl", "net.sourceforge.pmd.cpd.internal", - "net.sourceforge.pmd.cpd.renderer", - "net.sourceforge.pmd.cpd.token", - "net.sourceforge.pmd.cpd.token.internal", - "net.sourceforge.pmd.dcd", - "net.sourceforge.pmd.dcd.asm", - "net.sourceforge.pmd.dcd.graph", - "net.sourceforge.pmd.document", "net.sourceforge.pmd.internal", "net.sourceforge.pmd.internal.util", "net.sourceforge.pmd.lang", - "net.sourceforge.pmd.lang.antlr", "net.sourceforge.pmd.lang.ast", + "net.sourceforge.pmd.lang.ast.impl", + "net.sourceforge.pmd.lang.ast.impl.antlr4", "net.sourceforge.pmd.lang.ast.impl.javacc", - "net.sourceforge.pmd.lang.ast.xpath", - "net.sourceforge.pmd.lang.ast.xpath.internal", - "net.sourceforge.pmd.lang.ast.xpath.saxon", - "net.sourceforge.pmd.lang.dfa", - "net.sourceforge.pmd.lang.dfa.pathfinder", - "net.sourceforge.pmd.lang.dfa.report", + "net.sourceforge.pmd.lang.ast.internal", "net.sourceforge.pmd.lang.document", - "net.sourceforge.pmd.lang.document.internal", - "net.sourceforge.pmd.lang.internal", + "net.sourceforge.pmd.lang.impl", "net.sourceforge.pmd.lang.metrics", - "net.sourceforge.pmd.lang.metrics.internal", "net.sourceforge.pmd.lang.rule", - "net.sourceforge.pmd.lang.rule.stat", + "net.sourceforge.pmd.lang.rule.internal", "net.sourceforge.pmd.lang.rule.xpath", + "net.sourceforge.pmd.lang.rule.xpath.impl", "net.sourceforge.pmd.lang.rule.xpath.internal", "net.sourceforge.pmd.lang.symboltable", - "net.sourceforge.pmd.lang.xpath", - "net.sourceforge.pmd.processor", "net.sourceforge.pmd.properties", - "net.sourceforge.pmd.properties.builders", - "net.sourceforge.pmd.properties.constraints", - "net.sourceforge.pmd.properties.modules", + "net.sourceforge.pmd.properties.internal", "net.sourceforge.pmd.renderers", "net.sourceforge.pmd.renderers.internal.sarif", - "net.sourceforge.pmd.rules", - "net.sourceforge.pmd.stat", + "net.sourceforge.pmd.reporting", "net.sourceforge.pmd.util", "net.sourceforge.pmd.util.database", - "net.sourceforge.pmd.util.datasource", - "net.sourceforge.pmd.util.datasource.internal", - "net.sourceforge.pmd.util.designer", "net.sourceforge.pmd.util.designerbindings", - "net.sourceforge.pmd.util.filter", + "net.sourceforge.pmd.util.internal", + "net.sourceforge.pmd.util.internal.xml", "net.sourceforge.pmd.util.log", "net.sourceforge.pmd.util.log.internal", - "net.sourceforge.pmd.util.treeexport", - "net.sourceforge.pmd.util.viewer", - "net.sourceforge.pmd.util.viewer.gui", - "net.sourceforge.pmd.util.viewer.gui.menu", - "net.sourceforge.pmd.util.viewer.model", - "net.sourceforge.pmd.util.viewer.util", - "org.jaxen", - "org.jaxen.dom", - "org.jaxen.dom4j", - "org.jaxen.expr", - "org.jaxen.expr.iter", - "org.jaxen.function", - "org.jaxen.function.ext", - "org.jaxen.function.xslt", - "org.jaxen.javabean", - "org.jaxen.jdom", - "org.jaxen.pattern", - "org.jaxen.saxpath", - "org.jaxen.saxpath.base", - "org.jaxen.saxpath.helpers", - "org.jaxen.util", - "org.jaxen.xom" + "net.sourceforge.pmd.util.treeexport" ], "net.sourceforge.pmd:pmd-cpp": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.cpp", - "net.sourceforge.pmd.lang.cpp.ast" + "net.sourceforge.pmd.lang.cpp.ast", + "net.sourceforge.pmd.lang.cpp.cpd" ], "net.sourceforge.pmd:pmd-cs": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.cs", - "net.sourceforge.pmd.lang.cs.antlr4" + "net.sourceforge.pmd.lang.cs.ast", + "net.sourceforge.pmd.lang.cs.cpd" ], "net.sourceforge.pmd:pmd-dart": [ - "net.sourceforge.pmd.cpd", - "net.sourceforge.pmd.lang.dart.antlr4" + "net.sourceforge.pmd.lang.dart", + "net.sourceforge.pmd.lang.dart.ast", + "net.sourceforge.pmd.lang.dart.cpd" + ], + "net.sourceforge.pmd:pmd-designer": [ + "com.github.oowekyala.rxstring", + "impl.org.controlsfx", + "impl.org.controlsfx.autocompletion", + "impl.org.controlsfx.behavior", + "impl.org.controlsfx.i18n", + "impl.org.controlsfx.skin", + "impl.org.controlsfx.spreadsheet", + "impl.org.controlsfx.table", + "impl.org.controlsfx.tools", + "impl.org.controlsfx.tools.rectangle", + "impl.org.controlsfx.tools.rectangle.change", + "impl.org.controlsfx.version", + "impl.org.controlsfx.worldmap", + "net.sourceforge.pmd.util.fxdesigner", + "net.sourceforge.pmd.util.fxdesigner.app", + "net.sourceforge.pmd.util.fxdesigner.app.services", + "net.sourceforge.pmd.util.fxdesigner.model", + "net.sourceforge.pmd.util.fxdesigner.model.export", + "net.sourceforge.pmd.util.fxdesigner.model.testing", + "net.sourceforge.pmd.util.fxdesigner.popups", + "net.sourceforge.pmd.util.fxdesigner.util", + "net.sourceforge.pmd.util.fxdesigner.util.autocomplete", + "net.sourceforge.pmd.util.fxdesigner.util.autocomplete.matchers", + "net.sourceforge.pmd.util.fxdesigner.util.beans", + "net.sourceforge.pmd.util.fxdesigner.util.beans.converters", + "net.sourceforge.pmd.util.fxdesigner.util.codearea", + "net.sourceforge.pmd.util.fxdesigner.util.codearea.syntaxhighlighting", + "net.sourceforge.pmd.util.fxdesigner.util.controls", + "net.sourceforge.pmd.util.fxdesigner.util.reactfx", + "org.controlsfx.control", + "org.controlsfx.control.action", + "org.controlsfx.control.cell", + "org.controlsfx.control.decoration", + "org.controlsfx.control.spreadsheet", + "org.controlsfx.control.table", + "org.controlsfx.control.table.model", + "org.controlsfx.control.textfield", + "org.controlsfx.dialog", + "org.controlsfx.glyphfont", + "org.controlsfx.property", + "org.controlsfx.property.editor", + "org.controlsfx.tools", + "org.controlsfx.validation", + "org.controlsfx.validation.decoration", + "org.fxmisc.flowless", + "org.fxmisc.richtext", + "org.fxmisc.richtext.event", + "org.fxmisc.richtext.model", + "org.fxmisc.richtext.util", + "org.fxmisc.undo", + "org.fxmisc.undo.impl", + "org.fxmisc.wellbehaved.event", + "org.fxmisc.wellbehaved.event.internal", + "org.fxmisc.wellbehaved.event.template", + "org.kordamp.ikonli", + "org.kordamp.ikonli.fontawesome5", + "org.kordamp.ikonli.javafx", + "org.reactfx", + "org.reactfx.collection", + "org.reactfx.inhibeans", + "org.reactfx.inhibeans.binding", + "org.reactfx.inhibeans.collection", + "org.reactfx.inhibeans.property", + "org.reactfx.inhibeans.value", + "org.reactfx.util", + "org.reactfx.value" ], "net.sourceforge.pmd:pmd-fortran": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.fortran" ], + "net.sourceforge.pmd:pmd-gherkin": [ + "net.sourceforge.pmd.lang.gherkin", + "net.sourceforge.pmd.lang.gherkin.ast", + "net.sourceforge.pmd.lang.gherkin.cpd" + ], "net.sourceforge.pmd:pmd-go": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.go", - "net.sourceforge.pmd.lang.go.antlr4" + "net.sourceforge.pmd.lang.go.ast", + "net.sourceforge.pmd.lang.go.cpd" ], "net.sourceforge.pmd:pmd-groovy": [ - "net.sourceforge.pmd.cpd", - "net.sourceforge.pmd.lang.groovy" + "net.sourceforge.pmd.lang.groovy", + "net.sourceforge.pmd.lang.groovy.ast.impl.antlr4", + "net.sourceforge.pmd.lang.groovy.cpd" + ], + "net.sourceforge.pmd:pmd-html": [ + "net.sourceforge.pmd.lang.html", + "net.sourceforge.pmd.lang.html.ast", + "net.sourceforge.pmd.lang.html.cpd", + "net.sourceforge.pmd.lang.html.rule", + "net.sourceforge.pmd.lang.html.rule.bestpractices" ], "net.sourceforge.pmd:pmd-java": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.java", "net.sourceforge.pmd.lang.java.ast", "net.sourceforge.pmd.lang.java.ast.internal", - "net.sourceforge.pmd.lang.java.dfa", + "net.sourceforge.pmd.lang.java.cpd", "net.sourceforge.pmd.lang.java.internal", "net.sourceforge.pmd.lang.java.javadoc", "net.sourceforge.pmd.lang.java.metrics", - "net.sourceforge.pmd.lang.java.metrics.api", - "net.sourceforge.pmd.lang.java.metrics.impl", - "net.sourceforge.pmd.lang.java.metrics.impl.internal", - "net.sourceforge.pmd.lang.java.metrics.impl.visitors", - "net.sourceforge.pmd.lang.java.multifile", - "net.sourceforge.pmd.lang.java.multifile.signature", - "net.sourceforge.pmd.lang.java.qname", + "net.sourceforge.pmd.lang.java.metrics.internal", "net.sourceforge.pmd.lang.java.rule", "net.sourceforge.pmd.lang.java.rule.bestpractices", "net.sourceforge.pmd.lang.java.rule.codestyle", @@ -2018,134 +2905,148 @@ "net.sourceforge.pmd.lang.java.rule.internal", "net.sourceforge.pmd.lang.java.rule.multithreading", "net.sourceforge.pmd.lang.java.rule.performance", - "net.sourceforge.pmd.lang.java.rule.regex", "net.sourceforge.pmd.lang.java.rule.security", - "net.sourceforge.pmd.lang.java.symboltable", - "net.sourceforge.pmd.lang.java.typeresolution", - "net.sourceforge.pmd.lang.java.typeresolution.internal", - "net.sourceforge.pmd.lang.java.typeresolution.typedefinition", - "net.sourceforge.pmd.lang.java.typeresolution.typeinference", - "net.sourceforge.pmd.lang.java.typeresolution.visitors", + "net.sourceforge.pmd.lang.java.rule.xpath.internal", + "net.sourceforge.pmd.lang.java.symbols", + "net.sourceforge.pmd.lang.java.symbols.internal", + "net.sourceforge.pmd.lang.java.symbols.internal.asm", + "net.sourceforge.pmd.lang.java.symbols.internal.ast", + "net.sourceforge.pmd.lang.java.symbols.table", + "net.sourceforge.pmd.lang.java.symbols.table.coreimpl", + "net.sourceforge.pmd.lang.java.symbols.table.internal", "net.sourceforge.pmd.lang.java.types", - "net.sourceforge.pmd.lang.java.xpath" + "net.sourceforge.pmd.lang.java.types.ast", + "net.sourceforge.pmd.lang.java.types.ast.internal", + "net.sourceforge.pmd.lang.java.types.internal", + "net.sourceforge.pmd.lang.java.types.internal.infer", + "net.sourceforge.pmd.lang.java.types.internal.infer.ast" + ], + "net.sourceforge.pmd:pmd-javascript": [ + "net.sourceforge.pmd.lang.ecmascript", + "net.sourceforge.pmd.lang.ecmascript.ast", + "net.sourceforge.pmd.lang.ecmascript.cpd", + "net.sourceforge.pmd.lang.ecmascript.rule", + "net.sourceforge.pmd.lang.ecmascript.rule.bestpractices", + "net.sourceforge.pmd.lang.ecmascript5.ast", + "net.sourceforge.pmd.lang.typescript", + "net.sourceforge.pmd.lang.typescript.ast", + "net.sourceforge.pmd.lang.typescript.cpd" ], "net.sourceforge.pmd:pmd-jsp": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.jsp", "net.sourceforge.pmd.lang.jsp.ast", + "net.sourceforge.pmd.lang.jsp.cpd", "net.sourceforge.pmd.lang.jsp.rule", "net.sourceforge.pmd.lang.jsp.rule.codestyle", "net.sourceforge.pmd.lang.jsp.rule.design", "net.sourceforge.pmd.lang.jsp.rule.security" ], + "net.sourceforge.pmd:pmd-julia": [ + "net.sourceforge.pmd.lang.julia", + "net.sourceforge.pmd.lang.julia.ast", + "net.sourceforge.pmd.lang.julia.cpd" + ], "net.sourceforge.pmd:pmd-kotlin": [ - "net.sourceforge.pmd.cpd", - "net.sourceforge.pmd.lang.kotlin.antlr4" + "net.sourceforge.pmd.lang.kotlin", + "net.sourceforge.pmd.lang.kotlin.ast", + "net.sourceforge.pmd.lang.kotlin.cpd", + "net.sourceforge.pmd.lang.kotlin.rule.errorprone", + "net.sourceforge.pmd.lang.kotlin.rule.xpath.internal" ], "net.sourceforge.pmd:pmd-lua": [ - "net.sourceforge.pmd.cpd", - "net.sourceforge.pmd.lang.lua.antlr4" + "net.sourceforge.pmd.lang.lua", + "net.sourceforge.pmd.lang.lua.ast", + "net.sourceforge.pmd.lang.lua.cpd" ], "net.sourceforge.pmd:pmd-matlab": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.matlab", - "net.sourceforge.pmd.lang.matlab.ast" + "net.sourceforge.pmd.lang.matlab.ast", + "net.sourceforge.pmd.lang.matlab.cpd" ], "net.sourceforge.pmd:pmd-modelica": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.modelica", "net.sourceforge.pmd.lang.modelica.ast", + "net.sourceforge.pmd.lang.modelica.cpd", "net.sourceforge.pmd.lang.modelica.resolver", + "net.sourceforge.pmd.lang.modelica.resolver.internal", "net.sourceforge.pmd.lang.modelica.rule", "net.sourceforge.pmd.lang.modelica.rule.bestpractices" ], "net.sourceforge.pmd:pmd-objectivec": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.objectivec", - "net.sourceforge.pmd.lang.objectivec.ast" + "net.sourceforge.pmd.lang.objectivec.ast", + "net.sourceforge.pmd.lang.objectivec.cpd" ], "net.sourceforge.pmd:pmd-perl": [ - "net.sourceforge.pmd.cpd" + "net.sourceforge.pmd.lang.perl" ], "net.sourceforge.pmd:pmd-php": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.php" ], "net.sourceforge.pmd:pmd-plsql": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.plsql", "net.sourceforge.pmd.lang.plsql.ast", "net.sourceforge.pmd.lang.plsql.ast.internal", - "net.sourceforge.pmd.lang.plsql.dfa", + "net.sourceforge.pmd.lang.plsql.cpd", "net.sourceforge.pmd.lang.plsql.rule", "net.sourceforge.pmd.lang.plsql.rule.codestyle", "net.sourceforge.pmd.lang.plsql.rule.design", "net.sourceforge.pmd.lang.plsql.symboltable" ], "net.sourceforge.pmd:pmd-python": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.python", - "net.sourceforge.pmd.lang.python.ast" + "net.sourceforge.pmd.lang.python.ast", + "net.sourceforge.pmd.lang.python.cpd" ], "net.sourceforge.pmd:pmd-ruby": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.ruby" ], + "net.sourceforge.pmd:pmd-scala_2.13": [ + "net.sourceforge.pmd.lang.scala", + "net.sourceforge.pmd.lang.scala.ast", + "net.sourceforge.pmd.lang.scala.cpd", + "net.sourceforge.pmd.lang.scala.internal", + "net.sourceforge.pmd.lang.scala.rule" + ], "net.sourceforge.pmd:pmd-swift": [ - "net.sourceforge.pmd.cpd", "net.sourceforge.pmd.lang.swift", - "net.sourceforge.pmd.lang.swift.antlr4" - ], - "net.sourceforge.pmd:pmd-vm": [ - "net.sourceforge.pmd.lang.vm", - "net.sourceforge.pmd.lang.vm.ast", - "net.sourceforge.pmd.lang.vm.directive", - "net.sourceforge.pmd.lang.vm.rule", - "net.sourceforge.pmd.lang.vm.rule.bestpractices", - "net.sourceforge.pmd.lang.vm.rule.design", - "net.sourceforge.pmd.lang.vm.rule.errorprone", - "net.sourceforge.pmd.lang.vm.util" + "net.sourceforge.pmd.lang.swift.ast", + "net.sourceforge.pmd.lang.swift.cpd", + "net.sourceforge.pmd.lang.swift.rule", + "net.sourceforge.pmd.lang.swift.rule.bestpractices" + ], + "net.sourceforge.pmd:pmd-tsql": [ + "net.sourceforge.pmd.lang.tsql", + "net.sourceforge.pmd.lang.tsql.ast", + "net.sourceforge.pmd.lang.tsql.cpd" + ], + "net.sourceforge.pmd:pmd-velocity": [ + "net.sourceforge.pmd.lang.velocity", + "net.sourceforge.pmd.lang.velocity.ast", + "net.sourceforge.pmd.lang.velocity.cpd", + "net.sourceforge.pmd.lang.velocity.rule", + "net.sourceforge.pmd.lang.velocity.rule.bestpractices", + "net.sourceforge.pmd.lang.velocity.rule.design", + "net.sourceforge.pmd.lang.velocity.rule.errorprone" + ], + "net.sourceforge.pmd:pmd-visualforce": [ + "net.sourceforge.pmd.lang.visualforce", + "net.sourceforge.pmd.lang.visualforce.ast", + "net.sourceforge.pmd.lang.visualforce.cpd", + "net.sourceforge.pmd.lang.visualforce.rule", + "net.sourceforge.pmd.lang.visualforce.rule.security", + "net.sourceforge.pmd.lang.visualforce.rule.security.internal" ], "net.sourceforge.pmd:pmd-xml": [ - "net.sourceforge.pmd.lang.pom", - "net.sourceforge.pmd.lang.wsdl", - "net.sourceforge.pmd.lang.wsdl.rule", "net.sourceforge.pmd.lang.xml", "net.sourceforge.pmd.lang.xml.antlr4", "net.sourceforge.pmd.lang.xml.ast", + "net.sourceforge.pmd.lang.xml.ast.internal", + "net.sourceforge.pmd.lang.xml.cpd", + "net.sourceforge.pmd.lang.xml.pom", "net.sourceforge.pmd.lang.xml.rule", - "net.sourceforge.pmd.lang.xsl", - "net.sourceforge.pmd.xml.cpd" - ], - "net.sourceforge.saxon:saxon": [ - "net.sf.saxon", - "net.sf.saxon.charcode", - "net.sf.saxon.codenorm", - "net.sf.saxon.event", - "net.sf.saxon.evpull", - "net.sf.saxon.expr", - "net.sf.saxon.exslt", - "net.sf.saxon.functions", - "net.sf.saxon.instruct", - "net.sf.saxon.java", - "net.sf.saxon.number", - "net.sf.saxon.om", - "net.sf.saxon.pattern", - "net.sf.saxon.pull", - "net.sf.saxon.query", - "net.sf.saxon.regex", - "net.sf.saxon.sort", - "net.sf.saxon.style", - "net.sf.saxon.sxpath", - "net.sf.saxon.tinytree", - "net.sf.saxon.trace", - "net.sf.saxon.trans", - "net.sf.saxon.tree", - "net.sf.saxon.type", - "net.sf.saxon.value" - ], - "net.sourceforge.saxon:saxon:jar:dom": [ - "net.sf.saxon.dom" + "net.sourceforge.pmd.lang.xml.wsdl", + "net.sourceforge.pmd.lang.xml.xsl" ], "org.antlr:antlr4-runtime": [ "org.antlr.v4.runtime", @@ -2183,7 +3084,8 @@ "org.apache.commons.lang3.text", "org.apache.commons.lang3.text.translate", "org.apache.commons.lang3.time", - "org.apache.commons.lang3.tuple" + "org.apache.commons.lang3.tuple", + "org.apache.commons.lang3.util" ], "org.apache.commons:commons-text": [ "org.apache.commons.text", @@ -2194,6 +3096,128 @@ "org.apache.commons.text.similarity", "org.apache.commons.text.translate" ], + "org.apache.groovy:groovy": [ + "groovy.beans", + "groovy.cli", + "groovy.cli.internal", + "groovy.grape", + "groovy.inspect", + "groovy.io", + "groovy.lang", + "groovy.lang.groovydoc", + "groovy.namespace", + "groovy.security", + "groovy.time", + "groovy.transform", + "groovy.transform.builder", + "groovy.transform.options", + "groovy.transform.stc", + "groovy.ui", + "groovy.util", + "groovy.util.logging", + "groovyjarjarantlr4.runtime", + "groovyjarjarantlr4.runtime.debug", + "groovyjarjarantlr4.runtime.misc", + "groovyjarjarantlr4.runtime.tree", + "groovyjarjarantlr4.v4", + "groovyjarjarantlr4.v4.analysis", + "groovyjarjarantlr4.v4.automata", + "groovyjarjarantlr4.v4.codegen", + "groovyjarjarantlr4.v4.codegen.model", + "groovyjarjarantlr4.v4.codegen.model.chunk", + "groovyjarjarantlr4.v4.codegen.model.decl", + "groovyjarjarantlr4.v4.codegen.target", + "groovyjarjarantlr4.v4.gui", + "groovyjarjarantlr4.v4.misc", + "groovyjarjarantlr4.v4.parse", + "groovyjarjarantlr4.v4.runtime", + "groovyjarjarantlr4.v4.runtime.atn", + "groovyjarjarantlr4.v4.runtime.dfa", + "groovyjarjarantlr4.v4.runtime.misc", + "groovyjarjarantlr4.v4.runtime.tree", + "groovyjarjarantlr4.v4.runtime.tree.pattern", + "groovyjarjarantlr4.v4.runtime.tree.xpath", + "groovyjarjarantlr4.v4.semantics", + "groovyjarjarantlr4.v4.tool", + "groovyjarjarantlr4.v4.tool.ast", + "groovyjarjarantlr4.v4.unicode", + "groovyjarjarasm.asm", + "groovyjarjarasm.asm.commons", + "groovyjarjarasm.asm.signature", + "groovyjarjarasm.asm.tree", + "groovyjarjarasm.asm.util", + "groovyjarjarpicocli", + "org.apache.groovy.antlr", + "org.apache.groovy.ast.tools", + "org.apache.groovy.internal.metaclass", + "org.apache.groovy.internal.util", + "org.apache.groovy.io", + "org.apache.groovy.lang", + "org.apache.groovy.lang.annotation", + "org.apache.groovy.metaclass", + "org.apache.groovy.parser.antlr4", + "org.apache.groovy.parser.antlr4.internal", + "org.apache.groovy.parser.antlr4.internal.atnmanager", + "org.apache.groovy.parser.antlr4.util", + "org.apache.groovy.plugin", + "org.apache.groovy.runtime", + "org.apache.groovy.util", + "org.apache.groovy.util.concurrent", + "org.apache.groovy.util.concurrent.concurrentlinkedhashmap", + "org.codehaus.groovy", + "org.codehaus.groovy.antlr", + "org.codehaus.groovy.ast", + "org.codehaus.groovy.ast.builder", + "org.codehaus.groovy.ast.decompiled", + "org.codehaus.groovy.ast.expr", + "org.codehaus.groovy.ast.stmt", + "org.codehaus.groovy.ast.tools", + "org.codehaus.groovy.classgen", + "org.codehaus.groovy.classgen.asm", + "org.codehaus.groovy.classgen.asm.indy", + "org.codehaus.groovy.classgen.asm.indy.sc", + "org.codehaus.groovy.classgen.asm.sc", + "org.codehaus.groovy.classgen.asm.util", + "org.codehaus.groovy.control", + "org.codehaus.groovy.control.customizers", + "org.codehaus.groovy.control.customizers.builder", + "org.codehaus.groovy.control.io", + "org.codehaus.groovy.control.messages", + "org.codehaus.groovy.reflection", + "org.codehaus.groovy.reflection.android", + "org.codehaus.groovy.reflection.stdclasses", + "org.codehaus.groovy.reflection.v7", + "org.codehaus.groovy.runtime", + "org.codehaus.groovy.runtime.callsite", + "org.codehaus.groovy.runtime.dgmimpl", + "org.codehaus.groovy.runtime.dgmimpl.arrays", + "org.codehaus.groovy.runtime.m12n", + "org.codehaus.groovy.runtime.memoize", + "org.codehaus.groovy.runtime.metaclass", + "org.codehaus.groovy.runtime.powerassert", + "org.codehaus.groovy.runtime.typehandling", + "org.codehaus.groovy.runtime.wrappers", + "org.codehaus.groovy.syntax", + "org.codehaus.groovy.tools", + "org.codehaus.groovy.tools.ast", + "org.codehaus.groovy.tools.gse", + "org.codehaus.groovy.tools.javac", + "org.codehaus.groovy.tools.shell", + "org.codehaus.groovy.tools.shell.util", + "org.codehaus.groovy.transform", + "org.codehaus.groovy.transform.sc", + "org.codehaus.groovy.transform.sc.transformers", + "org.codehaus.groovy.transform.stc", + "org.codehaus.groovy.transform.tailrec", + "org.codehaus.groovy.transform.trait", + "org.codehaus.groovy.util", + "org.codehaus.groovy.vmplugin", + "org.codehaus.groovy.vmplugin.v10", + "org.codehaus.groovy.vmplugin.v16", + "org.codehaus.groovy.vmplugin.v7", + "org.codehaus.groovy.vmplugin.v8", + "org.codehaus.groovy.vmplugin.v9" + ], "org.apache.httpcomponents.client5:httpclient5": [ "org.apache.hc.client5.http", "org.apache.hc.client5.http.async", @@ -2392,96 +3416,6 @@ "org.checkerframework.dataflow.qual", "org.checkerframework.framework.qual" ], - "org.codehaus.groovy:groovy": [ - "groovy.beans", - "groovy.grape", - "groovy.inspect", - "groovy.io", - "groovy.lang", - "groovy.security", - "groovy.time", - "groovy.transform", - "groovy.transform.builder", - "groovy.transform.stc", - "groovy.ui", - "groovy.util", - "groovy.util.logging", - "groovy.xml", - "groovyjarjarantlr", - "groovyjarjarantlr.ASdebug", - "groovyjarjarantlr.actions.cpp", - "groovyjarjarantlr.actions.csharp", - "groovyjarjarantlr.actions.java", - "groovyjarjarantlr.actions.python", - "groovyjarjarantlr.build", - "groovyjarjarantlr.collections", - "groovyjarjarantlr.collections.impl", - "groovyjarjarantlr.debug", - "groovyjarjarantlr.debug.misc", - "groovyjarjarantlr.preprocessor", - "groovyjarjarasm.asm", - "groovyjarjarasm.asm.commons", - "groovyjarjarasm.asm.signature", - "groovyjarjarasm.asm.tree", - "groovyjarjarasm.asm.util", - "groovyjarjarcommonscli", - "org.apache.groovy.io", - "org.apache.groovy.util", - "org.codehaus.groovy", - "org.codehaus.groovy.antlr", - "org.codehaus.groovy.antlr.java", - "org.codehaus.groovy.antlr.parser", - "org.codehaus.groovy.antlr.treewalker", - "org.codehaus.groovy.ast", - "org.codehaus.groovy.ast.builder", - "org.codehaus.groovy.ast.expr", - "org.codehaus.groovy.ast.stmt", - "org.codehaus.groovy.ast.tools", - "org.codehaus.groovy.classgen", - "org.codehaus.groovy.classgen.asm", - "org.codehaus.groovy.classgen.asm.indy", - "org.codehaus.groovy.classgen.asm.sc", - "org.codehaus.groovy.cli", - "org.codehaus.groovy.control", - "org.codehaus.groovy.control.customizers", - "org.codehaus.groovy.control.customizers.builder", - "org.codehaus.groovy.control.io", - "org.codehaus.groovy.control.messages", - "org.codehaus.groovy.plugin", - "org.codehaus.groovy.reflection", - "org.codehaus.groovy.reflection.android", - "org.codehaus.groovy.reflection.stdclasses", - "org.codehaus.groovy.reflection.v7", - "org.codehaus.groovy.runtime", - "org.codehaus.groovy.runtime.callsite", - "org.codehaus.groovy.runtime.dgmimpl", - "org.codehaus.groovy.runtime.dgmimpl.arrays", - "org.codehaus.groovy.runtime.m12n", - "org.codehaus.groovy.runtime.memoize", - "org.codehaus.groovy.runtime.metaclass", - "org.codehaus.groovy.runtime.powerassert", - "org.codehaus.groovy.runtime.typehandling", - "org.codehaus.groovy.runtime.wrappers", - "org.codehaus.groovy.syntax", - "org.codehaus.groovy.tools", - "org.codehaus.groovy.tools.ast", - "org.codehaus.groovy.tools.gse", - "org.codehaus.groovy.tools.javac", - "org.codehaus.groovy.tools.shell", - "org.codehaus.groovy.tools.shell.util", - "org.codehaus.groovy.transform", - "org.codehaus.groovy.transform.sc", - "org.codehaus.groovy.transform.sc.transformers", - "org.codehaus.groovy.transform.stc", - "org.codehaus.groovy.transform.tailrec", - "org.codehaus.groovy.transform.trait", - "org.codehaus.groovy.util", - "org.codehaus.groovy.vmplugin", - "org.codehaus.groovy.vmplugin.v5", - "org.codehaus.groovy.vmplugin.v6", - "org.codehaus.groovy.vmplugin.v7", - "org.codehaus.groovy.vmplugin.v8" - ], "org.codehaus.mojo:animal-sniffer-annotations": [ "org.codehaus.mojo.animal_sniffer" ], @@ -2538,6 +3472,12 @@ "org.codehaus.plexus.util.xml", "org.codehaus.plexus.util.xml.pull" ], + "org.danilopianini:gson-extras": [ + "com.google.gson.extras.examples.rawcollections", + "com.google.gson.graph", + "com.google.gson.interceptors", + "com.google.gson.typeadapters" + ], "org.dom4j:dom4j": [ "org.dom4j", "org.dom4j.bean", @@ -2578,6 +3518,94 @@ "javassist.util", "javassist.util.proxy" ], + "org.jetbrains.kotlin:kotlin-stdlib": [ + "kotlin", + "kotlin.annotation", + "kotlin.collections", + "kotlin.collections.builders", + "kotlin.collections.jdk8", + "kotlin.collections.unsigned", + "kotlin.comparisons", + "kotlin.concurrent", + "kotlin.contracts", + "kotlin.coroutines", + "kotlin.coroutines.cancellation", + "kotlin.coroutines.intrinsics", + "kotlin.coroutines.jvm.internal", + "kotlin.enums", + "kotlin.experimental", + "kotlin.internal", + "kotlin.internal.jdk7", + "kotlin.internal.jdk8", + "kotlin.io", + "kotlin.io.encoding", + "kotlin.io.path", + "kotlin.jdk7", + "kotlin.js", + "kotlin.jvm", + "kotlin.jvm.functions", + "kotlin.jvm.internal", + "kotlin.jvm.internal.markers", + "kotlin.jvm.internal.unsafe", + "kotlin.jvm.jdk8", + "kotlin.jvm.optionals", + "kotlin.math", + "kotlin.properties", + "kotlin.random", + "kotlin.random.jdk8", + "kotlin.ranges", + "kotlin.reflect", + "kotlin.sequences", + "kotlin.streams.jdk8", + "kotlin.system", + "kotlin.text", + "kotlin.text.jdk8", + "kotlin.time", + "kotlin.time.jdk8" + ], + "org.jetbrains:annotations": [ + "org.intellij.lang.annotations", + "org.jetbrains.annotations" + ], + "org.jline:jline": [ + "org.jline.builtins", + "org.jline.builtins.ssh", + "org.jline.builtins.telnet", + "org.jline.console", + "org.jline.console.impl", + "org.jline.keymap", + "org.jline.reader", + "org.jline.reader.impl", + "org.jline.reader.impl.completer", + "org.jline.reader.impl.history", + "org.jline.style", + "org.jline.terminal", + "org.jline.terminal.impl", + "org.jline.terminal.impl.jansi", + "org.jline.terminal.impl.jansi.freebsd", + "org.jline.terminal.impl.jansi.linux", + "org.jline.terminal.impl.jansi.osx", + "org.jline.terminal.impl.jansi.solaris", + "org.jline.terminal.impl.jansi.win", + "org.jline.terminal.impl.jna", + "org.jline.terminal.impl.jna.freebsd", + "org.jline.terminal.impl.jna.linux", + "org.jline.terminal.impl.jna.osx", + "org.jline.terminal.impl.jna.solaris", + "org.jline.terminal.impl.jna.win", + "org.jline.terminal.spi", + "org.jline.utils", + "org.jline.widget" + ], + "org.jsoup:jsoup": [ + "org.jsoup", + "org.jsoup.helper", + "org.jsoup.internal", + "org.jsoup.nodes", + "org.jsoup.parser", + "org.jsoup.safety", + "org.jsoup.select" + ], "org.junit.jupiter:junit-jupiter-api": [ "org.junit.jupiter.api", "org.junit.jupiter.api.condition", @@ -2634,6 +3662,29 @@ "org.junit.vintage.engine.execution", "org.junit.vintage.engine.support" ], + "org.mozilla:rhino": [ + "org.mozilla.classfile", + "org.mozilla.javascript", + "org.mozilla.javascript.annotations", + "org.mozilla.javascript.ast", + "org.mozilla.javascript.commonjs.module", + "org.mozilla.javascript.commonjs.module.provider", + "org.mozilla.javascript.debug", + "org.mozilla.javascript.jdk18", + "org.mozilla.javascript.json", + "org.mozilla.javascript.optimizer", + "org.mozilla.javascript.regexp", + "org.mozilla.javascript.serialize", + "org.mozilla.javascript.tools", + "org.mozilla.javascript.tools.debugger", + "org.mozilla.javascript.tools.debugger.treetable", + "org.mozilla.javascript.tools.jsc", + "org.mozilla.javascript.tools.shell", + "org.mozilla.javascript.typedarrays", + "org.mozilla.javascript.v8dtoa", + "org.mozilla.javascript.xml", + "org.mozilla.javascript.xmlimpl" + ], "org.opentest4j:opentest4j": [ "org.opentest4j" ], @@ -2653,6 +3704,9 @@ "org.ow2.asm:asm-util": [ "org.objectweb.asm.util" ], + "org.pcollections:pcollections": [ + "org.pcollections" + ], "org.reflections:reflections": [ "org.reflections", "org.reflections.scanners", @@ -2660,6 +3714,138 @@ "org.reflections.util", "org.reflections.vfs" ], + "org.scala-js:scalajs-stubs_2.13": [ + "scala.scalajs.js.annotation", + "scala.scalajs.reflect.annotation" + ], + "org.scala-lang.modules:scala-collection-compat_2.13": [ + "scala.collection.compat", + "scala.collection.compat.immutable", + "scala.util.control.compat", + "scala.util.matching.compat" + ], + "org.scala-lang.modules:scala-parallel-collections_2.13": [ + "scala.collection", + "scala.collection.generic", + "scala.collection.immutable", + "scala.collection.mutable", + "scala.collection.parallel", + "scala.collection.parallel.immutable", + "scala.collection.parallel.mutable" + ], + "org.scala-lang.modules:scala-xml_2.13": [ + "scala.xml", + "scala.xml.dtd", + "scala.xml.dtd.impl", + "scala.xml.factory", + "scala.xml.include", + "scala.xml.include.sax", + "scala.xml.parsing", + "scala.xml.persistent", + "scala.xml.pull", + "scala.xml.transform" + ], + "org.scala-lang:scala-library": [ + "scala", + "scala.annotation", + "scala.annotation.meta", + "scala.annotation.unchecked", + "scala.beans", + "scala.collection", + "scala.collection.concurrent", + "scala.collection.convert", + "scala.collection.convert.impl", + "scala.collection.generic", + "scala.collection.immutable", + "scala.collection.mutable", + "scala.compat", + "scala.concurrent", + "scala.concurrent.duration", + "scala.concurrent.impl", + "scala.io", + "scala.jdk", + "scala.jdk.javaapi", + "scala.math", + "scala.ref", + "scala.reflect", + "scala.reflect.macros.internal", + "scala.runtime", + "scala.runtime.java8", + "scala.sys", + "scala.sys.process", + "scala.util", + "scala.util.control", + "scala.util.hashing", + "scala.util.matching" + ], + "org.scala-lang:scala-reflect": [ + "scala.reflect.api", + "scala.reflect.internal", + "scala.reflect.internal.annotations", + "scala.reflect.internal.pickling", + "scala.reflect.internal.settings", + "scala.reflect.internal.tpe", + "scala.reflect.internal.transform", + "scala.reflect.internal.util", + "scala.reflect.io", + "scala.reflect.macros", + "scala.reflect.macros.blackbox", + "scala.reflect.macros.whitebox", + "scala.reflect.runtime" + ], + "org.scalameta:common_2.13": [ + "org.scalameta", + "org.scalameta.adt", + "org.scalameta.collections", + "org.scalameta.data", + "org.scalameta.explore", + "org.scalameta.internal", + "org.scalameta.invariants", + "org.scalameta.overload", + "org.scalameta.tests", + "scala.meta.classifiers", + "scala.meta.common", + "scala.meta.internal", + "scala.meta.internal.classifiers", + "scala.meta.internal.platform", + "scala.meta.internal.prettyprinters", + "scala.meta.internal.semanticdb", + "scala.meta.internal.semanticidx", + "scala.meta.internal.tokens", + "scala.meta.internal.transversers", + "scala.meta.internal.trees", + "scala.meta.prettyprinters" + ], + "org.scalameta:parsers_2.13": [ + "scala.meta.internal.parsers", + "scala.meta.internal.quasiquotes", + "scala.meta.parsers", + "scala.meta.quasiquotes", + "scala.meta.transversers" + ], + "org.scalameta:trees_2.13": [ + "scala.meta", + "scala.meta.dialects", + "scala.meta.inputs", + "scala.meta.internal", + "scala.meta.internal.dialects", + "scala.meta.internal.inputs", + "scala.meta.internal.io", + "scala.meta.internal.prettyprinters", + "scala.meta.internal.tokenizers", + "scala.meta.internal.tokens", + "scala.meta.internal.trees", + "scala.meta.io", + "scala.meta.shaded.internal.fastparse", + "scala.meta.shaded.internal.fastparse.internal", + "scala.meta.shaded.internal.geny", + "scala.meta.tokenizers", + "scala.meta.tokens", + "scala.meta.trees" + ], + "org.slf4j:jul-to-slf4j": [ + "org.slf4j.bridge" + ], "org.slf4j:slf4j-api": [ "org.slf4j", "org.slf4j.event", @@ -2687,8 +3873,11 @@ }, "repositories": { "https://repo1.maven.org/maven2/": [ - "com.beust:jcommander", "com.fasterxml.jackson.core:jackson-core", + "com.github.nawforce:scala-json-rpc-upickle-json-serializer_2.13", + "com.github.nawforce:scala-json-rpc_2.13", + "com.github.oowekyala.ooxml:nice-xml-messages", + "com.github.pathikrit:better-files_2.13", "com.github.spotbugs:spotbugs", "com.github.spotbugs:spotbugs-annotations", "com.google.android:annotations", @@ -2700,6 +3889,8 @@ "com.google.code.findbugs:jsr305", "com.google.code.gson:gson", "com.google.errorprone:error_prone_annotations", + "com.google.flogger:flogger", + "com.google.flogger:flogger-system-backend", "com.google.googlejavaformat:google-java-format", "com.google.guava:failureaccess", "com.google.guava:guava", @@ -2710,17 +3901,35 @@ "com.google.protobuf:protobuf-java", "com.google.protobuf:protobuf-java-util", "com.google.re2j:re2j", + "com.google.summit:summit-ast", "com.google.truth:truth", "com.googlecode.java-diff-utils:diffutils", + "com.lihaoyi:geny_2.13", + "com.lihaoyi:mainargs_2.13", + "com.lihaoyi:sourcecode_2.13", + "com.lihaoyi:ujson_2.13", + "com.lihaoyi:upack_2.13", + "com.lihaoyi:upickle-core_2.13", + "com.lihaoyi:upickle-implicits_2.13", + "com.lihaoyi:upickle_2.13", "com.puppycrawl.tools:checkstyle", "com.squareup.okhttp:okhttp", "com.squareup.okio:okio", + "com.thesamet.scalapb:lenses_2.13", + "com.thesamet.scalapb:scalapb-runtime_2.13", "commons-beanutils:commons-beanutils", "commons-cli:commons-cli", "commons-codec:commons-codec", "commons-collections:commons-collections", "commons-logging:commons-logging", "info.picocli:picocli", + "io.github.apex-dev-tools:apex-ls_2.13", + "io.github.apex-dev-tools:apex-parser", + "io.github.apex-dev-tools:apex-types_2.13", + "io.github.apex-dev-tools:outline-parser_2.13", + "io.github.apex-dev-tools:sobject-types", + "io.github.apex-dev-tools:standard-types", + "io.github.apex-dev-tools:vf-parser", "io.grpc:grpc-api", "io.grpc:grpc-context", "io.grpc:grpc-core", @@ -2729,6 +3938,8 @@ "io.grpc:grpc-protobuf-lite", "io.grpc:grpc-services", "io.grpc:grpc-stub", + "io.methvin:directory-watcher", + "io.methvin:directory-watcher-better-files_2.13", "io.netty:netty-buffer", "io.netty:netty-codec", "io.netty:netty-codec-http", @@ -2753,21 +3964,34 @@ "io.opencensus:opencensus-contrib-grpc-metrics", "io.opencensus:opencensus-contrib-http-util", "io.perfmark:perfmark-api", + "javax.annotation:jsr250-api", "jaxen:jaxen", "junit:junit", + "me.tongfei:progressbar", + "net.java.dev.jna:jna", "net.jcip:jcip-annotations", "net.sf.saxon:Saxon-HE", + "net.sourceforge.pmd:pmd-ant", + "net.sourceforge.pmd:pmd-apex", + "net.sourceforge.pmd:pmd-cli", + "net.sourceforge.pmd:pmd-coco", "net.sourceforge.pmd:pmd-core", "net.sourceforge.pmd:pmd-cpp", "net.sourceforge.pmd:pmd-cs", "net.sourceforge.pmd:pmd-dart", + "net.sourceforge.pmd:pmd-designer", "net.sourceforge.pmd:pmd-dist", "net.sourceforge.pmd:pmd-fortran", + "net.sourceforge.pmd:pmd-gherkin", "net.sourceforge.pmd:pmd-go", "net.sourceforge.pmd:pmd-groovy", + "net.sourceforge.pmd:pmd-html", "net.sourceforge.pmd:pmd-java", + "net.sourceforge.pmd:pmd-javascript", "net.sourceforge.pmd:pmd-jsp", + "net.sourceforge.pmd:pmd-julia", "net.sourceforge.pmd:pmd-kotlin", + "net.sourceforge.pmd:pmd-languages-deps:pom", "net.sourceforge.pmd:pmd-lua", "net.sourceforge.pmd:pmd-matlab", "net.sourceforge.pmd:pmd-modelica", @@ -2777,15 +4001,17 @@ "net.sourceforge.pmd:pmd-plsql", "net.sourceforge.pmd:pmd-python", "net.sourceforge.pmd:pmd-ruby", + "net.sourceforge.pmd:pmd-scala_2.13", "net.sourceforge.pmd:pmd-swift", - "net.sourceforge.pmd:pmd-vm", + "net.sourceforge.pmd:pmd-tsql", + "net.sourceforge.pmd:pmd-velocity", + "net.sourceforge.pmd:pmd-visualforce", "net.sourceforge.pmd:pmd-xml", - "net.sourceforge.saxon:saxon", - "net.sourceforge.saxon:saxon:jar:dom", "org.antlr:antlr4-runtime", "org.apache.bcel:bcel", "org.apache.commons:commons-lang3", "org.apache.commons:commons-text", + "org.apache.groovy:groovy", "org.apache.httpcomponents.client5:httpclient5", "org.apache.httpcomponents.core5:httpcore5", "org.apache.httpcomponents.core5:httpcore5-h2", @@ -2800,15 +4026,21 @@ "org.apiguardian:apiguardian-api", "org.checkerframework:checker-compat-qual", "org.checkerframework:checker-qual", - "org.codehaus.groovy:groovy", "org.codehaus.mojo:animal-sniffer-annotations", "org.codehaus.plexus:plexus-classworlds", "org.codehaus.plexus:plexus-component-annotations", "org.codehaus.plexus:plexus-container-default", "org.codehaus.plexus:plexus-utils", + "org.danilopianini:gson-extras", "org.dom4j:dom4j", "org.hamcrest:hamcrest-core", "org.javassist:javassist", + "org.jetbrains.kotlin:kotlin-stdlib", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7", + "org.jetbrains.kotlin:kotlin-stdlib-jdk8", + "org.jetbrains:annotations", + "org.jline:jline", + "org.jsoup:jsoup", "org.junit.jupiter:junit-jupiter-api", "org.junit.jupiter:junit-jupiter-engine", "org.junit.platform:junit-platform-commons", @@ -2816,13 +4048,25 @@ "org.junit.platform:junit-platform-launcher", "org.junit.platform:junit-platform-reporting", "org.junit.vintage:junit-vintage-engine", + "org.mozilla:rhino", "org.opentest4j:opentest4j", "org.ow2.asm:asm", "org.ow2.asm:asm-analysis", "org.ow2.asm:asm-commons", "org.ow2.asm:asm-tree", "org.ow2.asm:asm-util", + "org.pcollections:pcollections", "org.reflections:reflections", + "org.scala-js:scalajs-stubs_2.13", + "org.scala-lang.modules:scala-collection-compat_2.13", + "org.scala-lang.modules:scala-parallel-collections_2.13", + "org.scala-lang.modules:scala-xml_2.13", + "org.scala-lang:scala-library", + "org.scala-lang:scala-reflect", + "org.scalameta:common_2.13", + "org.scalameta:parsers_2.13", + "org.scalameta:trees_2.13", + "org.slf4j:jul-to-slf4j", "org.slf4j:slf4j-api", "org.slf4j:slf4j-jdk14", "org.slf4j:slf4j-simple", @@ -2894,178 +4138,185 @@ "net.sf.saxon.TransformerFactoryImpl" ] }, + "net.sourceforge.pmd:pmd-apex": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.apex.ApexLanguageModule" + ] + }, + "net.sourceforge.pmd:pmd-coco": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.coco.CocoLanguageModule" + ] + }, "net.sourceforge.pmd:pmd-core": { - "net.sourceforge.pmd.cpd.Language": [], "net.sourceforge.pmd.lang.Language": [] }, "net.sourceforge.pmd:pmd-cpp": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.CPPLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.cpp.CppLanguageModule" ] }, "net.sourceforge.pmd:pmd-cs": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.CsLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.cs.CsLanguageModule" ] }, "net.sourceforge.pmd:pmd-dart": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.DartLanguage" + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.dart.DartLanguageModule" ] }, - "net.sourceforge.pmd:pmd-fortran": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.FortranLanguage" + "net.sourceforge.pmd:pmd-designer": { + "org.controlsfx.glyphfont.GlyphFont": [ + "org.controlsfx.glyphfont.FontAwesome" ], + "org.kordamp.ikonli.IkonHandler": [ + "org.kordamp.ikonli.IkonliIkonResolver", + "org.kordamp.ikonli.fontawesome5.FontAwesomeBrandsIkonHandler", + "org.kordamp.ikonli.fontawesome5.FontAwesomeRegularIkonHandler", + "org.kordamp.ikonli.fontawesome5.FontAwesomeSolidIkonHandler" + ] + }, + "net.sourceforge.pmd:pmd-fortran": { "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.fortran.FortranLanguageModule" ] }, + "net.sourceforge.pmd:pmd-gherkin": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.gherkin.GherkinLanguageModule" + ] + }, "net.sourceforge.pmd:pmd-go": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.GoLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.go.GoLanguageModule" ] }, "net.sourceforge.pmd:pmd-groovy": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.GroovyLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.groovy.GroovyLanguageModule" ] }, + "net.sourceforge.pmd:pmd-html": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.html.HtmlLanguageModule" + ] + }, "net.sourceforge.pmd:pmd-java": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.JavaLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.java.JavaLanguageModule" ] }, + "net.sourceforge.pmd:pmd-javascript": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.ecmascript.EcmascriptLanguageModule", + "net.sourceforge.pmd.lang.typescript.TsLanguageModule" + ] + }, "net.sourceforge.pmd:pmd-jsp": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.JSPLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.jsp.JspLanguageModule" ] }, + "net.sourceforge.pmd:pmd-julia": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.julia.JuliaLanguageModule" + ] + }, "net.sourceforge.pmd:pmd-kotlin": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.KotlinLanguage" + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.kotlin.KotlinLanguageModule" ] }, "net.sourceforge.pmd:pmd-lua": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.LuaLanguage" + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.lua.LuaLanguageModule" ] }, "net.sourceforge.pmd:pmd-matlab": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.MatlabLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.matlab.MatlabLanguageModule" ] }, "net.sourceforge.pmd:pmd-modelica": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.ModelicaLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.modelica.ModelicaLanguageModule" ] }, "net.sourceforge.pmd:pmd-objectivec": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.ObjectiveCLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.objectivec.ObjectiveCLanguageModule" ] }, "net.sourceforge.pmd:pmd-perl": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.PerlLanguage" + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.perl.PerlLanguageModule" ] }, "net.sourceforge.pmd:pmd-php": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.PHPLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.php.PhpLanguageModule" ] }, "net.sourceforge.pmd:pmd-plsql": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.PLSQLLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.plsql.PLSQLLanguageModule" ] }, "net.sourceforge.pmd:pmd-python": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.PythonLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.python.PythonLanguageModule" ] }, "net.sourceforge.pmd:pmd-ruby": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.RubyLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.ruby.RubyLanguageModule" ] }, + "net.sourceforge.pmd:pmd-scala_2.13": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.scala.ScalaLanguageModule" + ] + }, "net.sourceforge.pmd:pmd-swift": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.cpd.SwiftLanguage" - ], "net.sourceforge.pmd.lang.Language": [ "net.sourceforge.pmd.lang.swift.SwiftLanguageModule" ] }, - "net.sourceforge.pmd:pmd-vm": { + "net.sourceforge.pmd:pmd-tsql": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.tsql.TSqlLanguageModule" + ] + }, + "net.sourceforge.pmd:pmd-velocity": { + "net.sourceforge.pmd.lang.Language": [ + "net.sourceforge.pmd.lang.velocity.VtlLanguageModule" + ] + }, + "net.sourceforge.pmd:pmd-visualforce": { "net.sourceforge.pmd.lang.Language": [ - "net.sourceforge.pmd.lang.vm.VmLanguageModule" + "net.sourceforge.pmd.lang.visualforce.VfLanguageModule" ] }, "net.sourceforge.pmd:pmd-xml": { - "net.sourceforge.pmd.cpd.Language": [ - "net.sourceforge.pmd.xml.cpd.XmlLanguage" - ], "net.sourceforge.pmd.lang.Language": [ - "net.sourceforge.pmd.lang.pom.PomLanguageModule", - "net.sourceforge.pmd.lang.wsdl.WsdlLanguageModule", "net.sourceforge.pmd.lang.xml.XmlLanguageModule", - "net.sourceforge.pmd.lang.xsl.XslLanguageModule" + "net.sourceforge.pmd.lang.xml.pom.PomLanguageModule", + "net.sourceforge.pmd.lang.xml.wsdl.WsdlLanguageModule", + "net.sourceforge.pmd.lang.xml.xsl.XslLanguageModule" ] }, - "net.sourceforge.saxon:saxon": { - "javax.xml.transform.TransformerFactory": [ - "net.sf.saxon.TransformerFactoryImpl" + "org.apache.groovy:groovy": { + "org.codehaus.groovy.transform.ASTTransformation": [ + "groovy.grape.GrabAnnotationTransformation" ] }, - "org.codehaus.groovy:groovy": { - "org.codehaus.groovy.source.Extensions": [ - "groovy" + "org.jline:jline": { + "org.jline.terminal.spi.JansiSupport": [ + "org.jline.terminal.impl.jansi.JansiSupportImpl" ], - "org.codehaus.groovy.transform.ASTTransformation": [ - "groovy.grape.GrabAnnotationTransformation", - "org.codehaus.groovy.ast.builder.AstBuilderTransformation" + "org.jline.terminal.spi.JnaSupport": [ + "org.jline.terminal.impl.jna.JnaSupportImpl" ] }, "org.junit.jupiter:junit-jupiter-engine": { diff --git a/java/pmd-ruleset.xml b/java/pmd-ruleset.xml index d2c13a8f..eb7b06f4 100644 --- a/java/pmd-ruleset.xml +++ b/java/pmd-ruleset.xml @@ -6,31 +6,41 @@ Sample ruleset - - - + + + + + + - - - - - - + + + + - - - - - - - + + + + + + - - - - - + + + + + + - + + + + + + + + + + diff --git a/java/private/contrib_rules_jvm_deps.zip b/java/private/contrib_rules_jvm_deps.zip index b02451e425a1aeb2bc780eb70ffd69b8390ebcd2..ea61551ae62c58e2a5f6ece386cc5ea5aa4b3ca6 100644 GIT binary patch literal 357606 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

54-}Cl^2^phPH|aKo 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 z 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 SO4eV6fA1z06=PrJvGxBjvwV&K diff --git a/java/private/pmd.bzl b/java/private/pmd.bzl index 9c17732f..5e005a81 100644 --- a/java/private/pmd.bzl +++ b/java/private/pmd.bzl @@ -6,6 +6,8 @@ def _pmd_test_impl(ctx): cmd = [ pmd_info.binary.short_path, + "check", + "--no-progress", ] # We want to disable the suggestion to use the analysis cache diff --git a/java/private/pmd_ruleset.bzl b/java/private/pmd_ruleset.bzl index 9fb1223d..676998ea 100644 --- a/java/private/pmd_ruleset.bzl +++ b/java/private/pmd_ruleset.bzl @@ -1,6 +1,6 @@ def pmd_binary( name, - main_class = "net.sourceforge.pmd.PMD", + main_class = "net.sourceforge.pmd.cli.PmdCli", deps = None, runtime_deps = None, srcs = None, diff --git a/java/test/com/github/bazel_contrib/contrib_rules_jvm/javaparser/generators/ClasspathParserTest.java b/java/test/com/github/bazel_contrib/contrib_rules_jvm/javaparser/generators/ClasspathParserTest.java index 10e2f606..9f360242 100644 --- a/java/test/com/github/bazel_contrib/contrib_rules_jvm/javaparser/generators/ClasspathParserTest.java +++ b/java/test/com/github/bazel_contrib/contrib_rules_jvm/javaparser/generators/ClasspathParserTest.java @@ -10,6 +10,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -398,11 +399,7 @@ public void testClassExports() throws IOException { } private TreeSet treeSet(T... values) { - TreeSet set = new TreeSet<>(); - for (T value : values) { - set.add(value); - } - return set; + return new TreeSet<>(Arrays.asList(values)); } @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( diff --git a/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/HangingThreadTest.java b/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/HangingThreadTest.java index e4086a35..1c02e560 100644 --- a/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/HangingThreadTest.java +++ b/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/HangingThreadTest.java @@ -17,6 +17,7 @@ public class HangingThreadTest { Thread.sleep(Long.MAX_VALUE); } catch (InterruptedException e) { // Swallow + Thread.currentThread().interrupt(); } }); diff --git a/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/SafeXmlTest.java b/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/SafeXmlTest.java index 600be04c..427a6b9a 100644 --- a/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/SafeXmlTest.java +++ b/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/SafeXmlTest.java @@ -24,22 +24,24 @@ public class SafeXmlTest { @Test public void properlyEscapesCDataSection() throws XMLStreamException, ParserConfigurationException, IOException, SAXException { - Writer writer = new StringWriter(); - XMLStreamWriter xml = XMLOutputFactory.newDefaultFactory().createXMLStreamWriter(writer); + try (Writer writer = new StringWriter()) { + XMLStreamWriter xml = XMLOutputFactory.newDefaultFactory().createXMLStreamWriter(writer); - xml.writeStartDocument("UTF-8", "1.0"); - // Output the "end of cdata" marker - SafeXml.writeTextElement(xml, "container", "]]>"); - xml.writeEndDocument(); + xml.writeStartDocument("UTF-8", "1.0"); + // Output the "end of cdata" marker + SafeXml.writeTextElement(xml, "container", "]]>"); + xml.writeEndDocument(); - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder; - Reader reader = new StringReader(writer.toString()); - builder = factory.newDocumentBuilder(); - Document parsed = builder.parse(new InputSource(reader)); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder; + try (Reader reader = new StringReader(writer.toString())) { + builder = factory.newDocumentBuilder(); + Document parsed = builder.parse(new InputSource(reader)); - Node container = parsed.getElementsByTagName("container").item(0); + Node container = parsed.getElementsByTagName("container").item(0); - assertEquals("]]>", container.getTextContent()); + assertEquals("]]>", container.getTextContent()); + } + } } } diff --git a/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/TestRunningSecurityManagerTest.java b/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/TestRunningSecurityManagerTest.java index bfe27527..4cddf801 100644 --- a/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/TestRunningSecurityManagerTest.java +++ b/java/test/com/github/bazel_contrib/contrib_rules_jvm/junit5/TestRunningSecurityManagerTest.java @@ -26,7 +26,7 @@ void shouldDelegateToExistingSecurityManagerIfPresent() { new SecurityManager() { @Override public void checkPermission(Permission perm) { - if (permission == perm) { + if (permission.equals(perm)) { throw new SecurityException("Oh noes!"); } }