forked from phoedos/pmd
4007 lines
251 KiB
HTML
4007 lines
251 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<meta name="description" content="">
|
||
<meta name="keywords" content=" changelog, release notes">
|
||
<title>PMD Release Notes | PMD Source Code Analyzer</title>
|
||
|
||
|
||
<link rel="stylesheet" type="text/css" href="assets/fontawesome-free-5.15.4-web/css/all.min.css">
|
||
<link rel="stylesheet" type="text/css" href="assets/bootstrap-4.5.2-dist/css/bootstrap.min.css">
|
||
|
||
<link rel="stylesheet" type="text/css" href="css/syntax.css">
|
||
<link rel="stylesheet" type="text/css" href="css/modern-business.css">
|
||
<link rel="stylesheet" type="text/css" href="css/customstyles.css">
|
||
<link rel="stylesheet" type="text/css" href="css/theme-green.css">
|
||
<link rel="stylesheet" type="text/css" href="css/pmd-customstyles.css">
|
||
|
||
<link rel="shortcut icon" href="images/logo/favicon.ico" type="image/x-icon">
|
||
<link rel="icon" href="images/logo/favicon.ico" type="image/x-icon">
|
||
|
||
<link rel="alternate" type="application/rss+xml" title="" href="feed.xml">
|
||
|
||
</head>
|
||
<body>
|
||
<!-- Content is offset by the height of the topnav bar. -->
|
||
<!-- There's already a padding-top rule in modern-business.css, but it apparently doesn't work on Firefox 60 and Chrome 67 -->
|
||
<div id="topbar-content-offset">
|
||
<!-- Navigation -->
|
||
<nav class="navbar navbar-expand-lg fixed-top navbar-dark">
|
||
<div class="container topnavlinks">
|
||
<a class="navbar-brand fas fa-home fa-lg" href="index.html"> <span class="projectTitle"> PMD Source Code Analyzer Project</span></a>
|
||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||
<span class="navbar-toggler-icon"></span>
|
||
</button>
|
||
|
||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||
<ul class="navbar-nav mr-auto mt-2 mt-lg-0"></ul>
|
||
<ul class="navbar-nav">
|
||
<!-- toggle sidebar button -->
|
||
<li class="nav-item"><a id="tg-sb-link" class="nav-link" href="#"><i id="tg-sb-icon" class="fas fa-toggle-on"></i> Nav</a></li>
|
||
<!-- entries without drop-downs appear here -->
|
||
|
||
|
||
|
||
<li class="nav-item"><a class="nav-link" href="https://github.com/pmd/pmd/releases/latest" target="_blank">Download</a></li>
|
||
|
||
|
||
|
||
<li class="nav-item"><a class="nav-link" href="https://github.com/pmd/pmd" target="_blank">Fork us on github</a></li>
|
||
|
||
|
||
|
||
<!-- entries with drop-downs appear here -->
|
||
<!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
|
||
|
||
</ul>
|
||
<form class="form-inline my-2 my-lg-0">
|
||
<input class="form-control mr-sm-2" type="search" placeholder="search..." id="search-input">
|
||
<ul id="results-container"></ul>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- Page Content -->
|
||
<div class="container-toc-wrapper">
|
||
<div class="container">
|
||
<div class="col-lg-12"> </div>
|
||
<!-- Content Row -->
|
||
<div class="row">
|
||
|
||
|
||
<!-- Sidebar Column -->
|
||
<div class="col-md-3" id="tg-sb-sidebar">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul id="mysidebar" class="nav">
|
||
<li class="sidebarTitle">PMD 7.0.0-SNAPSHOT</li>
|
||
<div class="sidebarTitleDate">Release date: ??-?????-2023</div>
|
||
|
||
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a href="#">About</a>
|
||
|
||
<ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="index.html">Home</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="active"><a href="pmd_release_notes.html">Release notes</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_release_notes_pmd7.html">Release notes (PMD 7)</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_about_help.html">Getting help</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a href="#">User Documentation</a>
|
||
|
||
<ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_migrating_to_pmd7.html">Migration Guide for PMD 7</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_installation.html">Installation and basic CLI usage</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_making_rulesets.html">Making rulesets</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_configuring_rules.html">Configuring rules</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_best_practices.html">Best practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_suppressing_warnings.html">Suppressing warnings</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_incremental_analysis.html">Incremental analysis</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_cli_reference.html">PMD CLI reference</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_report_formats.html">PMD Report formats</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_3rdpartyrulesets.html">3rd party rulesets</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">CPD reference</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_cpd.html">Copy-paste detection</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_cpd_report_formats.html">CPD Report formats</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Extending PMD</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_writing_rules_intro.html">Introduction to writing rules</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_your_first_rule.html">Your first rule</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_writing_xpath_rules.html">XPath rules</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_writing_java_rules.html">Java rules</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_designer_reference.html">Rule designer reference</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_defining_properties.html">Defining rule properties</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_rule_guidelines.html">Rule guidelines</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_testing.html">Testing your rules</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_extending_ast_dump.html">Creating (XML) dump of the AST</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Tools / Integrations</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_tools_maven.html">Maven PMD Plugin</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_tools_gradle.html">Gradle</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_tools_ant.html">Ant</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_tools_java_api.html">PMD Java API</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_tools_bld.html">bld PMD Extension</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_tools_ci.html">CI integrations</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_userdocs_tools.html">Other Tools / Integrations</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a href="#">Rule Reference</a>
|
||
|
||
<ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Apex Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex_codestyle.html">Code Style</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex_design.html">Design</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex_documentation.html">Documentation</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex_performance.html">Performance</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_apex_security.html">Security</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">HTML Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_html.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_html_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Java Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_codestyle.html">Code Style</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_design.html">Design</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_documentation.html">Documentation</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_multithreading.html">Multithreading</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_performance.html">Performance</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_java_security.html">Security</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Java Server Pages Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_jsp.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_jsp_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_jsp_codestyle.html">Code Style</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_jsp_design.html">Design</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_jsp_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_jsp_security.html">Security</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">JavaScript Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_ecmascript.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_ecmascript_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_ecmascript_codestyle.html">Code Style</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_ecmascript_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Kotlin Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_kotlin.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_kotlin_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_kotlin_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Maven POM Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_pom.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_pom_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Modelica Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_modelica.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_modelica_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">PLSQL Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_plsql.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_plsql_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_plsql_codestyle.html">Code Style</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_plsql_design.html">Design</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_plsql_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Salesforce Visualforce Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_vf.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_vf_security.html">Security</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Scala Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_scala.html">Index</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Swift Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_swift.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_swift_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_swift_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Velocity Template Language (VTL) Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_vm.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_vm_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_vm_design.html">Design</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_vm_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">WSDL Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_wsdl.html">Index</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">XML Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_xml.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_xml_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_xml_errorprone.html">Error Prone</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">XSL Rules</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_xsl.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_xsl_codestyle.html">Code Style</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_xsl_performance.html">Performance</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a href="#">Language-Specific Documentation</a>
|
||
|
||
<ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_index.html">Overview</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_configuration.html">Language configuration</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_apex.html">Apex</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_cpp.html">C/C++</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_cs.html">C#</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_coco.html">Coco</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_dart.html">Dart</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_fortran.html">Fortran</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_gherkin.html">Gherkin</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_go.html">Go</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_html.html">HTML</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_java.html">Java</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_js_ts.html">JavaScript / TypeScript</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_jsp.html">JSP</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_julia.html">Julia</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_kotlin.html">Kotlin</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_lua.html">Lua</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_matlab.html">Matlab</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_modelica.html">Modelica</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_objectivec.html">Objective-C</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_perl.html">Perl</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_php.html">PHP</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_plsql.html">PLSQL</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_python.html">Python</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_ruby.html">Ruby</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_scala.html">Scala</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_swift.html">Swift</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_tsql.html">T-SQL</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_visualforce.html">Visualforce</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_vm.html">Velocity Template Language (VTL)</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_languages_xml.html">XML and XML dialects</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a href="#">Developer Documentation</a>
|
||
|
||
<ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_development.html">Developer resources</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_building.html">Building PMD from source</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="https://github.com/pmd/pmd/blob/master/CONTRIBUTING.md" target="_blank">Contributing</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_writing_documentation.html">Writing documentation</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_roadmap.html">Roadmap</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_how_pmd_works.html">How PMD works</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_pmdtester.html">Pmdtester</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_rule_deprecation_policy.html">Rule Deprecation Policy</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Major contributions</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_major_rule_guidelines.html">Rule Guidelines</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_major_adding_new_language_javacc.html">Adding a new language (JavaCC)</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_major_adding_new_language_antlr.html">Adding a new language (ANTLR)</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_devdocs_major_adding_new_cpd_language.html">Adding a new CPD language</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Experimental features</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="tag_experimental.html">List of experimental Features</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a href="#">Project documentation</a>
|
||
|
||
<ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Trivia about PMD</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_trivia_news.html">PMD in the press</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_trivia_products.html">Products & books related to PMD</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_trivia_similarprojects.html">Similar projects</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_trivia_meaning.html">What does 'PMD' mean?</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_logo.html">Logo</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_faq.html">FAQ</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="license.html">License</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_credits.html">Credits</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_release_notes_old.html">Old release notes</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_decisions.html">Decisions</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="subfolders">
|
||
<a href="#">Project management</a>
|
||
<ul>
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_committers_infrastructure.html">Infrastructure</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_committers_releasing.html">Release process</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_committers_merging_pull_requests.html">Merging pull requests</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_projectdocs_committers_main_landing_page.html">Main Landing page</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<!-- Content Column -->
|
||
<div class="col-md-9" id="tg-sb-content">
|
||
<header>
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<a href="./" role="button"
|
||
><i class="fa fa-home fa-lg"></i
|
||
></a>
|
||
» PMD Release Notes
|
||
<a
|
||
target="_blank"
|
||
href="https://github.com/pmd/pmd/blob/master/docs/pages/release_notes.md"
|
||
class="float-right"
|
||
role="button"
|
||
><i class="fab fa-github fa-lg"></i> Edit on GitHub</a
|
||
>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<hr />
|
||
</header>
|
||
|
||
|
||
<div class="post-header">
|
||
<h1 class="post-title-main">PMD Release Notes</h1>
|
||
</div>
|
||
|
||
<div class="post-content" data-github-edit-url="https://github.com/pmd/pmd/blob/master/docs/pages/release_notes.md">
|
||
|
||
|
||
<details id="inline-toc-details">
|
||
<summary>Table of Contents</summary>
|
||
<div id="inline-toc"><!-- empty, move TOC here when screen size too small --></div>
|
||
</details>
|
||
|
||
|
||
<h2 id="--2023---700-snapshot">??-?????-2023 - 7.0.0-SNAPSHOT</h2>
|
||
|
||
<p>We’re excited to bring you the next major version of PMD!</p>
|
||
|
||
<p>Since this is a big release, we provide here only a concise version of the release notes. We prepared a separate
|
||
page with the full <a href="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7.0.0</a>.</p>
|
||
|
||
<div style="border: 1px solid; border-radius: .25rem; padding: .75rem 1.25rem;" role="alert">
|
||
<strong>ℹ️ Release Candidates</strong>
|
||
<p>PMD 7.0.0 is finally almost ready. In order to gather feedback, we are going to ship a couple of release candidates.
|
||
These are officially available on GitHub and Maven Central and can be used as usual (e.g. as a dependency).
|
||
We encourage you to try out the new features, but keep in mind that we may introduce API breaking changes between
|
||
the release candidates. It should be stable enough if you don't use custom rules.</p>
|
||
|
||
<p>We have still some tasks planned for the next release candidates.
|
||
You can see the progress in <a href="https://github.com/pmd/pmd/issues/3898">PMD 7 Tracking Issue #3898</a>.</p>
|
||
|
||
<p>If you find any problem or difficulty while updating from PMD 6, please provide feedback via our
|
||
<a href="https://github.com/pmd/pmd/issues/new/choose">issue tracker</a>. That way we can improve the experience
|
||
for all.</p>
|
||
</div>
|
||
|
||
<h3 id="changes-since-700-rc4">Changes since 7.0.0-rc4</h3>
|
||
|
||
<p>This section lists the most important changes from the last release candidate.
|
||
The remaining section describes the complete release notes for 7.0.0.</p>
|
||
|
||
<h4 id="new-and-noteworthy">New and Noteworthy</h4>
|
||
|
||
<h5 id="maven-pmd-plugin-compatibility-with-pmd-7">Maven PMD Plugin compatibility with PMD 7</h5>
|
||
|
||
<p>In order to use PMD 7 with <a href="https://maven.apache.org/plugins/maven-pmd-plugin/">maven-pmd-plugin</a> a new
|
||
compatibility module has been created. This allows to use PMD 7 by simply adding one additional dependency:</p>
|
||
|
||
<ol>
|
||
<li>Follow the guide <a href="https://maven.apache.org/plugins/maven-pmd-plugin/examples/upgrading-PMD-at-runtime.html">Upgrading PMD at Runtime</a></li>
|
||
<li>Add additionally the following dependency:</li>
|
||
</ol>
|
||
|
||
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><dependency></span>
|
||
<span class="nt"><groupId></span>net.sourceforge.pmd<span class="nt"></groupId></span>
|
||
<span class="nt"><artifactId></span>pmd-compat6<span class="nt"></artifactId></span>
|
||
<span class="nt"><version></span>${pmdVersion}<span class="nt"></version></span>
|
||
<span class="nt"></dependency></span>
|
||
</code></pre></div></div>
|
||
|
||
<p>It is important to add this dependency as the <strong>first</strong> in the list, so that maven-pmd-plugin sees the (old)
|
||
compatible versions of some classes.</p>
|
||
|
||
<p>This module is available beginning with version 7.0.0-rc4 and will be there at least for the first
|
||
final version PMD 7 (7.0.0). It’s not decided yet, whether we will keep updating it, after PMD 7 is finally
|
||
released.</p>
|
||
|
||
<p>Note: This compatibility module only works for the built-in rules, that are still available in PMD 7. E.g. you need
|
||
to review your rulesets and look out for deprecated rules and such. See the use case
|
||
<a href="pmd_userdocs_migrating_to_pmd7.html#im-using-only-built-in-rules">I’m using only built-in rules</a>
|
||
in the <a href="pmd_userdocs_migrating_to_pmd7.html">Migration Guide for PMD 7</a>.</p>
|
||
|
||
<p>As PMD 7 revamped the Java module, if you have custom rules, you need to migrate these rules.
|
||
See the use case <a href="pmd_userdocs_migrating_to_pmd7.html#im-using-custom-rules">I’m using custom rules</a>
|
||
in the Migration Guide.</p>
|
||
|
||
<h5 id="swift-support">Swift Support</h5>
|
||
|
||
<ul>
|
||
<li>limited support for Swift 5.9 (Macro Expansions)</li>
|
||
</ul>
|
||
|
||
<h5 id="groovy-support-cpd">Groovy Support (CPD)</h5>
|
||
|
||
<ul>
|
||
<li>We now support parsing all Groovy features from Groovy 3 and 4.</li>
|
||
<li>We now support <a href="pmd_userdocs_cpd.html#suppression">suppression</a> through <code class="language-plaintext highlighter-rouge">CPD-ON</code>/<code class="language-plaintext highlighter-rouge">CPD-OFF</code> comment pairs.</li>
|
||
<li>See <a href="https://github.com/pmd/pmd/pull/4726">PR #4726</a> for details.</li>
|
||
</ul>
|
||
|
||
<h5 id="updated-pmd-designer">Updated PMD Designer</h5>
|
||
|
||
<p>This PMD release ships a new version of the pmd-designer.
|
||
For the changes, see</p>
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd-designer/releases/tag/7.0.0">PMD Designer Changelog (7.0.0)</a>.</li>
|
||
</ul>
|
||
|
||
<h5 id="apex-support-replaced-jorje-with-fully-open-source-front-end">Apex Support: Replaced Jorje with fully open source front-end</h5>
|
||
|
||
<p>When PMD added Apex support with version 5.5.0, it utilized the Apex Jorje library to parse Apex source
|
||
and generate an AST. This library is however a binary-blob provided as part of the
|
||
<a href="https://github.com/forcedotcom/salesforcedx-vscode">Salesforce Extensions for VS Code</a>, and it is closed-source.</p>
|
||
|
||
<p>This causes problems, if binary blobs are not allowed by e.g. a company-wide policy. In that case, the Jorje
|
||
library prevented that PMD Apex could be used at all.</p>
|
||
|
||
<p>Also having access to the source code, enhancements and modifications are easier to do.</p>
|
||
|
||
<p>Under the hood, we use two open source libraries instead:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/nawforce/apex-parser">apex-parser</a> by <a href="https://github.com/nawforce">Kevin Jones</a> (@nawforce)
|
||
This project provides the grammar for a ANTLR based parser.</li>
|
||
<li><a href="https://github.com/google/summit-ast">Summit-AST</a> by <a href="https://github.com/google">Google</a> (@google)
|
||
This project translates the ANTLR parse tree into an AST, that is similar to the AST Jorje provided.
|
||
Note: This is not an official Google product.</li>
|
||
</ul>
|
||
|
||
<p>Although the parsers is completely switched, there are only little known changes to the AST.
|
||
These are documented in the <a href="pmd_userdocs_migrating_to_pmd7.html#apex-ast">Migration Guide for PMD 7: Apex AST</a>.</p>
|
||
|
||
<p>See <a href="https://github.com/pmd/pmd/issues/3766">#3766</a> for details.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google),
|
||
<a href="https://github.com/eklimo">Edward Klimoshenko</a> (@eklimo)</p>
|
||
|
||
<h5 id="changed-html-support">Changed: HTML support</h5>
|
||
|
||
<p>Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this
|
||
is now considered stable.</p>
|
||
|
||
<h5 id="changed-kotlin-support">Changed: Kotlin support</h5>
|
||
|
||
<p>Experimental Kotlin support has been promoted as stable API now.</p>
|
||
|
||
<h4 id="rule-changes">Rule Changes</h4>
|
||
|
||
<p><strong>New Rules</strong></p>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_apex_performance.html#operationwithhighcostinloop"><code class="language-plaintext highlighter-rouge">OperationWithHighCostInLoop</code></a> finds Schema class methods called in a loop, which is a
|
||
potential performance issue.</li>
|
||
<li><a href="pmd_rules_java_codestyle.html#useexplicittypes"><code class="language-plaintext highlighter-rouge">UseExplicitTypes</code></a> reports usages of <code class="language-plaintext highlighter-rouge">var</code> keyword, which was introduced with Java 10.</li>
|
||
<li><a href="pmd_rules_xml_bestpractices.html#missingencoding"><code class="language-plaintext highlighter-rouge">MissingEncoding</code></a> finds XML files without explicit encoding.</li>
|
||
</ul>
|
||
|
||
<p><strong>Changed Rules</strong></p>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a>: The rule has a new property to allow empty blocks when
|
||
they contain a comment (<code class="language-plaintext highlighter-rouge">allowCommentedBlocks</code>).</li>
|
||
</ul>
|
||
|
||
<p><strong>Removed Rules</strong></p>
|
||
|
||
<p>The following previously deprecated rules have been finally removed:</p>
|
||
|
||
<ul>
|
||
<li>Apex
|
||
<ul>
|
||
<li>performance.xml/AvoidSoqlInLoops <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_apex_performance.html#operationwithlimitsinloop"><code class="language-plaintext highlighter-rouge">OperationWithLimitsInLoop</code></a></li>
|
||
<li>performance.xml/AvoidSoslInLoops <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_apex_performance.html#operationwithlimitsinloop"><code class="language-plaintext highlighter-rouge">OperationWithLimitsInLoop</code></a></li>
|
||
<li>performance.xml/AvoidDmlStatementsInLoops <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_apex_performance.html#operationwithlimitsinloop"><code class="language-plaintext highlighter-rouge">OperationWithLimitsInLoop</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>Java
|
||
<ul>
|
||
<li>design.xml/ExcessiveClassLength <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_design.html#ncsscount"><code class="language-plaintext highlighter-rouge">NcssCount</code></a></li>
|
||
<li>design.xml/ExcessiveMethodLength <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_design.html#ncsscount"><code class="language-plaintext highlighter-rouge">NcssCount</code></a></li>
|
||
<li>errorprone.xml/BeanMembersShouldSerialize <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_errorprone.html#nonserializableclass"><code class="language-plaintext highlighter-rouge">NonSerializableClass</code></a></li>
|
||
<li>errorprone.xml/EmptyFinallyBlock <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
<li>errorprone.xml/EmptyIfStmt <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
<li>errorprone.xml/EmptyInitializer <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
<li>errorprone.xml/EmptyStatementBlock <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
<li>errorprone.xml/EmptyStatementNotInLoop <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#unnecessarysemicolon"><code class="language-plaintext highlighter-rouge">UnnecessarySemicolon</code></a></li>
|
||
<li>errorprone.xml/EmptySwitchStatements <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
<li>errorprone.xml/EmptySynchronizedBlock <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
<li>errorprone.xml/EmptyTryBlock <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
<li>errorprone.xml/EmptyWhileStmt <span style="font-size: small;">(deleted)</span> ➡️ use <a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Removed deprecated rulesets</strong></p>
|
||
|
||
<p>The following previously deprecated rulesets have been removed. These were the left-over rulesets from PMD 5.
|
||
The rules have been moved into categories with PMD 6.</p>
|
||
|
||
<ul>
|
||
<li>rulesets/apex/apexunit.xml</li>
|
||
<li>rulesets/apex/braces.xml</li>
|
||
<li>rulesets/apex/complexity.xml</li>
|
||
<li>rulesets/apex/empty.xml</li>
|
||
<li>rulesets/apex/metrics.xml</li>
|
||
<li>rulesets/apex/performance.xml</li>
|
||
<li>rulesets/apex/ruleset.xml</li>
|
||
<li>rulesets/apex/securty.xml</li>
|
||
<li>rulesets/apex/style.xml</li>
|
||
<li>rulesets/java/android.xml</li>
|
||
<li>rulesets/java/basic.xml</li>
|
||
<li>rulesets/java/clone.xml</li>
|
||
<li>rulesets/java/codesize.xml</li>
|
||
<li>rulesets/java/comments.xml</li>
|
||
<li>rulesets/java/controversial.xml</li>
|
||
<li>rulesets/java/coupling.xml</li>
|
||
<li>rulesets/java/design.xml</li>
|
||
<li>rulesets/java/empty.xml</li>
|
||
<li>rulesets/java/finalizers.xml</li>
|
||
<li>rulesets/java/imports.xml</li>
|
||
<li>rulesets/java/j2ee.xml</li>
|
||
<li>rulesets/java/javabeans.xml</li>
|
||
<li>rulesets/java/junit.xml</li>
|
||
<li>rulesets/java/logging-jakarta-commons.xml</li>
|
||
<li>rulesets/java/logging-java.xml</li>
|
||
<li>rulesets/java/metrics.xml</li>
|
||
<li>rulesets/java/migrating.xml</li>
|
||
<li>rulesets/java/migrating_to_13.xml</li>
|
||
<li>rulesets/java/migrating_to_14.xml</li>
|
||
<li>rulesets/java/migrating_to_15.xml</li>
|
||
<li>rulesets/java/migrating_to_junit4.xml</li>
|
||
<li>rulesets/java/naming.xml</li>
|
||
<li>rulesets/java/optimizations.xml</li>
|
||
<li>rulesets/java/strictexception.xml</li>
|
||
<li>rulesets/java/strings.xml</li>
|
||
<li>rulesets/java/sunsecure.xml</li>
|
||
<li>rulesets/java/typeresolution.xml</li>
|
||
<li>rulesets/java/unnecessary.xml</li>
|
||
<li>rulesets/java/unusedcode.xml</li>
|
||
<li>rulesets/ecmascript/basic.xml</li>
|
||
<li>rulesets/ecmascript/braces.xml</li>
|
||
<li>rulesets/ecmascript/controversial.xml</li>
|
||
<li>rulesets/ecmascript/unnecessary.xml</li>
|
||
<li>rulesets/jsp/basic.xml</li>
|
||
<li>rulesets/jsp/basic-jsf.xml</li>
|
||
<li>rulesets/plsql/codesize.xml</li>
|
||
<li>rulesets/plsql/dates.xml</li>
|
||
<li>rulesets/plsql/strictsyntax.xml</li>
|
||
<li>rulesets/plsql/TomKytesDespair.xml</li>
|
||
<li>rulesets/vf/security.xml</li>
|
||
<li>rulesets/vm/basic.xml</li>
|
||
<li>rulesets/pom/basic.xml</li>
|
||
<li>rulesets/xml/basic.xml</li>
|
||
<li>rulesets/xsl/xpath.xml</li>
|
||
<li>rulesets/releases/*</li>
|
||
</ul>
|
||
|
||
<h4 id="fixed-issues">Fixed issues</h4>
|
||
|
||
<ul>
|
||
<li>cli
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4594">#4594</a>: [cli] Change completion generation to runtime</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4685">#4685</a>: [cli] Clarify CPD documentation, fix positional parameter handling</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4723">#4723</a>: [cli] Launch fails for “bash pmd”</li>
|
||
</ul>
|
||
</li>
|
||
<li>core
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1027">#1027</a>: [core] Apply the new PropertyDescriptor<Pattern> type where applicable</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3903">#3903</a>: [core] Consolidate <code class="language-plaintext highlighter-rouge">n.s.pmd.reporting</code> package</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3905">#3905</a>: [core] Stabilize tree export API</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3917">#3917</a>: [core] Consolidate <code class="language-plaintext highlighter-rouge">n.s.pmd.lang.rule</code> package</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4065">#4065</a>: [core] Rename TokenMgrError to LexException, Tokenizer to CpdLexer</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4309">#4309</a>: [core] Cleanups in XPath area</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4312">#4312</a>: [core] Remove unnecessary property <code class="language-plaintext highlighter-rouge">color</code> and system property <code class="language-plaintext highlighter-rouge">pmd.color</code> in <code class="language-plaintext highlighter-rouge">TextColorRenderer</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4313">#4313</a>: [core] Remove support for <lang>-<ruleset> hyphen notation for ruleset references</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4314">#4314</a>: [core] Remove ruleset compatibility filter (RuleSetFactoryCompatibility) and CLI option <code class="language-plaintext highlighter-rouge">--no-ruleset-compatibility</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4348">#4348</a>: [core] Consolidate @<!-- -->InternalApi classes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4349">#4349</a>: [core] Cleanup remaining experimental and deprecated API</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4378">#4378</a>: [core] Ruleset loading processes commented rules</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4674">#4674</a>: [core] WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4694">#4694</a>: [core] Fix line/col numbers in TokenMgrError</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4717">#4717</a>: [core] XSLTRenderer doesn’t close report file</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4750">#4750</a>: [core] Fix flaky SummaryHTMLRenderer</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4782">#4782</a>: [core] Avoid using getImage/@<!-- -->Image</li>
|
||
</ul>
|
||
</li>
|
||
<li>doc
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/995">#995</a>: [doc] Document API evolution principles as ADR</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2511">#2511</a>: [doc] Review guides for writing java/xpath rules for correctness with PMD 7</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3175">#3175</a>: [doc] Document language module features</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4308">#4308</a>: [doc] Document XPath API @<!-- ->NoAttribute and @<!-- -->DeprecatedAttribute</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4319">#4319</a>: [doc] Document TypeRes API and Symbols API</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4659">#4659</a>: [doc] Improve ant documentation</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4669">#4669</a>: [doc] Add bld PMD Extension to Tools / Integrations</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4676">#4676</a>: [doc] Clarify how CPD <code class="language-plaintext highlighter-rouge">--ignore-literals</code> and <code class="language-plaintext highlighter-rouge">--ignore-identifiers</code> work</li>
|
||
</ul>
|
||
</li>
|
||
<li>miscellaneous
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4699">#4699</a>: Make PMD buildable with java 21</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4586">#4586</a>: Use explicit encoding in ruleset xml files</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4642">#4642</a>: Update regression tests with Java 21 language features</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4736">#4736</a>: [ci] Improve build procedure</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4741">#4741</a>: Add pmd-compat6 module for maven-pmd-plugin</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4749">#4749</a>: Fixes NoSuchMethodError on processing errors in pmd-compat6</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4776">#4776</a>: [ci] Upgrade to ruby 3</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4796">#4796</a>: Remove deprecated and release rulesets</li>
|
||
</ul>
|
||
</li>
|
||
<li>apex
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3766">#3766</a>: [apex] Replace Jorje with fully open source front-end</li>
|
||
</ul>
|
||
</li>
|
||
<li>apex-performance
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4675">#4675</a>: [apex] New Rule: OperationWithHighCostInLoop</li>
|
||
</ul>
|
||
</li>
|
||
<li>groovy
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4726">#4726</a>: [groovy] Support Groovy to 3 and 4 and CPD suppressions</li>
|
||
</ul>
|
||
</li>
|
||
<li>java
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1307">#1307</a>: [java] AccessNode API changes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3751">#3751</a>: [java] Rename some node types</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4628">#4628</a>: [java] Support loading classes from java runtime images</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4753">#4753</a>: [java] PMD crashes while using generics and wildcards</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-bestpractives
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4625">#4625</a>: [java] UnusedPrivateMethod false positive: Autoboxing into Number</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-codestyle
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2847">#2847</a>: [java] New Rule: Use Explicit Types</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4239">#4239</a>: [java] UnnecessaryLocalBeforeReturn - false positive with catch clause</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4578">#4578</a>: [java] CommentDefaultAccessModifier comment needs to be before annotation if present</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4631">#4631</a>: [java] UnnecessaryFullyQualifiedName fails to recognize illegal self reference in enums</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4645">#4645</a>: [java] CommentDefaultAccessModifier - False Positive with JUnit5’s ParameterizedTest</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4754">#4754</a>: [java] EmptyControlStatementRule: Add allowCommentedBlocks property</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-design
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/174">#174</a>: [java] SingularField false positive with switch in method that both assigns and reads field</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-errorprone
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/718">#718</a>: [java] BrokenNullCheck false positive with parameter/field confusion</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1831">#1831</a>: [java] DetachedTestCase reports abstract methods</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4719">#4719</a>: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string</li>
|
||
</ul>
|
||
</li>
|
||
<li>javascript
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4673">#4673</a>: [javascript] CPD: Added support for decorator notation</li>
|
||
</ul>
|
||
</li>
|
||
<li>plsql
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4820">#4820</a>: [plsql] WITH clause is ignored for SELECT INTO statements</li>
|
||
</ul>
|
||
</li>
|
||
<li>swift
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4697">#4697</a>: [swift] Support Swift 5.9 features (mainly macros expansion expressions)</li>
|
||
</ul>
|
||
</li>
|
||
<li>xml-bestpractices
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4592">#4592</a>: [xml] Add MissingEncoding rule</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<h4 id="api-changes">API Changes</h4>
|
||
|
||
<p><strong>New API</strong></p>
|
||
|
||
<p>The API around <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/util/treeexport/TreeRenderer.html#"><code>TreeRenderer</code></a> has been declared as stable. It was previously
|
||
experimental. It can be used via the CLI subcommand <code class="language-plaintext highlighter-rouge">ast-dump</code> or programmatically, as described
|
||
on <a href="pmd_userdocs_extending_ast_dump.html">Creating XML dump of the AST</a>.</p>
|
||
|
||
<p><strong>General AST Changes to avoid <code class="language-plaintext highlighter-rouge">@Image</code></strong></p>
|
||
|
||
<p>See <a href="pmd_userdocs_migrating_to_pmd7.html#general-ast-changes-to-avoid-image">General AST Changes to avoid @Image</a>
|
||
in the migration guide for details.</p>
|
||
|
||
<p><strong>XPath Rules</strong></p>
|
||
<ul>
|
||
<li>The property <code class="language-plaintext highlighter-rouge">version</code> was already deprecated and has finally been removed. Please don’t define the version
|
||
property anymore in your custom XPath rules. By default, the latest XPath version will be used, which
|
||
is XPath 3.1.</li>
|
||
</ul>
|
||
|
||
<p><strong>Moved classes/consolidated packages</strong></p>
|
||
|
||
<ul>
|
||
<li>pmd-core
|
||
<ul>
|
||
<li>Many types have been moved from the base package <code class="language-plaintext highlighter-rouge">net.sourceforge.pmd</code> into subpackage <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/package-summary.html#"><code>net.sourceforge.pmd.lang.rule</code></a>
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/Rule.html#"><code>Rule</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RulePriority.html#"><code>RulePriority</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSet.html#"><code>RuleSet</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSetFactory.html#"><code>RuleSetFactory</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSetLoader.html#"><code>RuleSetLoader</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSetLoadException.html#"><code>RuleSetLoadException</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSetWriter.html#"><code>RuleSetWriter</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>Many types have been moved from the base package <code class="language-plaintext highlighter-rouge">net.sourceforge.pmd</code> into subpackage <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/package-summary.html#"><code>net.sourceforge.pmd.reporting</code></a>
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/Report.html#"><code>Report</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/RuleContext.html#"><code>RuleContext</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/RuleViolation.html#"><code>RuleViolation</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/ViolationSuppressor.html#"><code>ViolationSuppressor</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/xpath/XPathRule.html#"><code>XPathRule</code></a> has been moved into subpackage <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/xpath/package-summary.html#"><code>net.sourceforge.pmd.lang.rule.xpath</code></a>.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Internalized classes and interfaces and methods</strong></p>
|
||
|
||
<p>The following classes/methods have been marked as @<!-- -->InternalApi before and are now moved into a <code class="language-plaintext highlighter-rouge">internal</code>
|
||
package or made (package) private and are <em>not accessible</em> anymore.</p>
|
||
|
||
<ul>
|
||
<li>pmd-core
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.AbstractAnalysisCache</code> (moved to internal, now package private)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.AnalysisCache</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.AnalysisCacheListener</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.AnalysisResult</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.CachedRuleMapper</code> (moved to internal, now package private)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.CachedRuleViolation</code> (moved to internal, now package private)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.ChecksumAware</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.FileAnalysisCache</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.cache.NoopAnalysisCache</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.util.ResourceLoader</code> (moved to internal)</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/Tokens.html#"><code>net.sourceforge.pmd.cpd.Tokens</code></a>
|
||
<ul>
|
||
<li>Constructor is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageProcessor.AnalysisTask.html#"><code>net.sourceforge.pmd.lang.LanguageProcessor.AnalysisTask</code></a>
|
||
<ul>
|
||
<li>Constructor is now package private.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">withFiles(java.util.List)</code> is now package private. Note: it was not previously marked with @<!-- -->InternalApi.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleTargetSelector.html#"><code>net.sourceforge.pmd.lang.rule.RuleTargetSelector</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">isRuleChain()</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/renderers/AbstractAccumulatingRenderer.html#"><code>net.sourceforge.pmd.renderers.AbstractAccumulatingRenderer</code></a>
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/renderers/AbstractAccumulatingRenderer.html#renderFileReport(net.sourceforge.pmd.reporting.Report)"><code>renderFileReport</code></a> - this method is now final
|
||
and can’t be overridden anymore.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/Report.html#"><code>net.sourceforge.pmd.reporting.Report</code></a>
|
||
<ul>
|
||
<li>Constructor as well as the methods <code class="language-plaintext highlighter-rouge">addRuleViolation</code>, <code class="language-plaintext highlighter-rouge">addConfigError</code>, <code class="language-plaintext highlighter-rouge">addError</code> are now private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/RuleContext.html#"><code>net.sourceforge.pmd.reporting.RuleContext</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getRule()</code> is now package private.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">create(FileAnalysisListener listener, Rule rule)</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.rules.RuleFactory</code>: moved into subpackage <code class="language-plaintext highlighter-rouge">lang.rule</code> and made package private.
|
||
It has now been hidden completely from public API.</li>
|
||
<li>Many types have been moved from into subpackage <code class="language-plaintext highlighter-rouge">lang.rule.internal</code>.
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.RuleSetReference</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.RuleSetReferenceId</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.RuleSets</code></li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.rule.ParametricRuleViolation</code> is now package private and moved to <code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.reporting.ParametricRuleViolation</code>.
|
||
The only public API is <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/RuleViolation.html#"><code>RuleViolation</code></a>.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSet.html#"><code>net.sourceforge.pmd.lang.rule.RuleSet</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">applies(Rule,LanguageVersion)</code> is now package private.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">applies(TextFile)</code> has been removed.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">applies(FileId)</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSetLoader.html#"><code>net.sourceforge.pmd.lang.rule.RuleSetLoader</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">loadRuleSetsWithoutException(java.util.List)</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleSetLoadException.html#"><code>net.sourceforge.pmd.lang.rule.RuleSetLoadException</code></a>
|
||
<ul>
|
||
<li>All constructors are package private now.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/LexException.html#"><code>net.sourceforge.pmd.lang.ast.LexException</code></a> - the constructor <code class="language-plaintext highlighter-rouge">LexException(boolean, String, int, int, String, char)</code> is now package private.
|
||
It is only used by JavaCC-generated token managers.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#"><code>net.sourceforge.pmd.PMDConfiguration</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">setAnalysisCache(AnalysisCache)</code> is now package private. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#setAnalysisCacheLocation(java.lang.String)"><code>setAnalysisCacheLocation</code></a> instead.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getAnalysisCache()</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/FileCollector.html#"><code>net.sourceforge.pmd.lang.document.FileCollector</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">newCollector(LanguageVersionDiscoverer, PmdReporter)</code> is now package private.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">newCollector(PmdReporter)</code> is now package private.</li>
|
||
<li>In order to create a FileCollector, use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PmdAnalysis.html#files()"><code>files</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/xpath/Attribute.html#"><code>net.sourceforge.pmd.lang.rule.xpath.Attribute</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">replacementIfDeprecated()</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.properties.PropertyTypeId</code> - moved in subpackage <code class="language-plaintext highlighter-rouge">internal</code>.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/PropertyDescriptor.html#"><code>net.sourceforge.pmd.properties.PropertyDescriptor</code></a> - method <code class="language-plaintext highlighter-rouge">getTypeId()</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-ant
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-ant/7.0.0-SNAPSHOT/net/sourceforge/pmd/ant/Formatter.html#"><code>net.sourceforge.pmd.ant.Formatter</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getRenderer()</code> has been removed.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">start(String)</code> is private now.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">end(Report)</code> has been removed.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">isNoOutputSupplied()</code> is now package private.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">newListener(Project)</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-ant/7.0.0-SNAPSHOT/net/sourceforge/pmd/ant/PMDTask.html#"><code>net.sourceforge.pmd.ant.PMDTask</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getRelativizeRoots()</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.ant.ReportException</code> is now package private. Note: It was not marked with @<!-- -->InternalApi before.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-apex
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/ast/ApexNode.html#"><code>net.sourceforge.pmd.ast.ApexNode</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getNode()</code> has been removed. It was only deprecated before and not marked with @<!-- -->InternalApi.
|
||
However, it gave access to the wrapped Jorje node and was thus internal API.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/ast/AbstractApexNode.html#"><code>net.sourceforge.pmd.ast.AbstractApexNode</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getNode()</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/multifile/ApexMultifileAnalysis.html#"><code>net.sourceforge.pmd.multifile.ApexMultifileAnalysis</code></a>
|
||
<ul>
|
||
<li>Constructor is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.apex.rule.design.AbstractNcssCountRule</code> (now package private)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.apex.rule.AbstractApexUnitTestRule</code> (moved to package <code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.apex.rule.bestpractices</code>, now package private)</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-java
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.java.rule.AbstractIgnoredAnnotationRule</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.java.types.ast.LazyTypeResolver</code> (moved to internal)</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/types/JMethodSig.html#"><code>net.sourceforge.pmd.types.JMethodSig</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">internalApi()</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/types/TypeOps.html#"><code>net.sourceforge.pmd.types.TypeOps</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">isSameTypeInInference(JTypeMirror,JTypeMirror)</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-jsp
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-jsp/7.0.0-SNAPSHOT/net/sourceforge/pmd/ast/JspParser.html#"><code>net.sourceforge.pmd.ast.JspParser</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getTokenBehavior()</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-modelica
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-modelica/7.0.0-SNAPSHOT/net/sourceforge/pmd/ast/InternalApiBridge.html#"><code>net.sourceforge.pmd.ast.InternalApiBridge</code></a> renamed from <code class="language-plaintext highlighter-rouge">InternalModelicaNodeApi</code>.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-modelica/7.0.0-SNAPSHOT/net/sourceforge/pmd/resolver/InternalApiBridge.html#"><code>net.sourceforge.pmd.resolver.InternalApiBridge</code></a> renamed from <code class="language-plaintext highlighter-rouge">InternalModelicaResolverApi</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.resolver.ModelicaSymbolFacade</code> has been removed.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.resolver.ResolutionContext</code> (moved to internal)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.resolver.ResolutionState</code> (moved to internal). Note: it was not previously marked with @<!-- -->InternalApi.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.resolver.Watchdog</code> (moved to internal). Note: it was not previously marked with @<!-- -->InternalApi.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-plsql
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.plsql.rule.design.AbstractNcssCountRule</code> is now package private.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-scala
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-scala_2.13/7.0.0-SNAPSHOT/net/sourceforge/pmd/ScalaLanguageModule.html#"><code>net.sourceforge.pmd.ScalaLanguageModule</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">dialectOf(LanguageVersion)</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Removed classes and members (previously deprecated)</strong></p>
|
||
|
||
<p>The annotation <code class="language-plaintext highlighter-rouge">@DeprecatedUntil700</code> has been removed.</p>
|
||
|
||
<ul>
|
||
<li>pmd-core
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/CpdLanguageProperties.html#"><code>net.sourceforge.pmd.cpd.CpdLanguageProperties</code></a>. The field <code class="language-plaintext highlighter-rouge">DEFAULT_SKIP_BLOCKS_PATTERN</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/impl/antlr4/BaseAntlrNode.html#"><code>net.sourceforge.pmd.lang.ast.impl.antlr4.BaseAntlrNode</code></a> - method <code class="language-plaintext highlighter-rouge">joinTokenText()</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#"><code>net.sourceforge.pmd.lang.ast.Node</code></a> - many methods have been removed:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">getNthParent(int)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#ancestors()"><code>ancestors</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.ancestors().get(n-1)</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">getFirstParentOfType(Class)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#ancestors(java.lang.Class)"><code>ancestors</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.ancestors(parentType).first()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">getParentsOfType(Class)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#ancestors(java.lang.Class)"><code>ancestors</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.ancestors(parentType).toList()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">findChildrenOfType(Class)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#children(java.lang.Class)"><code>children</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.children(childType).toList()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">findDescendantsOfType(Class)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#descendants(java.lang.Class)"><code>descendants</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.descendants(targetType).toList()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">findDescendantsOfType(Class,boolean)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#descendants(java.lang.Class)"><code>descendants</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.descendants(targetType).crossFindBoundaries(b).toList()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">getFirstChildOfType(Class)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#firstChild(java.lang.Class)"><code>firstChild</code></a> instead</li>
|
||
<li><code class="language-plaintext highlighter-rouge">getFirstDescendantOfType(Class)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#descendants(java.lang.Class)"><code>descendants</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.descendants(targetType).first()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">hasDescendantOfType(Class)</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#descendants(java.lang.Class)"><code>descendants</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.descendants(targetType).nonEmpty()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">findChildNodesWithXPath(String)</code> - Use the <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/NodeStream.html#"><code>NodeStream</code></a> API instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/impl/GenericNode.html#"><code>net.sourceforge.pmd.lang.ast.impl.GenericNode</code></a> - method <code class="language-plaintext highlighter-rouge">getNthParent(int)</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#ancestors()"><code>ancestors</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">node.ancestors().get(n-1)</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/FileCollector.html#"><code>net.sourceforge.pmd.lang.document.FileCollector</code></a> - method <code class="language-plaintext highlighter-rouge">addZipFile(java.nio.file.Path)</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/FileCollector.html#addZipFileWithContent(java.nio.file.Path)"><code>addZipFileWithContent</code></a> instead</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/TextDocument.html#"><code>net.sourceforge.pmd.lang.document.TextDocument</code></a> - method <code class="language-plaintext highlighter-rouge">readOnlyString(CharSequence,String,LanguageVersion)</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/TextDocument.html#readOnlyString(java.lang.CharSequence,net.sourceforge.pmd.lang.document.FileId,net.sourceforge.pmd.lang.LanguageVersion)"><code>readOnlyString</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/TextFile.html#"><code>net.sourceforge.pmd.lang.document.TextFile</code></a> - method <code class="language-plaintext highlighter-rouge">dataSourceCompat(DataSource,PMDConfiguration)</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/TextFile.html#"><code>TextFile</code></a> directly, e.g. <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/TextFile.forPath.html#"><code>TextFile.forPath</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/xpath/XPathVersion.html#"><code>net.sourceforge.pmd.lang.rule.xpath.XPathVersion</code></a>
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">XPATH_1_0</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">XPATH_1_0_COMPATIBILITY</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">XPATH_2_0</code></li>
|
||
<li>Only XPath version 3.1 is now supported. This version of the XPath language is mostly identical to
|
||
XPath 2.0. XPath rules by default use now <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/xpath/XPathVersion.html#XPATH_3_1"><code>XPATH_3_1</code></a>.</li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.rule.AbstractDelegateRule</code> removed. It has been merged with <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleReference.html#"><code>RuleReference</code></a>.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/AbstractRule.html#"><code>net.sourceforge.pmd.lang.rule.AbstractRule</code></a> - the following methods have been removed:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">deepCopyValuesTo(AbstractRule)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/AbstractRule.html#deepCopy()"><code>deepCopy</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">addRuleChainVisit(Class)</code> - override <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/AbstractRule.html#buildTargetSelector()"><code>buildTargetSelector</code></a> in order to register nodes for rule chain visits.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">addViolation(...)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleContext.html#addViolation(net.sourceforge.pmd.lang.ast.Node)"><code>addViolation</code></a> instead, e.g. via <code class="language-plaintext highlighter-rouge">asCtx(data).addViolation(...)</code>.
|
||
Note: These methods were only marked as deprected in javadoc.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">addViolationWithMessage(...)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleContext.html#addViolationWithMessage(net.sourceforge.pmd.lang.ast.Node,java.lang.String)"><code>addViolationWithMessage</code></a> instead, e.g. via
|
||
<code class="language-plaintext highlighter-rouge">asCtx(data).addViolationWithMessage(...)</code>. Note: These methods were only marked as deprected in javadoc.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleReference.html#"><code>net.sourceforge.pmd.lang.rule.RuleReference</code></a> - the following methods have been removed:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">setRuleSetReference(RuleSetReference)</code> - without replacement. Just construct new <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleReference.html#"><code>RuleReference</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">hasOverriddenProperty(PropertyDescriptor)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/RuleReference.html#isPropertyOverridden(net.sourceforge.pmd.properties.PropertyDescriptor)"><code>isPropertyOverridden</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/rule/XPathRule.html#"><code>net.sourceforge.pmd.lang.rule.XPathRule</code></a>
|
||
<ul>
|
||
<li>The constant <code class="language-plaintext highlighter-rouge">XPATH_DESCRIPTOR</code> has been made private and is not accessible anymore.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/Language.html#"><code>net.sourceforge.pmd.lang.Language</code></a> - method <code class="language-plaintext highlighter-rouge">getTerseName()</code> removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/Language.html#getId()"><code>getId</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageModuleBase.html#"><code>net.sourceforge.pmd.lang.LanguageModuleBase</code></a> - method <code class="language-plaintext highlighter-rouge">getTerseName()</code> removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageModuleBase.html#getId()"><code>getId</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageRegistry.html#"><code>net.sourceforge.pmd.lang.LanguageRegistry</code></a> - the following methods have been removed:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">getLanguage(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageRegistry.getLanguageByFullName.html#"><code>LanguageRegistry.getLanguageByFullName</code></a>
|
||
via <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageRegistry.html#PMD"><code>PMD</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageRegistry.html#CPD"><code>CPD</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">findLanguageByTerseName(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageRegistry.html#getLanguageById(java.lang.String)"><code>getLanguageById</code></a>
|
||
via <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageRegistry.html#PMD"><code>PMD</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageRegistry.html#CPD"><code>CPD</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">findByExtension(String)</code> - removed without replacement.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageVersionDiscoverer.html#"><code>net.sourceforge.pmd.lang.LanguageVersionDiscoverer</code></a> - method <code class="language-plaintext highlighter-rouge">getLanguagesForFile(java.io.File)</code> removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageVersionDiscoverer.html#getLanguagesForFile(java.lang.String)"><code>getLanguagesForFile</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/AbstractPropertySource.html#"><code>net.sourceforge.pmd.properties.AbstractPropertySource</code></a>
|
||
<ul>
|
||
<li>field <code class="language-plaintext highlighter-rouge">propertyDescriptors</code> has been made private and is not accessible anymore.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/AbstractPropertySource.html#getPropertyDescriptors()"><code>getPropertyDescriptors</code></a> instead.</li>
|
||
<li>field <code class="language-plaintext highlighter-rouge">propertyValuesByDescriptor</code> has been made private and is not accessible anymore.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/AbstractPropertySource.html#getPropertiesByPropertyDescriptor()"><code>getPropertiesByPropertyDescriptor</code></a>
|
||
or <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/AbstractPropertySource.html#getOverriddenPropertiesByPropertyDescriptor()"><code>getOverriddenPropertiesByPropertyDescriptor</code></a> instead.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">copyPropertyDescriptors()</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/AbstractPropertySource.html#getPropertyDescriptors()"><code>getPropertyDescriptors</code></a> instead.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">copyPropertyValues()</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/AbstractPropertySource.html#getPropertiesByPropertyDescriptor()"><code>getPropertiesByPropertyDescriptor</code></a>
|
||
or <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/AbstractPropertySource.html#getOverriddenPropertiesByPropertyDescriptor()"><code>getOverriddenPropertiesByPropertyDescriptor</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/Reportable.html#"><code>net.sourceforge.pmd.reporting.Reportable</code></a> - the following methods have been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/reporting/Reportable.html#getReportLocation()"><code>getReportLocation</code></a> instead
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">getBeginLine()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">getBeginColumn()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">getEndLine()</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">getEndColumn()</code></li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.util.datasource.DataSource</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/TextFile.html#"><code>TextFile</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.util.datasource.FileDataSource</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.util.datasource.ReaderDataSource</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.util.datasource.ZipDataSource</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/util/CollectionUtil.html#"><code>net.sourceforge.pmd.util.CollectionUtil</code></a>
|
||
<ul>
|
||
<li>method <code class="language-plaintext highlighter-rouge">invertedMapFrom(...)</code> has been removed.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">mapFrom(...)</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/AbstractConfiguration.html#"><code>net.sourceforge.pmd.AbstractConfiguration</code></a> - the following methods have been removed:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">setIgnoreFilePath(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/AbstractConfiguration.html#setIgnoreFilePath(java.nio.file.Path)"><code>setIgnoreFilePath</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">setInputFilePath(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/AbstractConfiguration.html#setInputFilePath(java.nio.file.Path)"><code>setInputFilePath</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">setInputPaths(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/AbstractConfiguration.html#setInputPathList(java.util.List)"><code>setInputPathList</code></a> or
|
||
<a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/AbstractConfiguration.html#addInputPath(java.nio.file.Path)"><code>addInputPath</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">setInputUri(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/AbstractConfiguration.html#setInputUri(java.net.URI)"><code>setInputUri</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#"><code>net.sourceforge.pmd.PMDConfiguration</code></a> - the following methods have been removed
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">prependClasspath(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#prependAuxClasspath(java.lang.String)"><code>prependAuxClasspath</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">getRuleSets()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#getRuleSetPaths()"><code>getRuleSetPaths</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">setRuleSets(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#setRuleSets(java.util.List)"><code>setRuleSets</code></a> or
|
||
<a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#addRuleSet(java.lang.String)"><code>addRuleSet</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">setReportFile(String)</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#setReportFile(java.nio.file.Path)"><code>setReportFile</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">getReportFile()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#getReportFilePath()"><code>getReportFilePath</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/Report.html#"><code>net.sourceforge.pmd.Report</code></a> - method <code class="language-plaintext highlighter-rouge">merge(Report)</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/Report.html#union(net.sourceforge.pmd.Report)"><code>union</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleSetLoader.html#"><code>net.sourceforge.pmd.RuleSetLoader</code></a> - method <code class="language-plaintext highlighter-rouge">toFactory()</code> has been made package private and is not accessible anymore.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#"><code>net.sourceforge.pmd.RuleViolation</code></a> - the following methods have been removed:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">getPackageName()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#getAdditionalInfo()"><code>getAdditionalInfo</code></a> with <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#PACKAGE_NAME"><code>PACKAGE_NAME</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getAdditionalInfo().get(PACKAGE_NAME)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">getClassName()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#getAdditionalInfo()"><code>getAdditionalInfo</code></a> with <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#CLASS_NAME"><code>CLASS_NAME</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getAdditionalInfo().get(CLASS_NAME)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">getMethodName()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#getAdditionalInfo()"><code>getAdditionalInfo</code></a> with <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#METHOD_NAME"><code>METHOD_NAME</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getAdditionalInfo().get(METHOD_NAME)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">getVariableName()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#getAdditionalInfo()"><code>getAdditionalInfo</code></a> with <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/RuleViolation.html#VARIABLE_NAME"><code>VARIABLE_NAME</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getAdditionalInfo().get(VARIABLE_NAME)</code>.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-apex
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ApexNode.html#"><code>ApexNode</code></a> and <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTApexFile.html#"><code>ASTApexFile</code></a>
|
||
<ul>
|
||
<li>
|
||
<p><code class="language-plaintext highlighter-rouge">#getApexVersion()</code>: In PMD 6, this method has been deprecated but was defined in the class <code class="language-plaintext highlighter-rouge">ApexRootNode</code>.
|
||
The version returned is always “Version.CURRENT”, as the apex compiler integration
|
||
doesn’t use additional information which Apex version actually is used. Therefore, this method can’t be
|
||
used to determine the Apex version of the project that is being analyzed.</p>
|
||
|
||
<p>If the current version is needed, then <code class="language-plaintext highlighter-rouge">Node.getTextDocument().getLanguageVersion()</code> can be used. This
|
||
is the version that has been selected via CLI <code class="language-plaintext highlighter-rouge">--use-version</code> parameter.</p>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ApexNode.html#"><code>net.sourceforge.pmd.lang.apex.ast.ApexNode</code></a>
|
||
<ul>
|
||
<li>method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">getNode()</code> has been removed. The underlying node is only available in AST nodes, but not in rule implementations.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/AbstractApexNode.html#"><code>net.sourceforge.pmd.lang.apex.ast.AbstractApexNode</code></a> - method <code class="language-plaintext highlighter-rouge">getNode()</code> is now package private.
|
||
AST nodes still have access to the underlying Jorje node via the protected property <code class="language-plaintext highlighter-rouge">node</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.apex.ast.ApexParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ApexVisitor.html#"><code>ApexVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ApexVisitorBase.html#"><code>ApexVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.apex.ast.ApexParserVisitorAdapter</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTAssignmentExpression.html#"><code>net.sourceforge.pmd.lang.apex.ast.ASTAssignmentExpression</code></a> - method <code class="language-plaintext highlighter-rouge">getOperator()</code> removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTAssignmentExpression.html#getOp()"><code>getOp</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTBinaryExpression.html#"><code>net.sourceforge.pmd.lang.apex.ast.ASTBinaryExpression</code></a> - method <code class="language-plaintext highlighter-rouge">getOperator()</code> removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTBinaryExpression.html#getOp()"><code>getOp</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTBooleanExpression.html#"><code>net.sourceforge.pmd.lang.apex.ast.ASTBooleanExpression</code></a> - method <code class="language-plaintext highlighter-rouge">getOperator()</code> removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTBooleanExpression.html#getOp()"><code>getOp</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTPostfixExpression.html#"><code>net.sourceforge.pmd.lang.apex.ast.ASTPostfixExpression</code></a> - method <code class="language-plaintext highlighter-rouge">getOperator()</code> removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTPostfixExpression.html#getOp()"><code>getOp</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTPrefixExpression.html#"><code>net.sourceforge.pmd.lang.apex.ast.ASTPrefixExpression</code></a> - method <code class="language-plaintext highlighter-rouge">getOperator()</code> removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTPrefixExpression.html#getOp()"><code>getOp</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.apex.rule.security.Helper</code> removed. This was actually internal API.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-java
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/AbstractPackageNameModuleDirective.html#"><code>net.sourceforge.pmd.lang.java.ast.AbstractPackageNameModuleDirective</code></a> - method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/AbstractPackageNameModuleDirective.html#getPackageName()"><code>getPackageName</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/AbstractTypeDeclaration.html#"><code>net.sourceforge.pmd.lang.java.ast.AbstractTypeDeclaration</code></a> - method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/AbstractTypeDeclaration.html#getSimpleName()"><code>getSimpleName</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTAnnotation.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTAnnotation</code></a> - method <code class="language-plaintext highlighter-rouge">getAnnotationName()</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTClassType.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTClassType</code></a>
|
||
<ul>
|
||
<li>constructor <code class="language-plaintext highlighter-rouge">ASTClassType(java.lang.String)</code> has been removed.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">isReferenceToClassSameCompilationUnit()</code> has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTFieldDeclaration.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration</code></a> - method <code class="language-plaintext highlighter-rouge">getVariableName()</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTLiteral.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTLiteral</code></a> - the following methods have been removed:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">isStringLiteral()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTStringLiteral</code> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isCharLiteral()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTCharLiteral</code> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isNullLiteral()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTNullLiteral</code> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isBooleanLiteral()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTBooleanLiteral</code> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isNumericLiteral()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTNumericLiteral</code> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isIntLiteral()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTNumericLiteral.html#isIntLiteral()"><code>isIntLiteral</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isLongLiteral()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTNumericLiteral.html#isLongLiteral()"><code>isLongLiteral</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isFloatLiteral()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTNumericLiteral.html#isFloatLiteral()"><code>isFloatLiteral</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isDoubleLiteral()</code> - use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTNumericLiteral.html#isDoubleLiteral()"><code>isDoubleLiteral</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclaration.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration</code></a> - methods <code class="language-plaintext highlighter-rouge">getImage()</code> and <code class="language-plaintext highlighter-rouge">getMethodName()</code> have been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclaration.html#getName()"><code>getName</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTMethodReference.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTMethodReference</code></a> - method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTModuleName.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTModuleName</code></a> - method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTPrimitiveType.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTPrimitiveType</code></a> - method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTType.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTType</code></a>
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">getTypeImage()</code> has been removed.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">getArrayDepth()</code> has been removed. It’s only available for arrays: <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTArrayType.html#getArrayDepth()"><code>getArrayDepth</code></a>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isPrimitiveType()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTPrimitiveType</code> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isArrayType()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTArrayType</code> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isClassOrInterfaceType()</code> - use <code class="language-plaintext highlighter-rouge">node instanceof ASTClassType</code> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTTypeDeclaration.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration</code></a> - method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTUnaryExpression.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTUnaryExpression</code></a> - method <code class="language-plaintext highlighter-rouge">isPrefix()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTUnaryExpression.html#getOperator()"><code>getOperator</code></a><code class="language-plaintext highlighter-rouge">.isPrefix()</code> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTVariableId.html#"><code>net.sourceforge.pmd.lang.java.ast.ASTVariableId</code></a> - methods <code class="language-plaintext highlighter-rouge">getImage()</code> and <code class="language-plaintext highlighter-rouge">getVariableName()</code> have been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTVariableId.html#getName()"><code>getName</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/JavaComment.html#"><code>net.sourceforge.pmd.lang.java.ast.JavaComment</code></a> - method <code class="language-plaintext highlighter-rouge">getImage()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/JavaComment.html#getText()"><code>getText</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/JavaNode.html#"><code>net.sourceforge.pmd.lang.java.ast.JavaNode</code></a> - method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.java.ast.JavaParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/JavaVisitor.html#"><code>JavaVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/JavaVisitorBase.html#"><code>JavaVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#"><code>net.sourceforge.pmd.lang.java.ast.ModifierOwner</code></a>
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">isFinal()</code> - This is still available in various subtypes, where it makes sense, e.g. <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTLocalVariableDeclaration.html#isFinal()"><code>isFinal</code></a>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isAbstract()</code> - This is still available in subtypes, e.g. <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTTypeDeclaration.html#isAbstract()"><code>isAbstract</code></a>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isStrictfp()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasModifiers(STRICTFP)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isSynchronized()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasModifiers(SYNCHRONIZED)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isNative()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasModifiers(NATIVE)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isStatic()</code> - This is still available in subtypes, e.g. <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclaration.html#isStatic()"><code>isStatic</code></a>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isVolatile()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasModifiers(VOLATILE)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isTransient()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasModifiers(TRANSIENT)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isPrivate()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#getVisibility()"><code>getVisibility</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getVisibility() == Visibility.V_PRIVATE</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isPublic()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#getVisibility()"><code>getVisibility</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getVisibility() == Visibility.V_PUBLIC</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isProtected()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#getVisibility()"><code>getVisibility</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getVisibility() == Visibility.V_PROTECTED</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isPackagePrivate()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#getVisibility()"><code>getVisibility</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">getVisibility() == Visibility.V_PACKAGE</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isSyntacticallyAbstract()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasExplicitModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasExplicitModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasExplicitModifiers(ABSTRACT)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isSyntacticallyPublic()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasExplicitModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasExplicitModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasExplicitModifiers(PUBLIC)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isSyntacticallyStatic()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasExplicitModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasExplicitModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasExplicitModifiers(STATIC)</code>.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">isSyntacticallyFinal()</code> - Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasExplicitModifiers(net.sourceforge.pmd.lang.java.ast.JModifier,net.sourceforge.pmd.lang.java.ast.JModifier...)"><code>hasExplicitModifiers</code></a> instead, e.g. <code class="language-plaintext highlighter-rouge">hasExplicitModifiers(FINAL)</code>.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/TypeNode.html#"><code>net.sourceforge.pmd.lang.java.ast.TypeNode</code></a> - method <code class="language-plaintext highlighter-rouge">getType()</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/TypeNode.html#getTypeMirror()"><code>getTypeMirror</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-javascript
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/AbstractEcmascriptNode.html#"><code>AbstractEcmascriptNode</code></a> - method <code class="language-plaintext highlighter-rouge">getNode()</code> has been removed.
|
||
AST nodes still have access to the underlying Rhino node via the protected property <code class="language-plaintext highlighter-rouge">node</code>.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/ASTFunctionNode.html#"><code>ASTFunctionNode</code></a> - method <code class="language-plaintext highlighter-rouge">getBody(int)</code> removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/ASTFunctionNode.html#getBody()"><code>getBody</code></a> instead.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/ASTTryStatement.html#"><code>ASTTryStatement</code></a>
|
||
<ul>
|
||
<li>method <code class="language-plaintext highlighter-rouge">isCatch()</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/ASTTryStatement.html#hasCatch()"><code>hasCatch</code></a> instead.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">isFinally()</code> has been removed. USe <a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/ASTTryStatement.html#hasFinally()"><code>hasFinally</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptNode.html#"><code>EcmascriptNode</code></a>
|
||
<ul>
|
||
<li>method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
<li>method <code class="language-plaintext highlighter-rouge">getNode()</code> has been removed. The underlying node is only available in AST nodes, but not in rule implementations.</li>
|
||
</ul>
|
||
</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptVisitor.html#"><code>EcmascriptVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-javascript/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptVisitorBase.html#"><code>EcmascriptVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitorAdapter</code></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-jsp
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.jsp.ast.JspParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-jsp/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/jsp/ast/JspVisitor.html#"><code>JspVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-jsp/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/jsp/ast/JspVisitorBase.html#"><code>JspVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.jsp.ast.JspParserVisitorAdapter</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-jsp/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/jsp/ast/JspNode.html#"><code>net.sourceforge.pmd.lang.jsp.ast.JspNode</code></a> - method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-modelica
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-modelica/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/modelica/ast/ModelicaVisitor.html#"><code>ModelicaVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-modelica/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/modelica/ast/ModelicaVisitorBase.html#"><code>ModelicaVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitorAdapter</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-modelica/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/modelica/ast/ModelicaNode.html#"><code>net.sourceforge.pmd.lang.modelica.ast.ModelicaNode</code></a> - method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.rule.AmbiguousResolutionRule</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-modelica/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/modelica/rule/bestpractices/AmbiguousResolutionRule.html#"><code>AmbiguousResolutionRule</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.modelica.rule.ConnectUsingNonConnector</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-modelica/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/modelica/rule/bestpractices/ConnectUsingNonConnectorRule.html#"><code>ConnectUsingNonConnectorRule</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-plsql
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-plsql/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/plsql/ast/PlsqlVisitor.html#"><code>PlsqlVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-plsql/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/plsql/ast/PlsqlVisitorBase.html#"><code>PlsqlVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitorAdapter</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-plsql/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/plsql/ast/PLSQLNode.html#"><code>net.sourceforge.pmd.lang.plsql.ast.PLSQLNode</code></a> - method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-scala
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-scala_2.13/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/scala/ast/ScalaNode.html#"><code>net.sourceforge.pmd.lang.scala.ast.ScalaNode</code></a>
|
||
<ul>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">accept()</code> has been removed. Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
<li>Method <code class="language-plaintext highlighter-rouge">getNode()</code> has been removed. The underlying node is only available in AST nodes, but not in rule implementations.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-scala_2.13/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/scala/ast/AbstractScalaNode.html#"><code>net.sourceforge.pmd.lang.scala.ast.AbstractScalaNode</code></a> - method <code class="language-plaintext highlighter-rouge">getNode()</code> has been removed. AST nodes still have access
|
||
to the underlying Scala node via the protected property <code class="language-plaintext highlighter-rouge">node</code>.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-visualforce
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-visualforce/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vf/ast/VfNode.html#"><code>net.sourceforge.pmd.lang.vf.ast.VfNode</code></a> - method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.vf.ast.VfParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-visualforce/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vf/ast/VfVisitor.html#"><code>VfVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-visualforce/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vf/ast/VfVisitorBase.html#"><code>VfVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.vf.ast.VfParserVisitorAdapter</code></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-visualforce/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vf/DataType.html#"><code>net.sourceforge.pmd.lang.vf.DataType</code></a> - method <code class="language-plaintext highlighter-rouge">fromBasicType(BasicType)</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-visualforce/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vf/DataType.html#fromTypeName(java.lang.String)"><code>fromTypeName</code></a> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-vm
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-vm/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vm/ast/VmNode.html#"><code>net.sourceforge.pmd.lang.vm.ast.VmNode</code></a> - method <code class="language-plaintext highlighter-rouge">jjtAccept()</code> has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#acceptVisitor(net.sourceforge.pmd.lang.ast.AstVisitor,P)"><code>acceptVisitor</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.vm.ast.VmParserVisitor</code>
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-vm/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vm/ast/VmVisitor.html#"><code>VmVisitor</code></a> or <a href="https://docs.pmd-code.org/apidocs/pmd-vm/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/vm/ast/VmVisitorBase.html#"><code>VmVisitorBase</code></a> instead.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.vm.ast.VmParserVisitorAdapter</code></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Removed classes, interfaces and methods (not previously deprecated)</strong></p>
|
||
|
||
<ul>
|
||
<li>pmd-apex
|
||
<ul>
|
||
<li>The method <code class="language-plaintext highlighter-rouge">isSynthetic()</code> in <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTMethod.html#"><code>ASTMethod</code></a> has been removed.
|
||
With the switch from Jorje to Summit AST as underlying parser, no synthetic methods are generated by the
|
||
parser anymore. This also means, that there is no XPath attribute <code class="language-plaintext highlighter-rouge">@Synthetic</code> anymore.</li>
|
||
<li>The constant <code class="language-plaintext highlighter-rouge">STATIC_INITIALIZER_METHOD_NAME</code> in <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/rule/codestyle/FieldDeclarationsShouldBeAtStartRule.html#"><code>FieldDeclarationsShouldBeAtStartRule</code></a>
|
||
has been removed. It was used to filter out synthetic methods, but these are not generated anymore with the
|
||
new parser.</li>
|
||
<li>The method <code class="language-plaintext highlighter-rouge">getContext()</code> in <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTReferenceExpression.html#"><code>ASTReferenceExpression</code></a> has been removed.
|
||
It was not used and always returned <code class="language-plaintext highlighter-rouge">null</code>.</li>
|
||
<li>The method <code class="language-plaintext highlighter-rouge">getNamespace()</code> in all AST nodes (defined in <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ApexNode.html#"><code>ApexNode</code></a>) has
|
||
been removed, as it was never fully implemented. It always returned an empty string.</li>
|
||
<li>The method <code class="language-plaintext highlighter-rouge">getNameSpace()</code> in <a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ApexQualifiedName.html#"><code>ApexQualifiedName</code></a> has been removed.</li>
|
||
<li>The class <code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.lang.apex.ast.ASTBridgeMethodCreator</code> has been removed. This was a node that has
|
||
been generated by the old Jorje parser only.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-apex-jorje
|
||
<ul>
|
||
<li>With the switch from Jorje to Summit AST, this maven module is no longer needed and has been removed.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-core
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.util.Predicate</code> has been removed. It was marked as Experimental before. Use
|
||
<code class="language-plaintext highlighter-rouge">java.util.function.Predicate</code> instead.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-java
|
||
<ul>
|
||
<li>The interface <code class="language-plaintext highlighter-rouge">FinalizableNode</code> (introduced in 7.0.0-rc1) has been removed.
|
||
Its method <code class="language-plaintext highlighter-rouge">isFinal()</code> has been moved down to the
|
||
nodes where needed, e.g. <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTLocalVariableDeclaration.html#isFinal()"><code>ASTLocalVariableDeclaration#isFinal</code></a>.</li>
|
||
<li>The method <code class="language-plaintext highlighter-rouge">isPackagePrivate()</code> in <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTClassDeclaration.html#"><code>ASTClassDeclaration</code></a> (formerly ASTClassOrInterfaceDeclaration)
|
||
has been removed.
|
||
Use <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ModifierOwner.html#hasVisibility(net.sourceforge.pmd.lang.java.ast.ModifierOwner.Visibility)"><code>hasVisibility</code></a> instead,
|
||
which can correctly differentiate between local and package private classes.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Renamed classes, interfaces</strong></p>
|
||
|
||
<ul>
|
||
<li>pmd-core
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/util/log/PmdReporter.html#"><code>PmdReporter</code></a> - has been renamed from <code class="language-plaintext highlighter-rouge">net.sourceforge.pmd.util.log.MessageReporter</code></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-java
|
||
<ul>
|
||
<li>The interface <code class="language-plaintext highlighter-rouge">AccessNode</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/ModifierOwner.html#"><code>ModifierOwner</code></a>. This is only relevant
|
||
for Java rules, which use that type directly e.g. through downcasting.
|
||
Or when using the XPath function <code class="language-plaintext highlighter-rouge">pmd-java:nodeIs()</code>.</li>
|
||
<li>The node <code class="language-plaintext highlighter-rouge">ASTClassOrInterfaceType</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/ASTClassType.html#"><code>ASTClassType</code></a>. XPath rules
|
||
need to be adjusted.</li>
|
||
<li>The node <code class="language-plaintext highlighter-rouge">ASTClassOrInterfaceDeclaration</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/ASTClassDeclaration.html#"><code>ASTClassDeclaration</code></a>.
|
||
XPath rules need to be adjusted.</li>
|
||
<li>The interface <code class="language-plaintext highlighter-rouge">ASTAnyTypeDeclaration</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/ASTTypeDeclaration.html#"><code>ASTTypeDeclaration</code></a>.
|
||
This is only relevant for Java rules, which use that type directly, e.g. through downcasting.
|
||
Or when using the XPath function <code class="language-plaintext highlighter-rouge">pmd-java:nodeIs()</code>.</li>
|
||
<li>The interface <code class="language-plaintext highlighter-rouge">ASTMethodOrConstructorDeclaration</code> has been renamed to
|
||
<a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/ASTExecutableDeclaration.html#"><code>ASTExecutableDeclaration</code></a>. This is only relevant for Java rules, which sue that type
|
||
directly, e.g. through downcasting. Or when using the XPath function <code class="language-plaintext highlighter-rouge">pmd-java:nodeIs()</code>.</li>
|
||
<li>The node <code class="language-plaintext highlighter-rouge">ASTVariableDeclaratorId</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/ASTVariableId.html#"><code>ASTVariableId</code></a>. XPath rules
|
||
need to be adjusted.</li>
|
||
<li>The node <code class="language-plaintext highlighter-rouge">ASTClassOrInterfaceBody</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/ASTClassBody.html#"><code>ASTClassBody</code></a>. XPath rules
|
||
need to be adjusted.</li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-scala
|
||
<ul>
|
||
<li>The interface <code class="language-plaintext highlighter-rouge">ScalaParserVisitor</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-scala_2.13/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/scala/ast/ScalaVisitor.html#"><code>ScalaVisitor</code></a> in order
|
||
to align the naming scheme for the different language modules.</li>
|
||
<li>The class <code class="language-plaintext highlighter-rouge">ScalaParserVisitorAdapter</code> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-scala_2.13/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/scala/ast/ScalaVisitorBase.html#"><code>ScalaVisitorBase</code></a> in order
|
||
to align the naming scheme for the different language modules.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Renamed classes and methods</strong></p>
|
||
|
||
<ul>
|
||
<li>pmd-core
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/6.55.0/net/sourceforge/pmd/lang/ast/TokenMgrError.html#"><code>TokenMgrError</code></a> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/LexException.html#"><code>LexException</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/6.55.0/net/sourceforge/pmd/cpd/Tokenizer.html#"><code>Tokenizer</code></a> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/CpdLexer.html#"><code>CpdLexer</code></a>. Along with this rename,
|
||
all the implementations have been renamed as well (<code class="language-plaintext highlighter-rouge">Tokenizer</code> -> <code class="language-plaintext highlighter-rouge">CpdLexer</code>), e.g. “CppCpdLexer”, “JavaCpdLexer”.
|
||
This affects all language modules.</li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/6.55.0/net/sourceforge/pmd/cpd/AnyTokenizer.html#"><code>AnyTokenizer</code></a> has been renamed to <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/AnyCpdLexer.html#"><code>AnyCpdLexer</code></a>.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Classes and methods, that are not experimental anymore</strong></p>
|
||
|
||
<p>These were annotated with <code class="language-plaintext highlighter-rouge">@Experimental</code>, but can now be considered stable.</p>
|
||
|
||
<ul>
|
||
<li>pmd-apex
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/ast/ASTCommentContainer.html#"><code>net.sourceforge.pmd.lang.apex.ast.ASTCommentContainer</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-apex/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/apex/multifile/ApexMultifileAnalysis.html#"><code>net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-core
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/cpd/CPDReport.html#filterMatches(java.util.function.Predicate)"><code>CPDReport#filterMatches</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/impl/antlr4/AntlrToken.getKind.html#"><code>net.sourceforge.pmd.lang.ast.impl.antlr4.AntlrToken.getKind</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractJjtreeNode.html#"><code>net.sourceforge.pmd.lang.ast.impl.javacc.AbstractJjtreeNode</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/impl/TokenDocument.html#"><code>net.sourceforge.pmd.lang.ast.impl.TokenDocument</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/AstInfo.getSuppressionComments.html#"><code>net.sourceforge.pmd.lang.ast.AstInfo.getSuppressionComments</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/AstInfo.withSuppressMap.html#"><code>net.sourceforge.pmd.lang.ast.AstInfo.withSuppressMap</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/GenericToken.getKind.html#"><code>net.sourceforge.pmd.lang.ast.GenericToken.getKind</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/FileCollector.addZipFileWithContent.html#"><code>net.sourceforge.pmd.lang.document.FileCollector.addZipFileWithContent</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/document/package-summary.html#"><code>net.sourceforge.pmd.lang.document</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageVersionHandler.getLanguageMetricsProvider.html#"><code>net.sourceforge.pmd.lang.LanguageVersionHandler.getLanguageMetricsProvider</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/LanguageVersionHandler.getDesignerBindings.html#"><code>net.sourceforge.pmd.lang.LanguageVersionHandler.getDesignerBindings</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/PlainTextLanguage.html#"><code>net.sourceforge.pmd.lang.PlainTextLanguage</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/PropertyConstraint.getXmlConstraint.html#"><code>net.sourceforge.pmd.properties.PropertyConstraint.getXmlConstraint</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/PropertyConstraint.toOptionalConstraint.html#"><code>net.sourceforge.pmd.properties.PropertyConstraint.toOptionalConstraint</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/PropertyConstraint.fromPredicate.html#"><code>net.sourceforge.pmd.properties.PropertyConstraint.fromPredicate</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/PropertyConstraint.fromPredicate.html#"><code>net.sourceforge.pmd.properties.PropertyConstraint.fromPredicate</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/renderers/AbstractRenderer.setReportFile.html#"><code>net.sourceforge.pmd.renderers.AbstractRenderer.setReportFile</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/renderers/Renderer.setReportFile.html#"><code>net.sourceforge.pmd.renderers.Renderer.setReportFile</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/util/designerbindings/DesignerBindings.html#"><code>net.sourceforge.pmd.util.designerbindings.DesignerBindings</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/util/designerbindings/DesignerBindings.TreeIconId.html#"><code>net.sourceforge.pmd.util.designerbindings.DesignerBindings.TreeIconId</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/util/designerbindings/RelatedNodesSelector.html#"><code>net.sourceforge.pmd.util.designerbindings.RelatedNodesSelector</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/Report/filterViolations.html#"><code>net.sourceforge.pmd.Report.filterViolations</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/Report/union.html#"><code>net.sourceforge.pmd.Report.union</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-groovy
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-groovy/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/groovy/ast/impl/antlr4/GroovyToken.getKind.html#"><code>net.sourceforge.pmd.lang.groovy.ast.impl.antlr4.GroovyToken.getKind</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-html
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-html/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/html/package-summary.html#"><code>net.sourceforge.pmd.lang.html</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-java
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/ast/ASTExpression.html#getConversionContext()"><code>ASTExpression#getConversionContext</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/rule/AbstractJavaRulechainRule.html#AbstractJavaRulechainRule(java.lang.Class,java.lang.Class...)"><code>AbstractJavaRulechainRule#AbstractJavaRulechainRule</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/symbols/table/JSymbolTable.html#"><code>net.sourceforge.pmd.lang.java.symbols.table.JSymbolTable</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/symbols/JElementSymbol.html#"><code>net.sourceforge.pmd.lang.java.symbols.JElementSymbol</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/symbols/package-summary.html#"><code>net.sourceforge.pmd.lang.java.symbols</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/types/ast/ExprContext.html#"><code>net.sourceforge.pmd.lang.java.types.ast.ExprContext</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/types/JIntersectionType.html#getInducedClassType()"><code>JIntersectionType#getInducedClassType</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/types/JTypeMirror.html#streamMethods(java.util.function.Predicate)"><code>JTypeMirror#streamMethods</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/types/JTypeMirror.html#streamDeclaredMethods(java.util.function.Predicate)"><code>JTypeMirror#streamDeclaredMethods</code></a></li>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-java/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/java/types/JTypeMirror.html#getConstructors()"><code>JTypeMirror#getConstructors</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-kotlin
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-kotlin/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.html#"><code>net.sourceforge.pmd.lang.kotlin.KotlinLanguageModule</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>pmd-test-schema
|
||
<ul>
|
||
<li><a href="https://docs.pmd-code.org/apidocs/pmd-test-schema/7.0.0-SNAPSHOT/net/sourceforge/pmd/test/schema/TestSchemaParser.html#"><code>net.sourceforge.pmd.test.schema.TestSchemaParser</code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Removed functionality</strong></p>
|
||
|
||
<ul>
|
||
<li>The CLI parameter <code class="language-plaintext highlighter-rouge">--no-ruleset-compatibility</code> has been removed. It was only used to allow loading
|
||
some rulesets originally written for PMD 5 also in PMD 6 without fixing the rulesets.</li>
|
||
<li>The class <a href="https://docs.pmd-code.org/apidocs/pmd-core/6.55.0/net/sourceforge/pmd/RuleSetFactoryCompatibility.html#"><code>RuleSetFactoryCompatibility</code></a> has been removed without replacement.
|
||
The different ways to enable/disable this filter in <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/PMDConfiguration.html#"><code>PMDConfiguration</code></a>
|
||
(Property “RuleSetFactoryCompatibilityEnabled”) and
|
||
<a href="https://docs.pmd-code.org/apidocs/pmd-ant/7.0.0-SNAPSHOT/net/sourceforge/pmd/ant/PMDTask.html#"><code>PMDTask</code></a> (Property “noRuleSetCompatibility”) have been removed as well.</li>
|
||
<li><code class="language-plaintext highlighter-rouge">textcolor</code> renderer (<a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/renderers/TextColorRenderer.html#"><code>TextColorRenderer</code></a>) now renders always in color.
|
||
The property <code class="language-plaintext highlighter-rouge">color</code> has been removed. The possibility to override this with the system property <code class="language-plaintext highlighter-rouge">pmd.color</code>
|
||
has been removed as well. If you don’t want colors, use <code class="language-plaintext highlighter-rouge">text</code> renderer (<a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/renderers/TextRenderer.html#"><code>TextRenderer</code></a>).</li>
|
||
</ul>
|
||
|
||
<h4 id="external-contributions">External Contributions</h4>
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4093">#4093</a>: [apex] Summit-AST Apex module - Part 1 - <a href="https://github.com/eklimo">Edward Klimoshenko</a> (@eklimo)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4151">#4151</a>: [apex] Summit-AST Apex module - Part 2 - expression nodes - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4171">#4171</a>: [apex] Summit-AST Apex module - Part 3 - initializers - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4206">#4206</a>: [apex] Summit-AST Apex module - Part 4 - statements - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4219">#4219</a>: [apex] Summit-AST Apex module - Part 5 - annotations, triggers, misc. - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4242">#4242</a>: [apex] Merge 6.52 into experimental-apex-parser - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4251">#4251</a>: [apex] Summit-AST Apex module - Part 6 Passing testsuite - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4448">#4448</a>: [apex] Bump summit-ast to new release 2.1.0 (and remove workaround) - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4479">#4479</a>: [apex] Merge main (7.x) branch into experimental-apex-parser and fix tests - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4640">#4640</a>: [cli] Launch script fails if run via “bash pmd” - <a href="https://github.com/shai-bennathan">Shai Bennathan</a> (@shai-bennathan)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4673">#4673</a>: [javascript] CPD: Added support for decorator notation - <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4677">#4677</a>: [apex] Add new rule: OperationWithHighCostInLoop - <a href="https://github.com/tprouvot">Thomas Prouvot</a> (@tprouvot)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4698">#4698</a>: [swift] Add macro expansion support for swift 5.9 - <a href="https://github.com/kenji21">Richard B.</a> (@kenji21)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4706">#4706</a>: [java] DetachedTestCase should not report on abstract methods - <a href="https://github.com/Debamoy">Debamoy Datta</a> (@Debamoy)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4719">#4719</a>: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string - <a href="https://github.com/ciufudean">ciufudean</a> (@ciufudean)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4738">#4738</a>: [doc] Added reference to the PMD extension for bld - <a href="https://github.com/ethauvin">Erik C. Thauvin</a> (@ethauvin)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4749">#4749</a>: Fixes NoSuchMethodError on processing errors in pmd-compat6 - <a href="https://github.com/bergander">Andreas Bergander</a> (@bergander)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4750">#4750</a>: [core] Fix flaky SummaryHTMLRenderer - <a href="https://github.com/219sansim">219sansim</a> (@219sansim)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4754">#4754</a>: [java] EmptyControlStatementRule: Add allowCommentedBlocks property - <a href="https://github.com/bergander">Andreas Bergander</a> (@bergander)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4759">#4759</a>: [java] fix: remove delimiter attribute from ruleset category/java/errorprone.xml - <a href="https://github.com/marcindabrowski">Marcin Dąbrowski</a> (@marcindabrowski)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4825">#4825</a>: [plsql] Fix ignored WITH clause for SELECT INTO statements - <a href="https://github.com/lbovet">Laurent Bovet</a> (@lbovet)</li>
|
||
</ul>
|
||
|
||
<h3 id="-major-features-and-enhancements">🚀 Major Features and Enhancements</h3>
|
||
|
||
<h4 id="new-official-logo">New official logo</h4>
|
||
|
||
<p>The new official logo of PMD:</p>
|
||
|
||
<p><img src="images/logo/pmd-logo-300px.png" alt="New PMD Logo" /></p>
|
||
|
||
<h4 id="revamped-java-module">Revamped Java module</h4>
|
||
|
||
<ul>
|
||
<li>Java grammar substantially refactored - more correct regarding the Java Language Specification (JLS)</li>
|
||
<li>Built-in rules have been upgraded for the changed AST</li>
|
||
<li>Rewritten type resolution framework and symbol table correctly implements the JLS</li>
|
||
<li>AST exposes more semantic information (method calls, field accesses)</li>
|
||
</ul>
|
||
|
||
<p>For more information, see the <a href="pmd_release_notes_pmd7.html#revamped-java">Detailed Release Notes for PMD 7</a>.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/oowekyala">Clément Fournier</a> (@oowekyala),
|
||
<a href="https://github.com/adangel">Andreas Dangel</a> (@adangel),
|
||
<a href="https://github.com/jsotuyod">Juan Martín Sotuyo Dodero</a> (@jsotuyod)</p>
|
||
|
||
<h4 id="revamped-command-line-interface">Revamped Command Line Interface</h4>
|
||
|
||
<ul>
|
||
<li>unified and consistent Command Line Interface for both Linux/Unix and Windows across our different utilities</li>
|
||
<li>single script <code class="language-plaintext highlighter-rouge">pmd</code> (<code class="language-plaintext highlighter-rouge">pmd.bat</code> for Windows) to launch the different utilities:
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">pmd check</code> to run PMD rules and analyze a project</li>
|
||
<li><code class="language-plaintext highlighter-rouge">pmd cpd</code> to run CPD (copy paste detector)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">pmd designer</code> to run the PMD Rule Designer</li>
|
||
</ul>
|
||
</li>
|
||
<li>progress bar support for <code class="language-plaintext highlighter-rouge">pmd check</code></li>
|
||
<li>shell completion</li>
|
||
</ul>
|
||
|
||
<p><img src="images/userdocs/pmd-demo.gif" alt="Demo" /></p>
|
||
|
||
<p>For more information, see the <a href="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a>.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/jsotuyod">Juan Martín Sotuyo Dodero</a> (@jsotuyod)</p>
|
||
|
||
<h4 id="full-antlr-support">Full Antlr support</h4>
|
||
|
||
<ul>
|
||
<li><a href="https://www.antlr.org/">Antlr</a> based grammars can now be used to build full-fledged PMD rules.</li>
|
||
<li>Previously, Antlr grammar could only be used for CPD</li>
|
||
<li>New supported languages: Swift and Kotlin</li>
|
||
</ul>
|
||
|
||
<p>For more information, see the <a href="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a>.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/lsoncini">Lucas Soncini</a> (@lsoncini),
|
||
<a href="https://github.com/matifraga">Matías Fraga</a> (@matifraga),
|
||
<a href="https://github.com/tomidelucca">Tomás De Lucca</a> (@tomidelucca)</p>
|
||
|
||
<h4 id="updated-pmd-designer-1">Updated PMD Designer</h4>
|
||
|
||
<p>This PMD release ships a new version of the pmd-designer.
|
||
For the changes, see</p>
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd-designer/releases/tag/7.0.0-rc1">PMD Designer Changelog (7.0.0-rc1)</a>.</li>
|
||
<li><a href="https://github.com/pmd/pmd-designer/releases/tag/7.0.0-rc4">PMD Designer Changelog (7.0.0-rc4)</a>.</li>
|
||
<li><a href="https://github.com/pmd/pmd-designer/releases/tag/7.0.0">PMD Designer Changelog (7.0.0)</a>.</li>
|
||
</ul>
|
||
|
||
<h4 id="new-cpd-report-format-cpdhtml-v2xslt">New CPD report format cpdhtml-v2.xslt</h4>
|
||
|
||
<p>Thanks to @mohan-chinnappan-n a new CPD report format has been added which features a data table.
|
||
It uses an XSLT stylesheet to convert CPD’s XML format into HTML.</p>
|
||
|
||
<p>See <a href="report-examples/cpdhtml-v2.html">the example report</a>.</p>
|
||
|
||
<h3 id="-language-related-changes">🎉 Language Related Changes</h3>
|
||
|
||
<p>Note that this is just a concise listing of the highlight.
|
||
For more information on the languages, see the <a href="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a>.</p>
|
||
|
||
<h4 id="new-swift-support">New: Swift support</h4>
|
||
|
||
<ul>
|
||
<li>use PMD to analyze Swift code with PMD rules</li>
|
||
<li>limited support for Swift 5.9 (Macro Expansions)</li>
|
||
<li>initially 4 built-in rules</li>
|
||
</ul>
|
||
|
||
<p>Contributors: <a href="https://github.com/lsoncini">Lucas Soncini</a> (@lsoncini),
|
||
<a href="https://github.com/matifraga">Matías Fraga</a> (@matifraga),
|
||
<a href="https://github.com/tomidelucca">Tomás De Lucca</a> (@tomidelucca)</p>
|
||
|
||
<h4 id="new-kotlin-support">New: Kotlin support</h4>
|
||
|
||
<ul>
|
||
<li>use PMD to analyze Kotlin code with PMD rules</li>
|
||
<li>Support for Kotlin 1.8 grammar</li>
|
||
<li>initially 2 built-in rules</li>
|
||
</ul>
|
||
|
||
<h4 id="new-cpd-support-for-typescript">New: CPD support for TypeScript</h4>
|
||
|
||
<p>Thanks to a contribution, CPD now supports the TypeScript language. It is shipped
|
||
with the rest of the JavaScript support in the module <code class="language-plaintext highlighter-rouge">pmd-javascript</code>.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/pguyot">Paul Guyot</a> (@pguyot)</p>
|
||
|
||
<h4 id="new-cpd-support-for-julia">New: CPD support for Julia</h4>
|
||
|
||
<p>Thanks to a contribution, CPD now supports the Julia language. It is shipped
|
||
in the new module <code class="language-plaintext highlighter-rouge">pmd-julia</code>.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</p>
|
||
|
||
<h4 id="new-cpd-support-for-coco">New: CPD support for Coco</h4>
|
||
|
||
<p>Thanks to a contribution, CPD now supports Coco, a modern programming language
|
||
designed specifically for building event-driven software. It is shipped in the new
|
||
module <code class="language-plaintext highlighter-rouge">pmd-coco</code>.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</p>
|
||
|
||
<h4 id="new-java-21-support">New: Java 21 Support</h4>
|
||
|
||
<p>This release of PMD brings support for Java 21. There are the following new standard language features,
|
||
that are supported now:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://openjdk.org/jeps/440">JEP 440: Record Patterns</a></li>
|
||
<li><a href="https://openjdk.org/jeps/441">JEP 441: Pattern Matching for switch</a></li>
|
||
</ul>
|
||
|
||
<p>PMD also supports the following preview language features:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://openjdk.org/jeps/430">JEP 430: String Templates (Preview)</a></li>
|
||
<li><a href="https://openjdk.org/jeps/443">JEP 443: Unnamed Patterns and Variables (Preview)</a></li>
|
||
<li><a href="https://openjdk.org/jeps/445">JEP 445: Unnamed Classes and Instance Main Methods (Preview)</a></li>
|
||
</ul>
|
||
|
||
<p>In order to analyze a project with PMD that uses these language features,
|
||
you’ll need to enable it via the environment variable <code class="language-plaintext highlighter-rouge">PMD_JAVA_OPTS</code> and select the new language
|
||
version <code class="language-plaintext highlighter-rouge">21-preview</code>:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export PMD_JAVA_OPTS=--enable-preview
|
||
pmd check --use-version java-21-preview ...
|
||
</code></pre></div></div>
|
||
|
||
<p>Note: Support for Java 19 preview language features have been removed. The version “19-preview” is no longer available.</p>
|
||
|
||
<h4 id="changed-html-support-1">Changed: HTML support</h4>
|
||
|
||
<p>Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this
|
||
is now considered stable.</p>
|
||
|
||
<h4 id="changed-javascript-support">Changed: JavaScript support</h4>
|
||
|
||
<ul>
|
||
<li>latest version supports ES6 and also some new constructs (see <a href="https://github.com/mozilla/rhino">Rhino</a>])</li>
|
||
<li>comments are retained</li>
|
||
</ul>
|
||
|
||
<h4 id="changed-language-versions">Changed: Language versions</h4>
|
||
|
||
<ul>
|
||
<li>more predefined language versions for each supported language</li>
|
||
<li>can be used to limit rule execution for specific versions only with <code class="language-plaintext highlighter-rouge">minimumLanguageVersion</code> and
|
||
<code class="language-plaintext highlighter-rouge">maximumLanguageVersion</code> attributes.</li>
|
||
</ul>
|
||
|
||
<h4 id="changed-cpp-can-now-ignore-identifiers-in-sequences-cpd">Changed: CPP can now ignore identifiers in sequences (CPD)</h4>
|
||
|
||
<ul>
|
||
<li>new command line option for CPD: <code class="language-plaintext highlighter-rouge">--ignore-sequences</code>.</li>
|
||
<li>This option is used for CPP only: with the already existing option <code class="language-plaintext highlighter-rouge">--ignore-literal-sequences</code>, only
|
||
literals were ignored. The new option additional ignores identifiers as well in sequences.</li>
|
||
<li>See <a href="https://github.com/pmd/pmd/pull/4470">PR #4470</a> for details.</li>
|
||
</ul>
|
||
|
||
<h4 id="changed-groovy-support-cpd">Changed: Groovy Support (CPD)</h4>
|
||
|
||
<ul>
|
||
<li>We now support parsing all Groovy features from Groovy 3 and 4.</li>
|
||
<li>We now support <a href="pmd_userdocs_cpd.html#suppression">suppression</a> through <code class="language-plaintext highlighter-rouge">CPD-ON</code>/<code class="language-plaintext highlighter-rouge">CPD-OFF</code> comment pairs.</li>
|
||
<li>See <a href="https://github.com/pmd/pmd/pull/4726">PR #4726</a> for details.</li>
|
||
</ul>
|
||
|
||
<h4 id="changed-apex-support-replaced-jorje-with-fully-open-source-front-end">Changed: Apex Support: Replaced Jorje with fully open source front-end</h4>
|
||
|
||
<p>When PMD added Apex support with version 5.5.0, it utilized the Apex Jorje library to parse Apex source
|
||
and generate an AST. This library is however a binary-blob provided as part of the
|
||
<a href="https://github.com/forcedotcom/salesforcedx-vscode">Salesforce Extensions for VS Code</a>, and it is closed-source.</p>
|
||
|
||
<p>This causes problems, if binary blobs are not allowed by e.g. a company-wide policy. In that case, the Jorje
|
||
library prevented that PMD Apex could be used at all.</p>
|
||
|
||
<p>Also having access to the source code, enhancements and modifications are easier to do.</p>
|
||
|
||
<p>Under the hood, we use two open source libraries instead:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/nawforce/apex-parser">apex-parser</a> by <a href="https://github.com/nawforce">Kevin Jones</a> (@nawforce)
|
||
This project provides the grammar for a ANTLR based parser.</li>
|
||
<li><a href="https://github.com/google/summit-ast">Summit-AST</a> by <a href="https://github.com/google">Google</a> (@google)
|
||
This project translates the ANTLR parse tree into an AST, that is similar to the AST Jorje provided.
|
||
Note: This is not an official Google product.</li>
|
||
</ul>
|
||
|
||
<p>Although the parsers is completely switched, there are only little known changes to the AST.
|
||
These are documented in the <a href="pmd_userdocs_migrating_to_pmd7.html#apex-ast">Migration Guide for PMD 7: Apex AST</a>.</p>
|
||
|
||
<p>See <a href="https://github.com/pmd/pmd/issues/3766">#3766</a> for details.</p>
|
||
|
||
<p>Contributors: <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google),
|
||
<a href="https://github.com/eklimo">Edward Klimoshenko</a> (@eklimo)</p>
|
||
|
||
<h4 id="changed-rule-properties">Changed: Rule properties</h4>
|
||
|
||
<ul>
|
||
<li>The old deprecated classes like <code class="language-plaintext highlighter-rouge">IntProperty</code> and <code class="language-plaintext highlighter-rouge">StringProperty</code> have been removed. Please use
|
||
<a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/properties/PropertyFactory.html#"><code>PropertyFactory</code></a> to create properties.</li>
|
||
<li>All properties which accept multiple values now use a comma (<code class="language-plaintext highlighter-rouge">,</code>) as a delimiter. The previous default was a
|
||
pipe character (<code class="language-plaintext highlighter-rouge">|</code>). The delimiter is not configurable anymore. If needed, the comma can be escaped
|
||
with a backslash.</li>
|
||
<li>The <code class="language-plaintext highlighter-rouge">min</code> and <code class="language-plaintext highlighter-rouge">max</code> attributes in property definitions in the XML are now optional and can appear separately
|
||
or be omitted.</li>
|
||
</ul>
|
||
|
||
<h3 id="-new-and-changed-rules">🌟 New and changed rules</h3>
|
||
|
||
<h4 id="new-rules">New Rules</h4>
|
||
|
||
<p><strong>Apex</strong></p>
|
||
<ul>
|
||
<li><a href="pmd_rules_apex_design.html#unusedmethod"><code class="language-plaintext highlighter-rouge">UnusedMethod</code></a> finds unused methods in your code.</li>
|
||
<li><a href="pmd_rules_apex_performance.html#operationwithhighcostinloop"><code class="language-plaintext highlighter-rouge">OperationWithHighCostInLoop</code></a> finds Schema class methods called in a loop, which is a
|
||
potential performance issue.</li>
|
||
</ul>
|
||
|
||
<p><strong>Java</strong></p>
|
||
<ul>
|
||
<li><a href="pmd_rules_java_codestyle.html#unnecessaryboxing"><code class="language-plaintext highlighter-rouge">UnnecessaryBoxing</code></a> reports boxing and unboxing conversions that may be made implicit.</li>
|
||
<li><a href="pmd_rules_java_codestyle.html#useexplicittypes"><code class="language-plaintext highlighter-rouge">UseExplicitTypes</code></a> reports usages of <code class="language-plaintext highlighter-rouge">var</code> keyword, which was introduced with Java 10.</li>
|
||
</ul>
|
||
|
||
<p><strong>Kotlin</strong></p>
|
||
<ul>
|
||
<li><a href="pmd_rules_kotlin_bestpractices.html#functionnametooshort"><code class="language-plaintext highlighter-rouge">FunctionNameTooShort</code></a></li>
|
||
<li><a href="pmd_rules_kotlin_errorprone.html#overridebothequalsandhashcode"><code class="language-plaintext highlighter-rouge">OverrideBothEqualsAndHashcode</code></a></li>
|
||
</ul>
|
||
|
||
<p><strong>Swift</strong></p>
|
||
<ul>
|
||
<li><a href="pmd_rules_swift_bestpractices.html#prohibitedinterfacebuilder"><code class="language-plaintext highlighter-rouge">ProhibitedInterfaceBuilder</code></a></li>
|
||
<li><a href="pmd_rules_swift_bestpractices.html#unavailablefunction"><code class="language-plaintext highlighter-rouge">UnavailableFunction</code></a></li>
|
||
<li><a href="pmd_rules_swift_errorprone.html#forcecast"><code class="language-plaintext highlighter-rouge">ForceCast</code></a></li>
|
||
<li><a href="pmd_rules_swift_errorprone.html#forcetry"><code class="language-plaintext highlighter-rouge">ForceTry</code></a></li>
|
||
</ul>
|
||
|
||
<p><strong>XML</strong></p>
|
||
<ul>
|
||
<li><a href="pmd_rules_xml_bestpractices.html#missingencoding"><code class="language-plaintext highlighter-rouge">MissingEncoding</code></a> finds XML files without explicit encoding.</li>
|
||
</ul>
|
||
|
||
<h4 id="changed-rules">Changed Rules</h4>
|
||
|
||
<p><strong>General changes</strong></p>
|
||
|
||
<ul>
|
||
<li>All statistical rules (like ExcessiveClassLength, ExcessiveParameterList) have been simplified and unified.
|
||
The properties <code class="language-plaintext highlighter-rouge">topscore</code> and <code class="language-plaintext highlighter-rouge">sigma</code> have been removed. The property <code class="language-plaintext highlighter-rouge">minimum</code> is still there, however the type is not
|
||
a decimal number anymore but has been changed to an integer. This affects rules in the languages Apex, Java, PLSQL
|
||
and Velocity Template Language (vm):
|
||
<ul>
|
||
<li>Apex: <a href="pmd_rules_apex_design.html#excessiveclasslength"><code class="language-plaintext highlighter-rouge">ExcessiveClassLength</code></a>, <a href="pmd_rules_apex_design.html#excessiveparameterlist"><code class="language-plaintext highlighter-rouge">ExcessiveParameterList</code></a>,
|
||
<a href="pmd_rules_apex_design.html#excessivepubliccount"><code class="language-plaintext highlighter-rouge">ExcessivePublicCount</code></a>, <a href="pmd_rules_apex_design.html#ncssconstructorcount"><code class="language-plaintext highlighter-rouge">NcssConstructorCount</code></a>,
|
||
<a href="pmd_rules_apex_design.html#ncssmethodcount"><code class="language-plaintext highlighter-rouge">NcssMethodCount</code></a>, <a href="pmd_rules_apex_design.html#ncsstypecount"><code class="language-plaintext highlighter-rouge">NcssTypeCount</code></a></li>
|
||
<li>Java: <a href="pmd_rules_java_design.html#excessiveimports"><code class="language-plaintext highlighter-rouge">ExcessiveImports</code></a>, <a href="pmd_rules_java_design.html#excessiveparameterlist"><code class="language-plaintext highlighter-rouge">ExcessiveParameterList</code></a>,
|
||
<a href="pmd_rules_java_design.html#excessivepubliccount"><code class="language-plaintext highlighter-rouge">ExcessivePublicCount</code></a>, <a href="pmd_rules_java_design.html#switchdensity"><code class="language-plaintext highlighter-rouge">SwitchDensity</code></a></li>
|
||
<li>PLSQL: <a href="pmd_rules_plsql_design.html#excessivemethodlength"><code class="language-plaintext highlighter-rouge">ExcessiveMethodLength</code></a>, <a href="pmd_rules_plsql_design.html#excessiveobjectlength"><code class="language-plaintext highlighter-rouge">ExcessiveObjectLength</code></a>,
|
||
<a href="pmd_rules_plsql_design.html#excessivepackagebodylength"><code class="language-plaintext highlighter-rouge">ExcessivePackageBodyLength</code></a>, <a href="pmd_rules_plsql_design.html#excessivepackagespecificationlength"><code class="language-plaintext highlighter-rouge">ExcessivePackageSpecificationLength</code></a>,
|
||
<a href="pmd_rules_plsql_design.html#excessiveparameterlist"><code class="language-plaintext highlighter-rouge">ExcessiveParameterList</code></a>, <a href="pmd_rules_plsql_design.html#excessivetypelength"><code class="language-plaintext highlighter-rouge">ExcessiveTypeLength</code></a>,
|
||
<a href="pmd_rules_plsql_design.html#ncssmethodcount"><code class="language-plaintext highlighter-rouge">NcssMethodCount</code></a>, <a href="pmd_rules_plsql_design.html#ncssobjectcount"><code class="language-plaintext highlighter-rouge">NcssObjectCount</code></a>,
|
||
<a href="pmd_rules_plsql_design.html#npathcomplexity"><code class="language-plaintext highlighter-rouge">NPathComplexity</code></a></li>
|
||
<li>VM: <a href="pmd_rules_vm_design.html#excessivetemplatelength"><code class="language-plaintext highlighter-rouge">ExcessiveTemplateLength</code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li>The general property <code class="language-plaintext highlighter-rouge">violationSuppressXPath</code> which is available for all rules to
|
||
<a href="pmd_userdocs_suppressing_warnings.html">suppress warnings</a> now uses XPath version 3.1 by default.
|
||
This version of the XPath language is mostly identical to XPath 2.0. In PMD 6, XPath 1.0 has been used.
|
||
If you upgrade from PMD 6, you need to verify your <code class="language-plaintext highlighter-rouge">violationSuppressXPath</code> properties.</li>
|
||
</ul>
|
||
|
||
<p><strong>Apex General changes</strong></p>
|
||
|
||
<ul>
|
||
<li>The properties <code class="language-plaintext highlighter-rouge">cc_categories</code>, <code class="language-plaintext highlighter-rouge">cc_remediation_points_multiplier</code>, <code class="language-plaintext highlighter-rouge">cc_block_highlighting</code> have been removed
|
||
from all rules. These properties have been deprecated since PMD 6.13.0.
|
||
See <a href="https://github.com/pmd/pmd/issues/1648">issue #1648</a> for more details.</li>
|
||
</ul>
|
||
|
||
<p><strong>Java General changes</strong></p>
|
||
|
||
<ul>
|
||
<li>
|
||
<p>Violations reported on methods or classes previously reported the line range of the entire method
|
||
or class. With PMD 7.0.0, the reported location is now just the identifier of the method or class.
|
||
This affects various rules, e.g. <a href="pmd_rules_java_design.html#cognitivecomplexity"><code class="language-plaintext highlighter-rouge">CognitiveComplexity</code></a>.</p>
|
||
|
||
<p>The report location is controlled by the overrides of the method <a href="https://docs.pmd-code.org/apidocs/pmd-core/7.0.0-SNAPSHOT/net/sourceforge/pmd/lang/ast/Node.html#getReportLocation()"><code>getReportLocation</code></a>
|
||
in different node types.</p>
|
||
|
||
<p>See <a href="https://github.com/pmd/pmd/issues/4439">issue #4439</a> and <a href="https://github.com/pmd/pmd/issues/730">issue #730</a>
|
||
for more details.</p>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><strong>Java Best Practices</strong></p>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_java_bestpractices.html#arrayisstoreddirectly"><code class="language-plaintext highlighter-rouge">ArrayIsStoredDirectly</code></a>: Violations are now reported on the assignment and not
|
||
anymore on the formal parameter. The reported line numbers will probably move.</li>
|
||
<li><a href="pmd_rules_java_bestpractices.html#avoidreassigningloopvariables"><code class="language-plaintext highlighter-rouge">AvoidReassigningLoopVariables</code></a>: This rule might not report anymore all
|
||
reassignments of the control variable in for-loops when the property <code class="language-plaintext highlighter-rouge">forReassign</code> is set to <code class="language-plaintext highlighter-rouge">skip</code>.
|
||
See <a href="https://github.com/pmd/pmd/issues/4500">issue #4500</a> for more details.</li>
|
||
<li><a href="pmd_rules_java_bestpractices.html#loosecoupling"><code class="language-plaintext highlighter-rouge">LooseCoupling</code></a>: The rule has a new property to allow some types to be coupled
|
||
to (<code class="language-plaintext highlighter-rouge">allowedTypes</code>).</li>
|
||
<li><a href="pmd_rules_java_bestpractices.html#unusedlocalvariable"><code class="language-plaintext highlighter-rouge">UnusedLocalVariable</code></a>: This rule has some important false-negatives fixed
|
||
and finds many more cases now. For details see issues <a href="https://github.com/pmd/pmd/issues/2130">#2130</a>,
|
||
<a href="https://github.com/pmd/pmd/issues/4516">#4516</a>, and <a href="https://github.com/pmd/pmd/issues/4517">#4517</a>.</li>
|
||
</ul>
|
||
|
||
<p><strong>Java Codestyle</strong></p>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_java_codestyle.html#methodnamingconventions"><code class="language-plaintext highlighter-rouge">MethodNamingConventions</code></a>: The property <code class="language-plaintext highlighter-rouge">checkNativeMethods</code> has been removed. The
|
||
property was deprecated since PMD 6.3.0. Use the property <code class="language-plaintext highlighter-rouge">nativePattern</code> to control whether native methods
|
||
should be considered or not.</li>
|
||
<li><a href="pmd_rules_java_codestyle.html#shortvariable"><code class="language-plaintext highlighter-rouge">ShortVariable</code></a>: This rule now also reports short enum constant names.</li>
|
||
<li><a href="pmd_rules_java_codestyle.html#usediamondoperator"><code class="language-plaintext highlighter-rouge">UseDiamondOperator</code></a>: The property <code class="language-plaintext highlighter-rouge">java7Compatibility</code> has been removed. The rule now
|
||
handles Java 7 properly without a property.</li>
|
||
<li><a href="pmd_rules_java_codestyle.html#unnecessaryfullyqualifiedname"><code class="language-plaintext highlighter-rouge">UnnecessaryFullyQualifiedName</code></a>: The rule has two new properties,
|
||
to selectively disable reporting on static field and method qualifiers. The rule also has been improved
|
||
to be more precise.</li>
|
||
<li><a href="pmd_rules_java_codestyle.html#uselessparentheses"><code class="language-plaintext highlighter-rouge">UselessParentheses</code></a>: The rule has two new properties which control how strict
|
||
the rule should be applied. With <code class="language-plaintext highlighter-rouge">ignoreClarifying</code> (default: true) parentheses that are strictly speaking
|
||
not necessary are allowed, if they separate expressions of different precedence.
|
||
The other property <code class="language-plaintext highlighter-rouge">ignoreBalancing</code> (default: true) is similar, in that it allows parentheses that help
|
||
reading and understanding the expressions.</li>
|
||
<li><a href="pmd_rules_java_codestyle.html#emptycontrolstatement"><code class="language-plaintext highlighter-rouge">EmptyControlStatement</code></a>: The rule has a new property to allow empty blocks when
|
||
they contain a comment (<code class="language-plaintext highlighter-rouge">allowCommentedBlocks</code>).</li>
|
||
</ul>
|
||
|
||
<p><strong>Java Design</strong></p>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_java_design.html#cyclomaticcomplexity"><code class="language-plaintext highlighter-rouge">CyclomaticComplexity</code></a>: The property <code class="language-plaintext highlighter-rouge">reportLevel</code> has been removed. The property was
|
||
deprecated since PMD 6.0.0. The report level can now be configured separated for classes and methods using
|
||
<code class="language-plaintext highlighter-rouge">classReportLevel</code> and <code class="language-plaintext highlighter-rouge">methodReportLevel</code> instead.</li>
|
||
<li><a href="pmd_rules_java_design.html#immutablefield"><code class="language-plaintext highlighter-rouge">ImmutableField</code></a>: The property <code class="language-plaintext highlighter-rouge">ignoredAnnotations</code> has been removed. The property was
|
||
deprecated since PMD 6.52.0.</li>
|
||
<li><a href="pmd_rules_java_design.html#lawofdemeter"><code class="language-plaintext highlighter-rouge">LawOfDemeter</code></a>: The rule has a new property <code class="language-plaintext highlighter-rouge">trustRadius</code>. This defines the maximum degree
|
||
of trusted data. The default of 1 is the most restrictive.</li>
|
||
<li><a href="pmd_rules_java_design.html#npathcomplexity"><code class="language-plaintext highlighter-rouge">NPathComplexity</code></a>: The property <code class="language-plaintext highlighter-rouge">minimum</code> has been removed. It was deprecated since PMD 6.0.0.
|
||
Use the property <code class="language-plaintext highlighter-rouge">reportLevel</code> instead.</li>
|
||
<li><a href="pmd_rules_java_design.html#singularfield"><code class="language-plaintext highlighter-rouge">SingularField</code></a>: The properties <code class="language-plaintext highlighter-rouge">checkInnerClasses</code> and <code class="language-plaintext highlighter-rouge">disallowNotAssignment</code> have been removed.
|
||
The rule is now more precise and will check these cases properly.</li>
|
||
<li><a href="pmd_rules_java_design.html#useutilityclass"><code class="language-plaintext highlighter-rouge">UseUtilityClass</code></a>: The property <code class="language-plaintext highlighter-rouge">ignoredAnnotations</code> has been removed.</li>
|
||
</ul>
|
||
|
||
<p><strong>Java Documentation</strong></p>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_java_documentation.html#commentcontent"><code class="language-plaintext highlighter-rouge">CommentContent</code></a>: The properties <code class="language-plaintext highlighter-rouge">caseSensitive</code> and <code class="language-plaintext highlighter-rouge">disallowedTerms</code> are removed. The
|
||
new property <code class="language-plaintext highlighter-rouge">forbiddenRegex</code> can be used now to define the disallowed terms with a single regular
|
||
expression.</li>
|
||
<li><a href="pmd_rules_java_documentation.html#commentrequired"><code class="language-plaintext highlighter-rouge">CommentRequired</code></a>:
|
||
<ul>
|
||
<li>Overridden methods are now detected even without the <code class="language-plaintext highlighter-rouge">@Override</code>
|
||
annotation. This is relevant for the property <code class="language-plaintext highlighter-rouge">methodWithOverrideCommentRequirement</code>.
|
||
See also <a href="https://github.com/pmd/pmd/pull/3757">pull request #3757</a>.</li>
|
||
<li>Elements in annotation types are now detected as well. This might lead to an increased number of violations
|
||
for missing public method comments.</li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="pmd_rules_java_documentation.html#commentsize"><code class="language-plaintext highlighter-rouge">CommentSize</code></a>: When determining the line-length of a comment, the leading comment
|
||
prefix markers (e.g. <code class="language-plaintext highlighter-rouge">*</code> or <code class="language-plaintext highlighter-rouge">//</code>) are ignored and don’t add up to the line-length.
|
||
See also <a href="https://github.com/pmd/pmd/pull/4369">pull request #4369</a>.</li>
|
||
</ul>
|
||
|
||
<p><strong>Java Error Prone</strong></p>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_java_errorprone.html#avoidduplicateliterals"><code class="language-plaintext highlighter-rouge">AvoidDuplicateLiterals</code></a>: The property <code class="language-plaintext highlighter-rouge">exceptionfile</code> has been removed. The property was
|
||
deprecated since PMD 6.10.0. Use the property <code class="language-plaintext highlighter-rouge">exceptionList</code> instead.</li>
|
||
<li><a href="pmd_rules_java_errorprone.html#dontimportsun"><code class="language-plaintext highlighter-rouge">DontImportSun</code></a>: <code class="language-plaintext highlighter-rouge">sun.misc.Signal</code> is not special-cased anymore.</li>
|
||
<li><a href="pmd_rules_java_errorprone.html#emptycatchblock"><code class="language-plaintext highlighter-rouge">EmptyCatchBlock</code></a>: <code class="language-plaintext highlighter-rouge">CloneNotSupportedException</code> and <code class="language-plaintext highlighter-rouge">InterruptedException</code> are not
|
||
special-cased anymore. Rename the exception parameter to <code class="language-plaintext highlighter-rouge">ignored</code> to ignore them.</li>
|
||
<li><a href="pmd_rules_java_errorprone.html#implicitswitchfallthrough"><code class="language-plaintext highlighter-rouge">ImplicitSwitchFallThrough</code></a>: Violations are now reported on the case statements
|
||
rather than on the switch statements. This is more accurate but might result in more violations now.</li>
|
||
</ul>
|
||
|
||
<h4 id="removed-rules">Removed Rules</h4>
|
||
|
||
<p>Many rules, that were previously deprecated have been finally removed.
|
||
See <a href="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a> for the complete list.</p>
|
||
|
||
<h3 id="-api">🚨 API</h3>
|
||
|
||
<p>The API of PMD has been growing over the years and needed some cleanup. The goal is, to
|
||
have a clear separation between a well-defined API and the implementation, which is internal.
|
||
This should help us in future development.</p>
|
||
|
||
<p>Also, there are some improvement and changes in different areas. For the detailed description
|
||
of the changes listed here, see <a href="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a>.</p>
|
||
|
||
<ul>
|
||
<li>Miscellaneous smaller changes and cleanups</li>
|
||
<li>XPath 3.1 support for XPath-based rules</li>
|
||
<li>Node stream API for AST traversal</li>
|
||
<li>Metrics framework</li>
|
||
<li>Testing framework</li>
|
||
<li>Language Lifecycle and Language Properties</li>
|
||
<li>Rule Properties</li>
|
||
<li>New Programmatic API for CPD</li>
|
||
</ul>
|
||
|
||
<h3 id="-compatibility-and-migration-notes">💥 Compatibility and migration notes</h3>
|
||
|
||
<p>A detailed documentation of required changes are available in the
|
||
<a href="pmd_userdocs_migrating_to_pmd7.html">Migration Guide for PMD 7</a>.</p>
|
||
|
||
<p>See also <a href="pmd_release_notes_pmd7.html">Detailed Release Notes for PMD 7</a>.</p>
|
||
|
||
<h3 id="-fixed-issues">🐛 Fixed Issues</h3>
|
||
|
||
<ul>
|
||
<li>miscellaneous
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/881">#881</a>: [all] Breaking API changes for 7.0.0</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/896">#896</a>: [all] Use slf4j</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1431">#1431</a>: [ui] Remove old GUI applications (designerold, bgastviewer)</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1451">#1451</a>: [core] RulesetFactoryCompatibility stores the whole ruleset file in memory as a string</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2496">#2496</a>: Update PMD 7 Logo on landing page</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2497">#2497</a>: PMD 7 Logo page</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2498">#2498</a>: Update PMD 7 Logo in documentation</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3797">#3797</a>: [all] Use JUnit5</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4462">#4462</a>: Provide Software Bill of Materials (SBOM)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4460">#4460</a>: Fix assembly-plugin warnings</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4582">#4582</a>: [dist] Download link broken</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4586">#4586</a>: Use explicit encoding in ruleset xml files</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4642">#4642</a>: Update regression tests with Java 21 language features</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4691">#4691</a>: [CVEs] Critical and High CEVs reported on PMD and PMD dependencies</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4699">#4699</a>: Make PMD buildable with java 21</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4736">#4736</a>: [ci] Improve build procedure</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4741">#4741</a>: Add pmd-compat6 module for maven-pmd-plugin</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4749">#4749</a>: Fixes NoSuchMethodError on processing errors in pmd-compat6</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4776">#4776</a>: [ci] Upgrade to ruby 3</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4796">#4796</a>: Remove deprecated and release rulesets</li>
|
||
</ul>
|
||
</li>
|
||
<li>ant
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4080">#4080</a>: [ant] Split off Ant integration into a new submodule</li>
|
||
</ul>
|
||
</li>
|
||
<li>core
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/880">#880</a>: [core] Make visitors generic</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1027">#1027</a>: [core] Apply the new PropertyDescriptor<Pattern> type where applicable</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1204">#1204</a>: [core] Allow numeric properties in XML to be within an unbounded range</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1622">#1622</a>: [core] NodeStream API</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1687">#1687</a>: [core] Deprecate and Remove XPath 1.0 support</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1785">#1785</a>: [core] Allow abstract node types to be valid rulechain visits</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1825">#1825</a>: [core] Support NoAttribute for XPath</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2038">#2038</a>: [core] Remove DCD</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2218">#2218</a>: [core] <code class="language-plaintext highlighter-rouge">isFindBoundary</code> should not be an attribute</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2234">#2234</a>: [core] Consolidate PMD CLI into a single command</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2239">#2239</a>: [core] Merging Javacc build scripts</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2500">#2500</a>: [core] Clarify API for ANTLR based languages</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2518">#2518</a>: [core] Language properties</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2602">#2602</a>: [core] Remove ParserOptions</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/2614">#2614</a>: [core] Upgrade Saxon, add XPath 3.1, remove Jaxen</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/2696">#2696</a>: [core] Remove DFA</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2821">#2821</a>: [core] Rule processing error filenames are missing paths</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2873">#2873</a>: [core] Utility classes in pmd 7</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2885">#2885</a>: [core] Error recovery mode</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3203">#3203</a>: [core] Replace RuleViolationFactory implementations with ViolationDecorator</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3692">#3692</a>: [core] Analysis listeners</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3782">#3782</a>: [core] Language lifecycle</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3815">#3815</a>: [core] Update Saxon HE to 10.7</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3893">#3893</a>: [core] Text documents</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3902">#3902</a>: [core] Violation decorators</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3903">#3903</a>: [core] Consolidate <code class="language-plaintext highlighter-rouge">n.s.pmd.reporting</code> package</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3905">#3905</a>: [core] Stabilize tree export API</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3917">#3917</a>: [core] Consolidate <code class="language-plaintext highlighter-rouge">n.s.pmd.lang.rule</code> package</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3918">#3918</a>: [core] Make LanguageRegistry non static</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3919">#3919</a>: [core] Merge CPD and PMD language</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3922">#3922</a>: [core] Better error reporting for the ruleset parser</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4035">#4035</a>: [core] ConcurrentModificationException in DefaultRuleViolationFactory</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4065">#4065</a>: [core] Rename TokenMgrError to LexException, Tokenizer to CpdLexer</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4120">#4120</a>: [core] Explicitly name all language versions</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4204">#4204</a>: [core] Provide a CpdAnalysis class as a programmatic entry point into CPD</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4301">#4301</a>: [core] Remove deprecated property concrete classes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4302">#4302</a>: [core] Migrate Property Framework API to Java 8</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4309">#4309</a>: [core] Cleanups in XPath area</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4312">#4312</a>: [core] Remove unnecessary property <code class="language-plaintext highlighter-rouge">color</code> and system property <code class="language-plaintext highlighter-rouge">pmd.color</code> in <code class="language-plaintext highlighter-rouge">TextColorRenderer</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4313">#4313</a>: [core] Remove support for <lang>-<ruleset> hyphen notation for ruleset references</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4314">#4314</a>: [core] Remove ruleset compatibility filter (RuleSetFactoryCompatibility) and CLI option <code class="language-plaintext highlighter-rouge">--no-ruleset-compatibility</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4323">#4323</a>: [core] Refactor CPD integration</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4348">#4348</a>: [core] Consolidate @<!-- -->InternalApi classes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4349">#4349</a>: [core] Cleanup remaining experimental and deprecated API</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4353">#4353</a>: [core] Micro optimizations for Node API</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4365">#4365</a>: [core] Improve benchmarking</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4397">#4397</a>: [core] Refactor CPD</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4378">#4378</a>: [core] Ruleset loading processes commented rules</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4420">#4420</a>: [core] Remove PMD.EOL</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4425">#4425</a>: [core] Replace TextFile::pathId</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4454">#4454</a>: [core] “Unknown option: ‘-min’” but is referenced in documentation</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4611">#4611</a>: [core] Fix loading language properties from env vars</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4621">#4621</a>: [core] Make <code class="language-plaintext highlighter-rouge">ClasspathClassLoader::getResource</code> child first</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4674">#4674</a>: [core] WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4694">#4694</a>: [core] Fix line/col numbers in TokenMgrError</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4717">#4717</a>: [core] XSLTRenderer doesn’t close report file</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4750">#4750</a>: [core] Fix flaky SummaryHTMLRenderer</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4782">#4782</a>: [core] Avoid using getImage/@<!-- -->Image</li>
|
||
</ul>
|
||
</li>
|
||
<li>cli
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2234">#2234</a>: [core] Consolidate PMD CLI into a single command</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3828">#3828</a>: [core] Progress reporting</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4079">#4079</a>: [cli] Split off CLI implementation into a pmd-cli submodule</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4423">#4423</a>: [cli] Fix NPE when only <code class="language-plaintext highlighter-rouge">--file-list</code> is specified</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4482">#4482</a>: [cli] pmd.bat can only be executed once</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4484">#4484</a>: [cli] ast-dump with no properties produce an NPE</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4594">#4594</a>: [cli] Change completion generation to runtime</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4685">#4685</a>: [cli] Clarify CPD documentation, fix positional parameter handling</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4723">#4723</a>: [cli] Launch fails for “bash pmd”</li>
|
||
</ul>
|
||
</li>
|
||
<li>doc
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/995">#995</a>: [doc] Document API evolution principles as ADR</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2501">#2501</a>: [doc] Verify ANTLR Documentation</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2511">#2511</a>: [doc] Review guides for writing java/xpath rules for correctness with PMD 7</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3175">#3175</a>: [doc] Document language module features</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4294">#4294</a>: [doc] Migration Guide for upgrading PMD 6 ➡️ 7</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4303">#4303</a>: [doc] Document new property framework</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4308">#4308</a>: [doc] Document XPath API @<!-- ->NoAttribute and @<!-- -->DeprecatedAttribute</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4319">#4319</a>: [doc] Document TypeRes API and Symbols API</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4438">#4438</a>: [doc] Documentation links in VS Code are outdated</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4521">#4521</a>: [doc] Website is not mobile friendly</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4676">#4676</a>: [doc] Clarify how CPD <code class="language-plaintext highlighter-rouge">--ignore-literals</code> and <code class="language-plaintext highlighter-rouge">--ignore-identifiers</code> work</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4659">#4659</a>: [doc] Improve ant documentation</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4669">#4669</a>: [doc] Add bld PMD Extension to Tools / Integrations</li>
|
||
</ul>
|
||
</li>
|
||
<li>testing
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2435">#2435</a>: [test] Remove duplicated Dummy language module</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4234">#4234</a>: [test] Tests that change the logging level do not work</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p>Language specific fixes:</p>
|
||
|
||
<ul>
|
||
<li>apex
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1937">#1937</a>: [apex] Apex should only have a single RootNode</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1648">#1648</a>: [apex,vf] Remove CodeClimate dependency</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1750">#1750</a>: [apex] Remove apex statistical rules</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/2836">#2836</a>: [apex] Remove Apex ProjectMirror</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3766">#3766</a>: [apex] Replace Jorje with fully open source front-end</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3973">#3973</a>: [apex] Update parser to support new ‘as user’ keywords (User Mode for Database Operations)</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4427">#4427</a>: [apex] ApexBadCrypto test failing to detect inline code</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4453">#4453</a>: [apex] [7.0-rc1] Exception while initializing Apexlink (Index 34812 out of bounds for length 34812)</li>
|
||
</ul>
|
||
</li>
|
||
<li>apex-design
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2667">#2667</a>: [apex] Integrate nawforce/ApexLink to build robust Unused rule</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4509">#4509</a>: [apex] ExcessivePublicCount doesn’t consider inner classes correctly</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4596">#4596</a>: [apex] ExcessivePublicCount ignores properties</li>
|
||
</ul>
|
||
</li>
|
||
<li>apex-performance
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4675">#4675</a>: [apex] New Rule: OperationWithHighCostInLoop</li>
|
||
</ul>
|
||
</li>
|
||
<li>apex-security
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4646">#4646</a>: [apex] ApexSOQLInjection does not recognise SObjectType or SObjectField as safe variable types</li>
|
||
</ul>
|
||
</li>
|
||
<li>groovy
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4726">#4726</a>: [groovy] Support Groovy to 3 and 4 and CPD suppressions</li>
|
||
</ul>
|
||
</li>
|
||
<li>java
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/520">#520</a>: [java] Allow <code class="language-plaintext highlighter-rouge">@SuppressWarnings</code> with constants instead of literals</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/864">#864</a>: [java] Similar/duplicated implementations for determining FQCN</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/905">#905</a>: [java] Add new node for anonymous class declaration</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/910">#910</a>: [java] AST inconsistency between primitive and reference type arrays</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/997">#997</a>: [java] Java8 parsing corner case with annotated array types</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/998">#998</a>: [java] AST inconsistencies around FormalParameter</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1019">#1019</a>: [java] Breaking Java Grammar changes for PMD 7.0.0</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1124">#1124</a>: [java] ImmutableList implementation in the qname codebase</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1128">#1128</a>: [java] Improve ASTLocalVariableDeclaration</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1150">#1150</a>: [java] ClassOrInterfaceType AST improvements</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1207">#1207</a>: [java] Resolve explicit types using FQCNs, without hitting the classloader</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1307">#1307</a>: [java] AccessNode API changes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1367">#1367</a>: [java] Parsing error on annotated inner class</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1661">#1661</a>: [java] About operator nodes</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/2366">#2366</a>: [java] Remove qualified names</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2819">#2819</a>: [java] GLB bugs in pmd 7</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3642">#3642</a>: [java] Parse error on rare extra dimensions on method return type on annotation methods</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3763">#3763</a>: [java] Ambiguous reference error in valid code</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3749">#3749</a>: [java] Improve <code class="language-plaintext highlighter-rouge">isOverridden</code> in ASTMethodDeclaration</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3750">#3750</a>: [java] Make symbol table support instanceof pattern bindings</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3751">#3751</a>: [java] Rename some node types</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3752">#3752</a>: [java] Expose annotations in symbol API</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4237">#4237</a>: [java] Cleanup handling of Java comments</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4317">#4317</a>: [java] Some AST nodes should not be TypeNodes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4359">#4359</a>: [java] Type resolution fails with NPE when the scope is not a type declaration</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4367">#4367</a>: [java] Move testrule TypeResTest into internal</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4383">#4383</a>: [java] IllegalStateException: Object is not an array type!</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4401">#4401</a>: [java] PMD 7 fails to build under Java 19</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4405">#4405</a>: [java] Processing error with ArrayIndexOutOfBoundsException</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4583">#4583</a>: [java] Support JDK 21 (LTS)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4628">#4628</a>: [java] Support loading classes from java runtime images</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4753">#4753</a>: [java] PMD crashes while using generics and wildcards</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-bestpractices
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/342">#342</a>: [java] AccessorMethodGeneration: Name clash with another public field not properly handled</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/755">#755</a>: [java] AccessorClassGeneration false positive for private constructors</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/770">#770</a>: [java] UnusedPrivateMethod yields false positive for counter-variant arguments</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/807">#807</a>: [java] AccessorMethodGeneration false positive with overloads</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/833">#833</a>: [java] ForLoopCanBeForeach should consider iterating on this</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1189">#1189</a>: [java] UnusedPrivateMethod false positive from inner class via external class</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1205">#1205</a>: [java] Improve ConstantsInInterface message to mention alternatives</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1212">#1212</a>: [java] Don’t raise JUnitTestContainsTooManyAsserts on JUnit 5’s assertAll</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1422">#1422</a>: [java] JUnitTestsShouldIncludeAssert false positive with inherited @<!-- -->Rule field</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1455">#1455</a>: [java] JUnitTestsShouldIncludeAssert: False positives for assert methods named “check” and “verify”</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1563">#1563</a>: [java] ForLoopCanBeForeach false positive with method call using index variable</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1565">#1565</a>: [java] JUnitAssertionsShouldIncludeMessage false positive with AssertJ</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1747">#1747</a>: [java] PreserveStackTrace false-positive</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1969">#1969</a>: [java] MissingOverride false-positive triggered by package-private method overwritten in another package by extending class</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1998">#1998</a>: [java] AccessorClassGeneration false-negative: subclass calls private constructor</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2130">#2130</a>: [java] UnusedLocalVariable: false-negative with array</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2147">#2147</a>: [java] JUnitTestsShouldIncludeAssert - false positives with lambdas and static methods</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2464">#2464</a>: [java] LooseCoupling must ignore class literals: ArrayList.class</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2542">#2542</a>: [java] UseCollectionIsEmpty can not detect the case <code class="language-plaintext highlighter-rouge">foo.bar().size()</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2650">#2650</a>: [java] UseTryWithResources false positive when AutoCloseable helper used</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2796">#2796</a>: [java] UnusedAssignment false positive with call chains</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2797">#2797</a>: [java] MissingOverride long-standing issues</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2806">#2806</a>: [java] SwitchStmtsShouldHaveDefault false-positive with Java 14 switch non-fallthrough branches</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2822">#2822</a>: [java] LooseCoupling rule: Extend to cover user defined implementations and interfaces</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/2843">#2843</a>: [java] Fix UnusedAssignment FP with field accesses</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2882">#2882</a>: [java] UseTryWithResources - false negative for explicit close</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2883">#2883</a>: [java] JUnitAssertionsShouldIncludeMessage false positive with method call</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2890">#2890</a>: [java] UnusedPrivateMethod false positive with generics</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2946">#2946</a>: [java] SwitchStmtsShouldHaveDefault false positive on enum inside enums</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3672">#3672</a>: [java] LooseCoupling - fix false positive with generics</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3675">#3675</a>: [java] MissingOverride - fix false positive with mixing type vars</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3858">#3858</a>: [java] UseCollectionIsEmpty should infer local variable type from method invocation</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4433">#4433</a>: [java] [7.0-rc1] ReplaceHashtableWithMap on java.util.Properties</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4492">#4492</a>: [java] GuardLogStatement gives false positive when argument is a Java method reference</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4503">#4503</a>: [java] JUnitTestsShouldIncludeAssert: false negative with TestNG</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4516">#4516</a>: [java] UnusedLocalVariable: false-negative with try-with-resources</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4517">#4517</a>: [java] UnusedLocalVariable: false-negative with compound assignments</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4518">#4518</a>: [java] UnusedLocalVariable: false-positive with multiple for-loop indices</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4625">#4625</a>: [java] UnusedPrivateMethod false positive: Autoboxing into Number</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4634">#4634</a>: [java] JUnit4TestShouldUseTestAnnotation false positive with TestNG</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-codestyle
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1208">#1208</a>: [java] PrematureDeclaration rule false-positive on variable declared to measure time</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1429">#1429</a>: [java] PrematureDeclaration as result of method call (false positive)</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1480">#1480</a>: [java] IdenticalCatchBranches false positive with return expressions</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1673">#1673</a>: [java] UselessParentheses false positive with conditional operator</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1790">#1790</a>: [java] UnnecessaryFullyQualifiedName false positive with enum constant</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1918">#1918</a>: [java] UselessParentheses false positive with boolean operators</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2134">#2134</a>: [java] PreserveStackTrace not handling <code class="language-plaintext highlighter-rouge">Throwable.addSuppressed(...)</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2299">#2299</a>: [java] UnnecessaryFullyQualifiedName false positive with similar package name</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2391">#2391</a>: [java] UseDiamondOperator FP when expected type and constructed type have a different parameterization</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2528">#2528</a>: [java] MethodNamingConventions - JUnit 5 method naming not support ParameterizedTest</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2739">#2739</a>: [java] UselessParentheses false positive for string concatenation</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2748">#2748</a>: [java] UnnecessaryCast false positive with unchecked cast</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2847">#2847</a>: [java] New Rule: Use Explicit Types</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2973">#2973</a>: [java] New rule: UnnecessaryBoxing</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3195">#3195</a>: [java] Improve rule UnnecessaryReturn to detect more cases</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3218">#3218</a>: [java] Generalize UnnecessaryCast to flag all unnecessary casts</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3221">#3221</a>: [java] PrematureDeclaration false positive for unused variables</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3238">#3238</a>: [java] Improve ExprContext, fix FNs of UnnecessaryCast</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3500">#3500</a>: [java] UnnecessaryBoxing - check for Integer.valueOf(String) calls</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4239">#4239</a>: [java] UnnecessaryLocalBeforeReturn - false positive with catch clause</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4268">#4268</a>: [java] CommentDefaultAccessModifier: false positive with TestNG annotations</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4273">#4273</a>: [java] CommentDefaultAccessModifier ignoredAnnotations should include “org.junit.jupiter.api.extension.RegisterExtension” by default</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4357">#4357</a>: [java] Fix IllegalStateException in UseDiamondOperator rule</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4432">#4432</a>: [java] [7.0-rc1] UnnecessaryImport - Unused static import is being used</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4455">#4455</a>: [java] FieldNamingConventions: false positive with lombok’s @<!-- -->UtilityClass</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4487">#4487</a>: [java] UnnecessaryConstructor: false-positive with @<!-- -->Inject and @<!-- -->Autowired</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4511">#4511</a>: [java] LocalVariableCouldBeFinal shouldn’t report unused variables</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4512">#4512</a>: [java] MethodArgumentCouldBeFinal shouldn’t report unused parameters</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4557">#4557</a>: [java] UnnecessaryImport FP with static imports of overloaded methods</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4578">#4578</a>: [java] CommentDefaultAccessModifier comment needs to be before annotation if present</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4631">#4631</a>: [java] UnnecessaryFullyQualifiedName fails to recognize illegal self reference in enums</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4645">#4645</a>: [java] CommentDefaultAccessModifier - False Positive with JUnit5’s ParameterizedTest</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4754">#4754</a>: [java] EmptyControlStatementRule: Add allowCommentedBlocks property</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-design
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/174">#174</a>: [java] SingularField false positive with switch in method that both assigns and reads field</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1014">#1014</a>: [java] LawOfDemeter: False positive with lambda expression</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1605">#1605</a>: [java] LawOfDemeter: False positive for standard UTF-8 charset name</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2160">#2160</a>: [java] Issues with Law of Demeter</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2175">#2175</a>: [java] LawOfDemeter: False positive for chained methods with generic method call</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2179">#2179</a>: [java] LawOfDemeter: False positive with static property access - should treat class-level property as global object, not dot-accessed property</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2180">#2180</a>: [java] LawOfDemeter: False positive with Thread and ThreadLocalRandom</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2182">#2182</a>: [java] LawOfDemeter: False positive with package-private access</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2188">#2188</a>: [java] LawOfDemeter: False positive with fields assigned to local vars</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2536">#2536</a>: [java] ClassWithOnlyPrivateConstructorsShouldBeFinal can’t detect inner class</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3668">#3668</a>: [java] ClassWithOnlyPrivateConstructorsShouldBeFinal - fix FP with inner private classes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3754">#3754</a>: [java] SingularField false positive with read in while condition</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3786">#3786</a>: [java] SimplifyBooleanReturns should consider operator precedence</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3840">#3840</a>: [java] LawOfDemeter disallows method call on locally created object</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4238">#4238</a>: [java] Make LawOfDemeter not use the rulechain</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4254">#4254</a>: [java] ImmutableField - false positive with Lombok @<!-- -->Setter</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4434">#4434</a>: [java] [7.0-rc1] ExceptionAsFlowControl when simply propagating</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4456">#4456</a>: [java] FinalFieldCouldBeStatic: false positive with lombok’s @<!-- -->UtilityClass</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4477">#4477</a>: [java] SignatureDeclareThrowsException: false-positive with TestNG annotations</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4490">#4490</a>: [java] ImmutableField - false negative with Lombok @<!-- -->Getter</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4549">#4549</a>: [java] Make LawOfDemeter results deterministic</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-documentation
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4369">#4369</a>: [java] Improve CommentSize</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4416">#4416</a>: [java] Fix reported line number in CommentContentRule</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-errorprone
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/659">#659</a>: [java] MissingBreakInSwitch - last default case does not contain a break</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/718">#718</a>: [java] BrokenNullCheck false positive with parameter/field confusion</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1005">#1005</a>: [java] CloneMethodMustImplementCloneable triggers for interfaces</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1669">#1669</a>: [java] NullAssignment - FP with ternay and null as constructor argument</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1831">#1831</a>: [java] DetachedTestCase reports abstract methods</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1899">#1899</a>: [java] Recognize @<!-- -->SuppressWanings(“fallthrough”) for MissingBreakInSwitch</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2320">#2320</a>: [java] NullAssignment - FP with ternary and null as method argument</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2532">#2532</a>: [java] AvoidDecimalLiteralsInBigDecimalConstructor can not detect the case <code class="language-plaintext highlighter-rouge">new BigDecimal(Expression)</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2579">#2579</a>: [java] MissingBreakInSwitch detects the lack of break in the last case</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2880">#2880</a>: [java] CompareObjectsWithEquals - false negative with type res</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2893">#2893</a>: [java] Remove special cases from rule EmptyCatchBlock</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2894">#2894</a>: [java] Improve MissingBreakInSwitch</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3071">#3071</a>: [java] BrokenNullCheck FP with PMD 6.30.0</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3087">#3087</a>: [java] UnnecessaryBooleanAssertion overlaps with SimplifiableTestAssertion</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3100">#3100</a>: [java] UseCorrectExceptionLogging FP in 6.31.0</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3173">#3173</a>: [java] UseProperClassLoader false positive</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3351">#3351</a>: [java] ConstructorCallsOverridableMethod ignores abstract methods</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3400">#3400</a>: [java] AvoidUsingOctalValues FN with underscores</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3843">#3843</a>: [java] UseEqualsToCompareStrings should consider return type</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4063">#4063</a>: [java] AvoidBranchingStatementAsLastInLoop: False-negative about try/finally block</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4356">#4356</a>: [java] Fix NPE in CloseResourceRule</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4449">#4449</a>: [java] AvoidAccessibilityAlteration: Possible false positive in AvoidAccessibilityAlteration rule when using Lambda expression</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4457">#4457</a>: [java] OverrideBothEqualsAndHashcode: false negative with anonymous classes</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4493">#4493</a>: [java] MissingStaticMethodInNonInstantiatableClass: false-positive about @<!-- -->Inject</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4505">#4505</a>: [java] ImplicitSwitchFallThrough NPE in PMD 7.0.0-rc1</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4510">#4510</a>: [java] ConstructorCallsOverridableMethod: false positive with lombok’s @<!-- -->Value</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4513">#4513</a>: [java] UselessOperationOnImmutable various false negatives with String</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4514">#4514</a>: [java] AvoidLiteralsInIfCondition false positive and negative for String literals when ignoreExpressions=true</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4546">#4546</a>: [java] OverrideBothEqualsAndHashCode ignores records</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4719">#4719</a>: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-multithreading
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2537">#2537</a>: [java] DontCallThreadRun can’t detect the case that call run() in <code class="language-plaintext highlighter-rouge">this.run()</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2538">#2538</a>: [java] DontCallThreadRun can’t detect the case that call run() in <code class="language-plaintext highlighter-rouge">foo.bar.run()</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2577">#2577</a>: [java] UseNotifyAllInsteadOfNotify falsely detect a special case with argument: <code class="language-plaintext highlighter-rouge">foo.notify(bar)</code></li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4483">#4483</a>: [java] NonThreadSafeSingleton false positive with double-checked locking</li>
|
||
</ul>
|
||
</li>
|
||
<li>java-performance
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/1224">#1224</a>: [java] InefficientEmptyStringCheck false negative in anonymous class</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2587">#2587</a>: [java] AvoidArrayLoops could also check for list copy through iterated List.add()</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/2712">#2712</a>: [java] SimplifyStartsWith false-positive with AssertJ</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3486">#3486</a>: [java] InsufficientStringBufferDeclaration: Fix NPE</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/3848">#3848</a>: [java] StringInstantiation: false negative when using method result</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4070">#4070</a>: [java] A false positive about the rule RedundantFieldInitializer</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4458">#4458</a>: [java] RedundantFieldInitializer: false positive with lombok’s @<!-- -->Value</li>
|
||
</ul>
|
||
</li>
|
||
<li>javascript
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4673">#4673</a>: [javascript] CPD: Added support for decorator notation</li>
|
||
</ul>
|
||
</li>
|
||
<li>kotlin
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/419">#419</a>: [kotlin] Add support for Kotlin</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4389">#4389</a>: [kotlin] Update grammar to version 1.8</li>
|
||
</ul>
|
||
</li>
|
||
<li>plsql
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4820">#4820</a>: [plsql] WITH clause is ignored for SELECT INTO statements</li>
|
||
</ul>
|
||
</li>
|
||
<li>swift
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1877">#1877</a>: [swift] Feature/swift rules</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1882">#1882</a>: [swift] UnavailableFunction Swift rule</li>
|
||
<li><a href="https://github.com/pmd/pmd/issues/4697">#4697</a>: [swift] Support Swift 5.9 features (mainly macros expansion expressions)</li>
|
||
</ul>
|
||
</li>
|
||
<li>xml
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1800">#1800</a>: [xml] Unimplement org.w3c.dom.Node from the XmlNodeWrapper</li>
|
||
</ul>
|
||
</li>
|
||
<li>xml-bestpractices
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4592">#4592</a>: [xml] Add MissingEncoding rule</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3 id="-external-contributions">✨ External Contributions</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1658">#1658</a>: [core] Node support for Antlr-based languages - <a href="https://github.com/matifraga">Matías Fraga</a> (@matifraga)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1698">#1698</a>: [core] [swift] Antlr Base Parser adapter and Swift Implementation - <a href="https://github.com/lsoncini">Lucas Soncini</a> (@lsoncini)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1774">#1774</a>: [core] Antlr visitor rules - <a href="https://github.com/lsoncini">Lucas Soncini</a> (@lsoncini)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1877">#1877</a>: [swift] Feature/swift rules - <a href="https://github.com/matifraga">Matías Fraga</a> (@matifraga)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1881">#1881</a>: [doc] Add ANTLR documentation - <a href="https://github.com/matifraga">Matías Fraga</a> (@matifraga)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/1882">#1882</a>: [swift] UnavailableFunction Swift rule - <a href="https://github.com/tomidelucca">Tomás de Lucca</a> (@tomidelucca)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/2830">#2830</a>: [apex] Apexlink POC - <a href="https://github.com/nawforce">Kevin Jones</a> (@nawforce)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/3866">#3866</a>: [core] Add CLI Progress Bar - <a href="https://github.com/JerritEic">@JerritEic</a> (@JerritEic)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4093">#4093</a>: [apex] Summit-AST Apex module - Part 1 - <a href="https://github.com/eklimo">Edward Klimoshenko</a> (@eklimo)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4151">#4151</a>: [apex] Summit-AST Apex module - Part 2 - expression nodes - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4171">#4171</a>: [apex] Summit-AST Apex module - Part 3 - initializers - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4206">#4206</a>: [apex] Summit-AST Apex module - Part 4 - statements - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4219">#4219</a>: [apex] Summit-AST Apex module - Part 5 - annotations, triggers, misc. - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4242">#4242</a>: [apex] Merge 6.52 into experimental-apex-parser - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4251">#4251</a>: [apex] Summit-AST Apex module - Part 6 Passing testsuite - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4402">#4402</a>: [javascript] CPD: add support for Typescript using antlr4 grammar - <a href="https://github.com/pguyot">Paul Guyot</a> (@pguyot)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4403">#4403</a>: [julia] CPD: Add support for Julia code duplication - <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4412">#4412</a>: [doc] Added new error msg to ConstantsInInterface - <a href="https://github.com/dague1">David Ljunggren</a> (@dague1)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4426">#4426</a>: [cpd] New XML to HTML XLST report format for PMD CPD - <a href="https://github.com/mohan-chinnappan-n">mohan-chinnappan-n</a> (@mohan-chinnappan-n)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4428">#4428</a>: [apex] ApexBadCrypto bug fix for #4427 - inline detection of hard coded values - <a href="https://github.com/sfdcsteve">Steven Stearns</a> (@sfdcsteve)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4431">#4431</a>: [coco] CPD: Coco support for code duplication detection - <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4444">#4444</a>: [java] CommentDefaultAccessModifier - ignore org.junit.jupiter.api.extension.RegisterExtension by default - <a href="https://github.com/nirvikpatel">Nirvik Patel</a> (@nirvikpatel)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4448">#4448</a>: [apex] Bump summit-ast to new release 2.1.0 (and remove workaround) - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4450">#4450</a>: [java] Fix #4449 AvoidAccessibilityAlteration: Correctly handle Lambda expressions in PrivilegedAction scenarios - <a href="https://github.com/mohui1999">Seren</a> (@mohui1999)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4452">#4452</a>: [doc] Update PMD_APEX_ROOT_DIRECTORY documentation reference - <a href="https://github.com/nwcm">nwcm</a> (@nwcm)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4470">#4470</a>: [cpp] CPD: Added strings as literal and ignore identifiers in sequences - <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4474">#4474</a>: [java] ImmutableField: False positive with lombok (fixes #4254) - <a href="https://github.com/PimvanderLoos">Pim van der Loos</a> (@PimvanderLoos)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4479">#4479</a>: [apex] Merge main (7.x) branch into experimental-apex-parser and fix tests - <a href="https://github.com/aaronhurst-google">Aaron Hurst</a> (@aaronhurst-google)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4488">#4488</a>: [java] Fix #4477: A false-positive about SignatureDeclareThrowsException - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4494">#4494</a>: [java] Fix #4487: A false-positive about UnnecessaryConstructor and @<!-- -->Inject and @<!-- -->Autowired - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4495">#4495</a>: [java] Fix #4493: false-positive about MissingStaticMethodInNonInstantiatableClass and @<!-- -->Inject - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4507">#4507</a>: [java] Fix #4503: A false negative about JUnitTestsShouldIncludeAssert and testng - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4520">#4520</a>: [doc] Fix typo: missing closing quotation mark after CPD-END - <a href="https://github.com/joaodinissf">João Dinis Ferreira</a> (@joaodinissf)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4528">#4528</a>: [apex] Update to apexlink - <a href="https://github.com/nawforce">Kevin Jones</a> (@nawforce)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4533">#4533</a>: [java] Fix #4063: False-negative about try/catch block in Loop - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4536">#4536</a>: [java] Fix #4268: CommentDefaultAccessModifier - false positive with TestNG’s @<!-- -->Test annotation - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4537">#4537</a>: [java] Fix #4455: A false positive about FieldNamingConventions and UtilityClass - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4538">#4538</a>: [java] Fix #4456: A false positive about FinalFieldCouldBeStatic and UtilityClass - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4540">#4540</a>: [java] Fix #4457: false negative about OverrideBothEqualsAndHashcode - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4541">#4541</a>: [java] Fix #4458: A false positive about RedundantFieldInitializer and @<!-- -->Value - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4542">#4542</a>: [java] Fix #4510: A false positive about ConstructorCallsOverridableMethod and @<!-- -->Value - <a href="https://github.com/LynnBroe">AnnaDev</a> (@LynnBroe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4553">#4553</a>: [java] Fix #4492: GuardLogStatement gives false positive when argument is a Java method reference - <a href="https://github.com/anastasiia-koba">Anastasiia Koba</a> (@anastasiia-koba)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4637">#4637</a>: [java] fix #4634 - JUnit4TestShouldUseTestAnnotation false positive with TestNG - <a href="https://github.com/krdabrowski">Krystian Dabrowski</a> (@krdabrowski)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4640">#4640</a>: [cli] Launch script fails if run via “bash pmd” - <a href="https://github.com/shai-bennathan">Shai Bennathan</a> (@shai-bennathan)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4649">#4649</a>: [apex] Add SObjectType and SObjectField to list of injectable SOQL variable types - <a href="https://github.com/rcorfieldffdc">Richard Corfield</a> (@rcorfieldffdc)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4651">#4651</a>: [doc] Add “Tencent Cloud Code Analysis” in Tools / Integrations - <a href="https://github.com/cyw3">yale</a> (@cyw3)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4664">#4664</a>: [cli] CPD: Fix NPE when only <code class="language-plaintext highlighter-rouge">--file-list</code> is specified - <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4665">#4665</a>: [java] Doc: Fix references AutoClosable -> AutoCloseable - <a href="https://github.com/AndreyBozhko">Andrey Bozhko</a> (@AndreyBozhko)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4673">#4673</a>: [javascript] CPD: Added support for decorator notation - <a href="https://github.com/wener-tiobe">Wener</a> (@wener-tiobe)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4677">#4677</a>: [apex] Add new rule: OperationWithHighCostInLoop - <a href="https://github.com/tprouvot">Thomas Prouvot</a> (@tprouvot)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4698">#4698</a>: [swift] Add macro expansion support for swift 5.9 - <a href="https://github.com/kenji21">Richard B.</a> (@kenji21)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4706">#4706</a>: [java] DetachedTestCase should not report on abstract methods - <a href="https://github.com/Debamoy">Debamoy Datta</a> (@Debamoy)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4719">#4719</a>: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string - <a href="https://github.com/ciufudean">ciufudean</a> (@ciufudean)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4738">#4738</a>: [doc] Added reference to the PMD extension for bld - <a href="https://github.com/ethauvin">Erik C. Thauvin</a> (@ethauvin)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4749">#4749</a>: Fixes NoSuchMethodError on processing errors in pmd-compat6 - <a href="https://github.com/bergander">Andreas Bergander</a> (@bergander)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4750">#4750</a>: [core] Fix flaky SummaryHTMLRenderer - <a href="https://github.com/219sansim">219sansim</a> (@219sansim)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4754">#4754</a>: [java] EmptyControlStatementRule: Add allowCommentedBlocks property - <a href="https://github.com/bergander">Andreas Bergander</a> (@bergander)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4759">#4759</a>: [java] fix: remove delimiter attribute from ruleset category/java/errorprone.xml - <a href="https://github.com/marcindabrowski">Marcin Dąbrowski</a> (@marcindabrowski)</li>
|
||
<li><a href="https://github.com/pmd/pmd/pull/4825">#4825</a>: [plsql] Fix ignored WITH clause for SELECT INTO statements - <a href="https://github.com/lbovet">Laurent Bovet</a> (@lbovet)</li>
|
||
</ul>
|
||
|
||
<h3 id="-stats">📈 Stats</h3>
|
||
<ul>
|
||
<li>5007 commits</li>
|
||
<li>658 closed tickets & PRs</li>
|
||
<li>Days since last release: 122</li>
|
||
</ul>
|
||
|
||
|
||
|
||
<div class="tags">
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<footer>
|
||
|
||
<hr />
|
||
<div>
|
||
This documentation is written in markdown. <br />
|
||
If there is something missing or can be improved, edit this page on
|
||
github and create a PR:
|
||
<a
|
||
target="_blank"
|
||
href="https://github.com/pmd/pmd/blob/master/docs/pages/release_notes.md"
|
||
role="button"
|
||
><i class="fab fa-github fa-lg"></i> Edit on GitHub</a
|
||
>
|
||
</div>
|
||
|
||
<hr />
|
||
<div class="row">
|
||
<div class="col-lg-12 footer">
|
||
©2024 PMD Open Source Project. All rights
|
||
reserved. <br />
|
||
Site last generated: Feb 29, 2024 <br />
|
||
<p>
|
||
<img src="images/logo/pmd-logo-70px.png" alt="PMD
|
||
logo"/>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
</div>
|
||
|
||
<!-- /.row -->
|
||
</div>
|
||
<!-- /.container -->
|
||
</div>
|
||
|
||
|
||
<!-- Sticky TOC column -->
|
||
<div class="toc-col">
|
||
<div id="toc"></div>
|
||
</div>
|
||
|
||
<!-- /.toc-container-wrapper -->
|
||
</div>
|
||
</div>
|
||
|
||
<script type="application/javascript" src="assets/jquery-3.5.1/jquery-3.5.1.min.js"></script>
|
||
<script type="application/javascript" src="assets/anchorjs-4.2.2/anchor.min.js"></script>
|
||
<script type="application/javascript" src="assets/navgoco-0.2.1/src/jquery.navgoco.min.js"></script>
|
||
<script type="application/javascript" src="assets/bootstrap-4.5.2-dist/js/bootstrap.bundle.min.js"></script>
|
||
<script type="application/javascript" src="assets/Simple-Jekyll-Search-1.0.8/dest/jekyll-search.js"></script>
|
||
<script type="application/javascript" src="assets/jekyll-table-of-contents/toc.js"></script>
|
||
<script type="application/javascript" src="js/tabstate.js"></script>
|
||
<script type="application/javascript" src="js/customscripts.js"></script>
|
||
|
||
|
||
|
||
</body>
|
||
</html>
|