[ 
https://issues.apache.org/jira/browse/MPMD-379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17829628#comment-17829628
 ] 

ASF GitHub Bot commented on MPMD-379:
-------------------------------------

adangel commented on code in PR #144:
URL: https://github.com/apache/maven-pmd-plugin/pull/144#discussion_r1534120578


##########
pom.xml:
##########
@@ -83,7 +83,7 @@ under the License.
   <properties>
     <mavenVersion>3.2.5</mavenVersion>
     <javaVersion>8</javaVersion>
-    <pmdVersion>6.55.0</pmdVersion>
+    <pmdVersion>7.0.0-rc4</pmdVersion>

Review Comment:
   I'm going to release PMD 7.0.0 tomorrow. After that, we can use directly 
7.0.0 here.
   Note, that there will be a few more changes required...
   
   Also, please add a new row in 
https://github.com/apache/maven-pmd-plugin/blob/master/src/site/apt/examples/upgrading-PMD-at-runtime.apt.vm#L91
 
   This should document the default pmd version, that is used by 
maven-pmd-plugin - and this is determined by this property here.



##########
src/it/MPMD-244-logging/verify.groovy:
##########
@@ -20,12 +20,13 @@
 File buildLog = new File( basedir, 'build.log' )
 assert buildLog.exists()
 assert buildLog.text.contains( "PMD processing errors" )
-assert buildLog.text.contains( "Error while parsing" )
+assert buildLog.text.contains( "Parse exception in file" )
 
 String disabledPath = new File( basedir, 
'logging-disabled/src/main/java/BrokenFile.java' ).getCanonicalPath()
 String enabledPath = new File( basedir, 
'logging-enabled/src/main/java/BrokenFile.java' ).getCanonicalPath()
 
 // logging disabled: the pmd exception is only output through the processing 
