Merge branch 'master' into 7.0.x

This commit is contained in:
Clément Fournier
2021-05-06 12:52:34 +02:00
11 changed files with 80 additions and 18 deletions

View File

@@ -12,6 +12,7 @@ on:
schedule:
# build it monthly: At 04:00 on day-of-month 1.
- cron: '0 4 1 * *'
workflow_dispatch:
jobs:
build:
@@ -44,7 +45,7 @@ jobs:
run: |
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3 -DautoReleaseAfterClose=true -DstagingProgressTimeoutMinutes=30" >> $GITHUB_ENV
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/11/scripts" >> $GITHUB_ENV
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/12/scripts" >> $GITHUB_ENV
- name: Check Environment
shell: bash
run: |

View File

@@ -22,7 +22,7 @@ jobs:
shell: bash
run: |
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/11/scripts" >> $GITHUB_ENV
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/12/scripts" >> $GITHUB_ENV
- name: Sync
run: .ci/git-repo-sync.sh
shell: bash

View File

@@ -31,7 +31,7 @@ jobs:
run: |
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
echo "MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3 -DstagingProgressTimeoutMinutes=30" >> $GITHUB_ENV
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/11/scripts" >> $GITHUB_ENV
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/12/scripts" >> $GITHUB_ENV
- name: Check Environment
shell: bash
run: |

View File

@@ -39,14 +39,14 @@ GEM
kramdown (1.17.0)
liquid (5.0.1)
logger-colors (1.0.0)
mini_portile2 (2.5.0)
mini_portile2 (2.5.1)
multipart-post (2.1.1)
nap (1.1.0)
no_proxy_fix (0.1.2)
nokogiri (1.11.3)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
octokit (4.20.0)
octokit (4.21.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
open4 (1.3.4)

View File

@@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.3.6)
activesupport (6.0.3.7)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
@@ -22,15 +22,19 @@ GEM
em-websocket (0.5.2)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
ethon (0.12.0)
ffi (>= 1.3.0)
ethon (0.14.0)
ffi (>= 1.15.0)
eventmachine (1.2.7)
execjs (2.7.0)
faraday (1.3.0)
faraday (1.4.1)
faraday-excon (~> 1.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
multipart-post (>= 1.2, < 3)
ruby2_keywords
ruby2_keywords (>= 0.0.4)
faraday-excon (1.1.0)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.1.0)
ffi (1.15.0)
forwardable-extended (2.6.0)
gemoji (3.0.1)
@@ -205,17 +209,17 @@ GEM
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6)
mini_portile2 (2.5.0)
mini_portile2 (2.5.1)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
minitest (5.14.4)
multipart-post (2.1.1)
nokogiri (1.11.2)
nokogiri (1.11.3)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
octokit (4.20.0)
octokit (4.21.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.16.2)
@@ -225,7 +229,7 @@ GEM
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.4)
rexml (3.2.5)
rouge (3.26.0)
ruby-enum (0.9.0)
i18n

View File

@@ -23,6 +23,8 @@ This is a {{ site.pmd.release_type }} release.
* doc
* [#3230](https://github.com/pmd/pmd/issues/3230): \[doc] Remove "Edit me" button for language index pages
* java-codestyle
* [#2655](https://github.com/pmd/pmd/issues/2655): \[java] UnnecessaryImport false positive for on-demand imports
### API Changes

View File

@@ -24,6 +24,7 @@ import net.sourceforge.pmd.lang.java.ast.ASTPrimaryPrefix;
import net.sourceforge.pmd.lang.java.ast.ASTPrimarySuffix;
import net.sourceforge.pmd.lang.java.ast.Comment;
import net.sourceforge.pmd.lang.java.ast.FormalComment;
import net.sourceforge.pmd.lang.java.ast.JavaNode;
import net.sourceforge.pmd.lang.java.ast.TypeNode;
import net.sourceforge.pmd.lang.java.ast.internal.ImportWrapper;
import net.sourceforge.pmd.lang.java.ast.internal.PrettyPrintingUtil;
@@ -156,7 +157,7 @@ public class UnnecessaryImportRule extends AbstractJavaRule {
* Remove the import wrapper that imports the name referenced by the
* given node.
*/
protected void check(Node referenceNode, RuleContext ruleCtx) {
protected void check(JavaNode referenceNode, RuleContext ruleCtx) {
if (imports.isEmpty()) {
return;
}
@@ -179,6 +180,20 @@ public class UnnecessaryImportRule extends AbstractJavaRule {
}
}
// check on-demand imports
it = imports.iterator();
while (it.hasNext()) {
ImportWrapper i = it.next();
if (!i.isStaticOnDemand() && i.isOnDemand()) {
String possibleClassName = i.getFullName() + "." + candName;
Class<?> possibleClazz = referenceNode.getRoot().getClassTypeResolver()
.loadClassOrNull(possibleClassName);
if (possibleClazz != null) {
it.remove();
}
}
}
// check static on-demand imports
it = imports.iterator();
while (it.hasNext()) {

View File

@@ -0,0 +1,13 @@
/*
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.java.rule.codestyle.unnecessaryimport.package1;
import net.sourceforge.pmd.lang.java.rule.codestyle.unnecessaryimport.package2.*; // SUPPRESS CHECKSTYLE needed for test case
public class U {
private void g() {
String k = C.V;
}
}

View File

@@ -0,0 +1,11 @@
/*
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.java.rule.codestyle.unnecessaryimport.package2;
public class C {
private C() { }
public static final String V = "";
}

View File

@@ -898,4 +898,20 @@ class NPEImport {}
}
]]></code>
</test-code>
<test-code>
<description>[java] UnnecessaryImport false positive for on-demand imports #2655</description>
<expected-problems>0</expected-problems>
<code><![CDATA[
package net.sourceforge.pmd.lang.java.rule.codestyle.unnecessaryimport.package1;
import net.sourceforge.pmd.lang.java.rule.codestyle.unnecessaryimport.package2.*; // SUPPRESS CHECKSTYLE needed for test case
public class U {
private void g() {
String k = C.V;
}
}
]]></code>
</test-code>
</test-data>

View File

@@ -92,8 +92,8 @@
<javacc.version>5.0</javacc.version>
<surefire.version>3.0.0-M5</surefire.version>
<checkstyle.version>8.30</checkstyle.version>
<checkstyle.plugin.version>3.1.1</checkstyle.plugin.version>
<checkstyle.version>8.42</checkstyle.version>
<checkstyle.plugin.version>3.1.2</checkstyle.plugin.version>
<pmd.plugin.version>3.14.0</pmd.plugin.version>
<ant.version>1.10.9</ant.version>
<javadoc.plugin.version>3.2.0</javadoc.plugin.version>
@@ -105,7 +105,7 @@
<argLine>-Xmx512m -Dfile.encoding=${project.build.sourceEncoding}</argLine>
<pmd.build-tools.version>11</pmd.build-tools.version>
<pmd.build-tools.version>12</pmd.build-tools.version>
<pmd-designer.version>6.27.0</pmd-designer.version>
<javacc.jar>${settings.localRepository}/net/java/dev/javacc/javacc/${javacc.version}/javacc-${javacc.version}.jar</javacc.jar>