<!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" href="css/syntax.css"> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> <!--<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">--> <link rel="stylesheet" href="css/modern-business.css"> <link rel="stylesheet" href="css/lavish-bootstrap.css"> <link rel="stylesheet" href="css/customstyles.css"> <link rel="stylesheet" href="css/theme-blue.css"> <link rel="stylesheet" href="css/pmd-customstyles.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> <script src="js/jquery.navgoco.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/2.0.0/anchor.min.js"></script> <script src="js/toc.js"></script> <script src="js/customscripts.js"></script> <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon"> <link rel="icon" href="images/favicon.ico" type="image/x-icon"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <link rel="alternate" type="application/rss+xml" title="" href="https://pmd.github.io/pmd/feed.xml"> <script> $(document).ready(function() { // Initialize navgoco with default options $("#mysidebar").navgoco({ caretHtml: '', accordion: true, openClass: 'active', // open save: false, // leave false or nav highlighting doesn't work right cookie: { name: 'navgoco', expires: false, path: '/' }, slide: { duration: 400, easing: 'swing' } }); $("#collapseAll").click(function(e) { e.preventDefault(); $("#mysidebar").navgoco('toggle', false); }); $("#expandAll").click(function(e) { e.preventDefault(); $("#mysidebar").navgoco('toggle', true); }); }); </script> <script> $(function () { $('[data-toggle="tooltip"]').tooltip() }) </script> <script> $(document).ready(function() { $("#tg-sb-link").click(function() { $("#tg-sb-sidebar").toggle(); $("#tg-sb-content").toggleClass('col-md-9'); $("#tg-sb-content").toggleClass('col-md-12'); $("#tg-sb-icon").toggleClass('fa-toggle-on'); $("#tg-sb-icon").toggleClass('fa-toggle-off'); }); }); </script> </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-inverse navbar-fixed-top"> <div class="container topnavlinks"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="fa fa-home fa-lg navbar-brand" href="index.html"> <span class="projectTitle"> PMD Source Code Analyzer Project</span></a> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <!-- toggle sidebar button --> <li><a id="tg-sb-link" href="#"><i id="tg-sb-icon" class="fa fa-toggle-on"></i> Nav</a></li> <!-- entries without drop-downs appear here --> <li><a href="https://github.com/pmd/pmd/releases/latest" target="_blank">Download</a></li> <li><a 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.--> <!--comment out this block if you want to hide search--> <li> <!--start search--> <div id="search-demo-container"> <input type="text" id="search-input" placeholder="search..."> <ul id="results-container"></ul> </div> <script src="js/jekyll-search.js" type="text/javascript"></script> <script type="text/javascript"> SimpleJekyllSearch.init({ searchInput: document.getElementById('search-input'), resultsContainer: document.getElementById('results-container'), dataSource: 'search.json', searchResultTemplate: '<li><a href="{url}" title="PMD Release Notes">{title}</a></li>', noResultsText: 'No results found.', limit: 10, fuzzy: true, }) </script> <!--end search--> </li> </ul> </div> </div> <!-- /.container --> </nav> <!-- Page Content --> <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 6.18.0</li> <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_next_major_development.html">PMD 7.0.0 development</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_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 class="subfolders"> <a href="#">Extending PMD</a> <ul> <li><a href="pmd_userdocs_extending_writing_pmd_rules.html">Writing a rule</a></li> <li><a href="pmd_userdocs_extending_writing_xpath_rules.html">Writing XPath 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_metrics_howto.html">Using and defining code metrics</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> </ul> </li> <li><a href="pmd_userdocs_cpd.html">Copy-paste detection</a></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_ant.html">Ant</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="#">Ecmascript 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="#">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="#">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="#">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="#">VM 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="#">XML Rules</a> <ul> <li><a href="pmd_rules_xml.html">Index</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_jsp.html">JSP Support</a></li> <li><a href="pmd_java_metrics_index.html">Java code metrics</a></li> <li><a href="pmd_apex_metrics_index.html">Apex code metrics</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 class="subfolders"> <a href="#">Major contributions</a> <ul> <li><a href="pmd_devdocs_major_adding_new_language.html">Adding a new language</a></li> <li><a href="pmd_devdocs_major_adding_new_cpd_language.html">Adding a new CPD language</a></li> <li><a href="pmd_devdocs_major_adding_new_metrics_framework.html">Adding metrics support to a language</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_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 class="subfolders"> <a href="#">Project management</a> <ul> <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> </ul> </li> </ul> </li> <!-- if you aren't using the accordion, uncomment this block: <p class="external"> <a href="#" id="collapseAll">Collapse All</a> | <a href="#" id="expandAll">Expand All</a> </p> --> </ul> <!-- this highlights the active parent class in the navgoco sidebar. this is critical so that the parent expands when you're viewing a page. This must appear below the sidebar code above. Otherwise, if placed inside customscripts.js, the script runs before the sidebar code runs and the class never gets inserted.--> <script>$("li.active").parents('li').toggleClass("active");</script> </div> <!-- Content Column --> <div class="col-md-9" id="tg-sb-content"> <div class="post-header"> <h1 class="post-title-main">PMD Release Notes</h1> </div> <div class="post-content"> <!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. --> <script> $( document ).ready(function() { // Handler for .ready() called. $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' }); }); </script> <div id="toc"></div> <a target="_blank" href="https://github.com/pmd/pmd/blob/master/docs/pages/release_notes.md" class="btn btn-default githubEditButton" role="button"><i class="fa fa-github fa-lg"></i> Edit me</a> <h2 id="-august-2019---6180">??-August-2019 - 6.18.0</h2> <p>The PMD team is pleased to announce PMD 6.18.0.</p> <p>This is a minor release.</p> <h3 id="new-and-noteworthy">New and noteworthy</h3> <h4 id="full-support-for-scala">Full support for Scala</h4> <p>Thanks to <a href="https://github.com/tophersmith">Chris Smith</a> PMD now fully supports Scala. Now rules for analyzing Scala code can be developed in addition to the Copy-Pase-Detection (CPD) functionality. There are no rules yet, so contributions are welcome.</p> <p>Additionally Scala support has been upgraded from 2.12.4 to 2.13.</p> <h4 id="new-rule-designer-documentation">New rule designer documentation</h4> <p>The documentation for the rule designer is now available on the main PMD documentation page: <a href="pmd_userdocs_extending_designer_reference.html">Rule Designer Reference</a>. Check it out to learn about the usage and features of the rule designer.</p> <h4 id="new-rules">New rules</h4> <ul> <li>The Java rule <a href="pmd_rules_java_bestpractices.html#avoidmessagedigestfield"><code class="highlighter-rouge">AvoidMessageDigestField</code></a> (<code class="highlighter-rouge">java-bestpractices</code>) detects fields of the type <code class="highlighter-rouge">java.security.MessageDigest</code>. Using a message digest instance as a field would need to be synchronized, as it can easily be used by multiple threads. Without synchronization the calculated hash could be entirely wrong. Instead of declaring this as a field and synchronize access to use it from multiple threads, a new instance should be created when needed. This rule is also active when using java’s quickstart ruleset.</li> </ul> <h4 id="modified-rules">Modified Rules</h4> <ul> <li>The Java rule <a href="pmd_rules_java_errorprone.html#closeresource"><code class="highlighter-rouge">CloseResource</code></a> (<code class="highlighter-rouge">java-errorprone</code>) now ignores by default instances of <code class="highlighter-rouge">java.util.stream.Stream</code>. These streams are <code class="highlighter-rouge">AutoCloseable</code>, but most streams are backed by collections, arrays, or generating functions, which require no special resource management. However, there are some exceptions: The stream returned by <code class="highlighter-rouge">Files::lines(Path)</code> is backed by a actual file and needs to be closed. These instances won’t be found by default by the rule anymore.</li> </ul> <h3 id="fixed-issues">Fixed Issues</h3> <ul> <li>all <ul> <li><a href="https://github.com/pmd/pmd/issues/1465">#1465</a>: [core] Stylesheet pmd-report.xslt fails to display filepath if ‘java’ in path</li> <li><a href="https://github.com/pmd/pmd/issues/1923">#1923</a>: [core] Incremental analysis does not work with shortnames</li> <li><a href="https://github.com/pmd/pmd/pull/1983">#1983</a>: [core] Avoid crashes with analysis cache when classpath references non-existing directories</li> <li><a href="https://github.com/pmd/pmd/pull/1990">#1990</a>: [core] Incremental analysis mixes XPath rule violations</li> </ul> </li> <li>java-bestpractices <ul> <li><a href="https://github.com/pmd/pmd/issues/1862">#1862</a>: [java] New rule for MessageDigest.getInstance</li> <li><a href="https://github.com/pmd/pmd/issues/1952">#1952</a>: [java] UnusedPrivateField not triggering if @Value annotation present</li> </ul> </li> <li>java-codestyle <ul> <li><a href="https://github.com/pmd/pmd/issues/1951">#1951</a>: [java] UnnecessaryFullyQualifiedName rule triggered when variable name clashes with package name</li> </ul> </li> <li>java-errorprone <ul> <li><a href="https://github.com/pmd/pmd/issues/1922">#1922</a>: [java] CloseResource possible false positive with Streams</li> <li><a href="https://github.com/pmd/pmd/issues/1966">#1966</a>: [java] CloseResource false positive if Stream is passed as method parameter</li> <li><a href="https://github.com/pmd/pmd/issues/1967">#1967</a>: [java] CloseResource false positive with late assignment of variable</li> </ul> </li> <li>plsql <ul> <li><a href="https://github.com/pmd/pmd/issues/1947">#1947</a>: [plsql] ParseError - SELECT with FOR UPDATE OF</li> </ul> </li> </ul> <h3 id="api-changes">API Changes</h3> <h4 id="changes-to-renderer">Changes to Renderer</h4> <ul> <li> <p>Each renderer has now a new method <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/renderers/Renderer.html#setUseShortNames(List)"><code class="highlighter-rouge">Renderer#setUseShortNames</code></a> which is used for implementing the “shortnames” CLI option. The method is automatically called by PMD, if this CLI option is in use. When rendering filenames to the report, the new helper method <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/renderers/AbstractRenderer.html#determineFileName(String)"><code class="highlighter-rouge">AbstractRenderer#determineFileName</code></a> should be used. This will change the filename to a short name, if the CLI option “shortnames” is used.</p> <p>Not adjusting custom renderers will make them render always the full file names and not honoring the CLI option “shortnames”.</p> </li> </ul> <h4 id="deprecated-apis">Deprecated APIs</h4> <h5 id="for-removal">For removal</h5> <ul> <li>The methods <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-java/6.18.0/net/sourceforge/pmd/lang/java/ast/ASTImportDeclaration.html#getImportedNameNode()"><code class="highlighter-rouge">getImportedNameNode</code></a> and <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-java/6.18.0/net/sourceforge/pmd/lang/java/ast/ASTImportDeclaration.html#getPackage()"><code class="highlighter-rouge">getPackage</code></a> have been deprecated and will be removed with PMD 7.0.0.</li> <li>The method <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/RuleContext.html#setSourceCodeFilename(String)"><code class="highlighter-rouge">RuleContext#setSourceCodeFilename</code></a> has been deprecated and will be removed. The already existing method <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/RuleContext.html#setSourceCodeFile(File)"><code class="highlighter-rouge">RuleContext#setSourceCodeFile</code></a> should be used instead. The method <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/RuleContext.html#getSourceCodeFilename()"><code class="highlighter-rouge">RuleContext#getSourceCodeFilename</code></a> still exists and returns just the filename without the full path.</li> <li>The method <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/processor/AbstractPMDProcessor.html#filenameFrom(DataSource)"><code class="highlighter-rouge">AbstractPMDProcessor#filenameFrom</code></a> has been deprecated. It was used to determine a “short name” of the file being analyzed, so that the report can use short names. However, this logic has been moved to the renderers.</li> <li>The method <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/Report.html#metrics()"><code class="highlighter-rouge">Report#metrics</code></a> and <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/Report.html#"><code class="highlighter-rouge">Report</code></a> have been deprecated. They were leftovers from a previous deprecation round targeting <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/lang/rule/stat/StatisticalRule.html#"><code class="highlighter-rouge">StatisticalRule</code></a>.</li> </ul> <h5 id="internal-apis">Internal APIs</h5> <ul> <li>The contents of the package <a href="https://javadoc.io/page/net.sourceforge.pmd/pmd-core/6.18.0/net/sourceforge/pmd/cache/package-summary.html#"><code class="highlighter-rouge">net.sourceforge.pmd.cache</code></a> have been marked <code class="highlighter-rouge">@InternalApi</code>. That subsystem is very low-level and is not intended for public use. It will be hidden with PMD 7.0.0.</li> </ul> <h3 id="external-contributions">External Contributions</h3> <ul> <li><a href="https://github.com/pmd/pmd/pull/1965">#1965</a>: [scala] Use Scalameta for parsing - <a href="https://github.com/tophersmith">Chris Smith</a></li> <li><a href="https://github.com/pmd/pmd/pull/1970">#1970</a>: [java] DoubleBraceInitialization: Fix example - <a href="https://github.com/tweimer">Tobias Weimer</a></li> <li><a href="https://github.com/pmd/pmd/pull/1971">#1971</a>: [java] 1862 - Message Digest should not be used as class field - <a href="https://github.com/AnthonyKot">AnthonyKot</a></li> <li><a href="https://github.com/pmd/pmd/pull/1972">#1972</a>: [plsql] ParseError - SELECT with FOR UPDATE OF - <a href="https://github.com/szyman23">Piotr Szymanski</a></li> <li><a href="https://github.com/pmd/pmd/pull/1994">#1994</a>: [core] Resolve pmd-report failure when java folder in filepath - <a href="https://github.com/shahamish150294">Amish Shah</a></li> </ul> <div class="tags"> </div> </div> <hr class="shaded"/> <footer> <div class="row"> <div class="col-lg-12 footer"> ©2019 PMD Open Source Project. All rights reserved. <br /> Site last generated: Sep 8, 2019 <br /> <p><img src="images/pmd-logo-small.png" alt="Company logo"/></p> </div> </div> </footer> </div> <!-- /.row --> </div> <!-- /.container --> </div> </div> </body> </html>