error reporting (since MPMD-246)
-assert 1 == buildLog.text.count( "net.sourceforge.pmd.PMDException: Error 
while parsing ${disabledPath}" )
+assert 1 == buildLog.text.count( "net.sourceforge.pmd.lang.ast.ParseException: 
Parse exception in file \'${disabledPath}\'" )
 // logging enabled: the pmd exception is output twice: through the processing 
error reporting (since MPMD-246) and through PMD's own logging
-assert 2 == buildLog.text.count( "net.sourceforge.pmd.PMDException: Error 
while parsing ${enabledPath}" )
+// not true anymore, logged always once
+assert 1 == buildLog.text.count( "net.sourceforge.pmd.lang.ast.ParseException: 
Parse exception in file \'${enabledPath}\'" )

Review Comment:
   I think, this deserves a little bit more work. I noted in my personal branch:
   
   ```
   // build.log contains the logging from the two PMD executions
   // only one execution has logging enabled, so we expect only one log output
   // TODO assert 1 == buildLog.text.count( "[DEBUG] Rules loaded from" )
   // TODO logging is always enabled and can't be disabled, because PMD 7 
switched to slf4j
   ```
   
   Which essentially means, that the property 
[showPmdLog](https://maven.apache.org/plugins/maven-pmd-plugin/pmd-mojo.html#showPmdLog)
 is broken now. Either we need to deprecate it and eventually remove it, or we 
need to fix it.
   



##########
src/main/java/org/apache/maven/plugins/pmd/ExcludeViolationsFromFile.java:
##########
@@ -84,8 +84,10 @@ public boolean isExcludedFromFailure(final Violation 
errorDetail) {
      * @return <code>true</code> if the violation should be excluded, 
<code>false</code> otherwise.
      */
     public boolean isExcludedFromFailure(final RuleViolation errorDetail) {
-        final String className =
-                extractClassName(errorDetail.getPackageName(), 
errorDetail.getClassName(), errorDetail.getFilename());
+        final String className = extractClassName(
+                errorDetail.getPackageName(),
+                errorDetail.getClassName(),
+                errorDetail.getFileId().getAbsolutePath());

Review Comment:
   This will change in final PMD 7.0.0, see here for the needed change:
   
   
https://github.com/apache/maven-pmd-plugin/blob/02910c902b168ce14ef948d65db7b239a5ee56c4/src/main/java/org/apache/maven/plugins/pmd/ExcludeViolationsFromFile.java#L87-L92
   



##########
src/main/java/org/apache/maven/plugins/pmd/exec/PmdExecutor.java:
##########
@@ -190,7 +189,7 @@ private PmdResult run() throws MavenReportException {
         configuration.setRuleSets(request.getRulesets());
         
configuration.setMinimumPriority(RulePriority.valueOf(request.getMinimumPriority()));
         if (request.getBenchmarkOutputLocation() != null) {
-            configuration.setBenchmark(true);
+            TimeTracker.startGlobalTracking();

Review Comment:
   Does this feature still work? It is enabled with the property 
[benchmark](https://maven.apache.org/plugins/maven-pmd-plugin/pmd-mojo.html#benchmark)



##########
src/it/MPMD-258-multiple-executions/invoker.properties:
##########
@@ -15,5 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
+invoker.debug = true

Review Comment:
   this might not be needed?
   
   Update: ok, yes it is needed. Can you please update verify.groovy for this 
test to explain it, similar what I have done here:
   
   
https://github.com/apache/maven-pmd-plugin/blob/02910c902b168ce14ef948d65db7b239a5ee56c4/src/it/MPMD-258-multiple-executions/verify.groovy#L24
   
   and
   
   
https://github.com/apache/maven-pmd-plugin/blob/02910c902b168ce14ef948d65db7b239a5ee56c4/src/it/MPMD-258-multiple-executions/verify.groovy#L28
   



##########
src/main/java/org/apache/maven/plugins/pmd/exec/CpdExecutor.java:
##########
@@ -158,43 +157,44 @@ private CpdResult run() throws MavenReportException {
 
         Language cpdLanguage;
         if ("java".equals(request.getLanguage()) || null == 
request.getLanguage()) {
-            cpdLanguage = new JavaLanguage(request.getLanguageProperties());
+            cpdLanguage = new JavaLanguageModule();
         } else if ("javascript".equals(request.getLanguage())) {
-            cpdLanguage = new EcmascriptLanguage();
+            cpdLanguage = new EcmascriptLanguageModule();
         } else if ("jsp".equals(request.getLanguage())) {
-            cpdLanguage = new JSPLanguage();
+            cpdLanguage = new JspLanguageModule();
         } else {
-            cpdLanguage = 
LanguageFactory.createLanguage(request.getLanguage(), 
request.getLanguageProperties());
+            cpdLanguage = 
cpdConfiguration.getLanguageRegistry().getLanguageById(request.getLanguage());
         }
 
-        cpdConfiguration.setLanguage(cpdLanguage);
-        cpdConfiguration.setSourceEncoding(request.getSourceEncoding());
+        cpdConfiguration.setOnlyRecognizeLanguage(cpdLanguage);
+        
cpdConfiguration.setSourceEncoding(Charset.forName(request.getSourceEncoding()));
 
-        CPD cpd = new CPD(cpdConfiguration);
-        try {
-            cpd.add(request.getFiles());
-        } catch (IOException e) {
-            throw new MavenReportException(e.getMessage(), e);
-        }
+        request.getFiles().forEach(f -> 
cpdConfiguration.addInputPath(f.toPath()));
 
         LOG.debug("Executing CPD...");
-        cpd.go();
-        LOG.debug("CPD finished.");
 
         // always create XML format. we need to output it even if the file 
list is empty or we have no duplications
         // so the "check" goals can check for violations
-        writeXmlReport(cpd);
+        CpdAnalysis cpd = CpdAnalysis.create(cpdConfiguration);

Review Comment:
   CpdAnalysis should be used within a try-with-resources statement



##########
src/main/java/org/apache/maven/plugins/pmd/exec/CpdExecutor.java:
##########
@@ -158,43 +157,44 @@ private CpdResult run() throws MavenReportException {
 
         Language cpdLanguage;
         if ("java".equals(request.getLanguage()) || null == 
request.getLanguage()) {
-            cpdLanguage = new JavaLanguage(request.getLanguageProperties());

Review Comment:
   The languageProperties are not used anymore now.
   
   These are needed for the properties like 
[ignoreAnnotations](https://maven.apache.org/plugins/maven-pmd-plugin/cpd-mojo.html#ignoreAnnotations).
   
   With PMD 7, these flags need to be set now directly on cpdConfiguration, e.g.
   
   ```
   cpdConfiguration.setIgnoreAnnotations(...)
   ```
   





> Support PMD 7.0.0
> -----------------
>
>                 Key: MPMD-379
>                 URL: https://issues.apache.org/jira/browse/MPMD-379
>             Project: Maven PMD Plugin
>          Issue Type: Improvement
>          Components: CPD, PMD
>            Reporter: Andreas Dangel
>            Assignee: Andreas Dangel
>            Priority: Major
>
> Add support for the new major version of PMD.
> This has some non-backward compatible changes. Upgrading m-pmd-p to PMD 7 
> most likely means, that only PMD 7 will be supported onwards (no backwards 
> compatibility supported).
> wip branch: [https://github.com/apache/maven-pmd-plugin/compare/master...pmd7]
>  
> A snapshot version that is compatible with the current 7.0.0 release 
> candidates is available here as version {*}3.21.1-pmd-7-SNAPSHOT{*}:
> {code:java}
>         <pluginRepository>
>             <id>apache.snapshots</id>
>             <name>Apache Snapshot Repository</name>
>             <url>https://repository.apache.org/snapshots</url>
>             <releases>
>                 <enabled>false</enabled>
>             </releases>
>             <snapshots>
>                 <enabled>true</enabled>
>             </snapshots>
>         </pluginRepository> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to