2863 lines
90 KiB
HTML
2863 lines
90 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="Full reference for PMD's command-line interface, including options, output formats and supported languages">
|
||
<meta name="keywords" content="userdocs, commandlineoptionshelpformatsrenderers">
|
||
<title>PMD CLI reference | 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.8.0-SNAPSHOT</li>
|
||
<div class="sidebarTitleDate">Release date: 29-November-2024</div>
|
||
|
||
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a href="#">About</a>
|
||
|
||
<ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="index.html">Home</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><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>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_about_release_policies.html">Release policies</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_about_support_lifecycle.html">Support lifecycle</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 class="active"><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>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_ecmascript_performance.html">Performance</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_visualforce.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_visualforce_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_velocity.html">Index</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_velocity_bestpractices.html">Best Practices</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_velocity_design.html">Design</a></li>
|
||
|
||
|
||
|
||
|
||
|
||
<li><a href="pmd_rules_velocity_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_velocity.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/main/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 CLI reference
|
||
<a
|
||
target="_blank"
|
||
href="https://github.com/pmd/pmd/blob/main/docs/pages/pmd/userdocs/cli_reference.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 CLI reference</h1>
|
||
</div>
|
||
|
||
<div class="post-content" data-github-edit-url="https://github.com/pmd/pmd/blob/main/docs/pages/pmd/userdocs/cli_reference.md">
|
||
|
||
|
||
<div class="summary">Full reference for PMD's command-line interface, including options, output formats and supported languages</div>
|
||
|
||
<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="options">Options</h2>
|
||
|
||
<p>The tool comes with a rather extensive help text, simply running with <code class="language-plaintext highlighter-rouge">--help</code>!</p>
|
||
|
||
<table>
|
||
<tr>
|
||
<th>Option</th>
|
||
<th>Description</th>
|
||
<th>Default value</th>
|
||
<th>Applies to</th>
|
||
</tr>
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-rulesets"><code>--rulesets <refs></code><br /><code>-R <refs></code></a></td>
|
||
<td><span class="label label-primary">Required</span> Path to a ruleset xml file. The path may reference
|
||
a resource on the classpath of the application,
|
||
be a local file system path, or a URL. The option
|
||
can be repeated, and multiple arguments separated
|
||
by comma can be provided to a single occurrence
|
||
of the option.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-dir"><code>--dir <path></code><br /><code>-d <path></code></a></td>
|
||
<td>Path to a source file, or directory containing
|
||
source files to analyze. Zip and Jar files are
|
||
also supported, if they are specified directly
|
||
(archive files found while exploring a directory
|
||
are not recursively expanded). This option can be
|
||
repeated, and multiple arguments can be provided
|
||
to a single occurrence of the option. One of
|
||
<code>--dir</code>, <code>--file-list</code> or <code>--uri</code> must be provided.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-format"><code>--format <format></code><br /><code>-f <format></code></a></td>
|
||
<td>Output format of the analysis report. The available formats
|
||
are described <a href="#available-report-formats">here</a>.</td>
|
||
<td><code>text</code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<tr><td /><td /><td /><td /></tr>
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-aux-classpath"><code>--aux-classpath <cp></code></a></td>
|
||
<td>Specifies the classpath for libraries used by the source code.
|
||
This is used to resolve types in source files. The platform specific path delimiter
|
||
(":" on Linux, ";" on Windows) is used to separate the entries.
|
||
Alternatively, a single <code>file:</code> URL
|
||
to a text file containing path elements on consecutive lines can be specified.
|
||
<p>See also <a href="pmd_languages_java.html#providing-the-auxiliary-classpath">Providing the auxiliary classpath</a>.</p></td>
|
||
<td><code></code></td>
|
||
<td>Java</td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-benchmark"><code>--benchmark</code><br /><code>-b</code></a></td>
|
||
<td>Enables benchmark mode, which outputs a benchmark report upon completion.
|
||
The report is sent to standard error.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-cache"><code>--cache <filepath></code></a></td>
|
||
<td>Specify the location of the cache file for incremental analysis.
|
||
This should be the full path to the file, including the desired file name (not just the parent directory).
|
||
If the file doesn't exist, it will be created on the first run. The file will be overwritten on each run
|
||
with the most up-to-date rule violations.
|
||
This can greatly improve analysis performance and is <b>highly recommended</b>.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-debug"><code>--debug</code><br /><code>--verbose</code><br /><code>-D</code><br /><code>-v</code></a></td>
|
||
<td>Debug mode. Prints more log output. See also <a href="#logging">Logging</a>.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-encoding"><code>--encoding <charset></code><br /><code>-e <charset></code></a></td>
|
||
<td>Specifies the character set encoding of the source code files PMD is reading.
|
||
The valid values are the standard character sets of <code>java.nio.charset.Charset</code>.</td>
|
||
<td><code>UTF-8</code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-%5Bno-%5Dfail-on-error"><code>--[no-]fail-on-error</code></a></td>
|
||
<td>Specifies whether PMD exits with non-zero status if recoverable errors occurred.
|
||
By default PMD exits with status 5 if recoverable errors occurred (whether there are violations or not).
|
||
Disable this option with <code>--no-fail-on-error</code> to exit with 0 instead. In any case, a report with the found violations will be written.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-%5Bno-%5Dfail-on-violation"><code>--[no-]fail-on-violation</code></a></td>
|
||
<td>Specifies whether PMD exits with non-zero status if violations are found.
|
||
By default PMD exits with status 4 if violations are found.
|
||
Disable this feature with <code>--no-fail-on-violation</code> to exit with 0 instead. In any case a report with the found violations will be written.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-file-list"><code>--file-list <filepath></code></a></td>
|
||
<td>Path to a file containing a list of files to
|
||
analyze, one path per line. One of <code>--dir</code>,
|
||
<code>--file-list</code> or <code>--uri</code> must be provided.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-force-language"><code>--force-language <lang></code></a></td>
|
||
<td>Force a language to be used for all input files, irrespective of
|
||
file names. When using this option, the automatic language selection
|
||
by extension is disabled and PMD tries to parse all files with
|
||
the given language <code><lang></code>. Parsing errors are ignored and unparsable files
|
||
are skipped.
|
||
<p>Use <code>--use-version</code> to specify the language version to use, if it is not the default.</p>
|
||
<p>This option allows to use the xml language for files, that don't
|
||
use xml as extension. See <a href="#analyze-other-xml-formats">example</a> below.</p></td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-ignore-list"><code>--ignore-list <filepath></code></a></td>
|
||
<td>Path to file containing a list of files to ignore, one path per line.
|
||
This option overrides files included by any of <code>--dir</code>, <code>--file-list</code> and <code>--uri</code>.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-help"><code>--help</code><br /><code>-h</code></a></td>
|
||
<td>Display help on usage.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-use-version"><code>--use-version <lang-version></code></a></td>
|
||
<td>The specific language version PMD should use when parsing source code for a given language.
|
||
<p>Values are in the format of <i>language-version</i>.</p>
|
||
<p>This option can be repeated to configure several languages for the same run.</p>
|
||
<p>Note that this option does not change how languages are assigned to files.
|
||
It only changes something if the project you analyze contains some files that PMD detects as the given language.
|
||
Language detection is only influenced by file extensions and the <code>--force-language</code> option.</p>
|
||
<p>See also <a href="#supported-languages">Supported Languages</a>.</p></td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-minimum-priority"><code>--minimum-priority <priority></code></a></td>
|
||
<td>Rule priority threshold; rules with lower priority than configured here won't be used.
|
||
Valid values (case-insensitive): High, Medium_High, Medium, Medium_Low, Low.
|
||
An integer between 1 (High) and 5 (Low) is also supported. See <a href="pmd_userdocs_configuring_rules.html">Configuring rules</a>
|
||
on how to override priorities in custom rulesets.</td>
|
||
<td><code>Low</code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-no-ruleset-compatibility"><code>--no-ruleset-compatibility</code></a></td>
|
||
<td>Disable automatic fixing of invalid rule references. Without the switch, PMD tries to automatically replace rule references that point to moved or renamed rules with the newer location if possible. Disabling it is not recommended.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-no-cache"><code>--no-cache</code></a></td>
|
||
<td>Explicitly disables incremental analysis. This switch turns off suggestions to use Incremental Analysis,
|
||
and causes the <code>--cache</code> option to be discarded if it is provided.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-%5Bno-%5Dprogress"><code>--[no-]progress</code></a></td>
|
||
<td>Enables / disable progress bar indicator of live analysis progress. This ie enabled by default.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-property"><code>--property <name>=<value></code><br /><code>-P <name>=<value></code></a></td>
|
||
<td>Specifies a property for the report renderer. The option can be specified several times.
|
||
<p>Using <code>--help</code> will provide a complete list of supported properties for each report format</p></td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-relativize-paths-with"><code>--relativize-paths-with <path></code><br /><code>-z <path></code></a></td>
|
||
<td>Path relative to which directories are rendered in the report. This option allows
|
||
shortening directories in the report; without it, paths are rendered as mentioned in the source directory (option "--dir").
|
||
The option can be repeated, in which case the shortest relative path will be used.
|
||
If the root path is mentioned (e.g. "/" or "C:\\"), then the paths will be rendered as absolute.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-report-file"><code>--report-file <path></code><br /><code>-r <path></code></a></td>
|
||
<td>Path to a file to which report output is written. The file is created if it does not exist. If this option is not specified, the report is rendered to standard output.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-show-suppressed"><code>--show-suppressed</code></a></td>
|
||
<td>Causes the suppressed rule violations to be added to the report if supported by the report format. See <a href="pmd_userdocs_report_formats.html">PMD Report formats</a> for details.</td>
|
||
<td><code></code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-suppress-marker"><code>--suppress-marker <marker></code></a></td>
|
||
<td>Specifies the comment token that marks lines which PMD should ignore.</td>
|
||
<td><code>NOPMD</code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-threads"><code>--threads <num></code><br /><code>-t <num></code></a></td>
|
||
<td>Sets the number of threads used by PMD.
|
||
Set threads to <code>0</code> to disable multi-threading processing.</td>
|
||
<td><code>1</code></td>
|
||
<td></td>
|
||
</tr>
|
||
|
||
<!-- Row of the CLI reference table, describing an option -->
|
||
<!-- Rows can be linked to the name of the option (without leading dash) -->
|
||
<!-- Argument summary: -->
|
||
<!-- options: comma separated list of aliases for the option.-->
|
||
<!-- option_arg: optional name for the argument of the option, eg 'arg', will be formatted eg to '<arg>'-->
|
||
<!-- description: description, you can use "some" inline markdown -->
|
||
<!-- required: whether the option is required, if specified, whatever the value, it's considered required -->
|
||
<!-- languages: languages to which the option applies -->
|
||
<!-- default: default value -->
|
||
|
||
|
||
|
||
<!-- fragment id in the page -->
|
||
|
||
|
||
<tr>
|
||
<td><a style="pointer-events: none; cursor: default;" name="-uri"><code>--uri <uri></code><br /><code>-u <uri></code></a></td>
|
||
<td>Database URI for sources. One of <code>--dir</code>, <code>--file-list</code> or <code>--uri</code> must be provided.</td>
|
||
<td><code></code></td>
|
||
<td>PLSQL</td>
|
||
</tr>
|
||
|
||
</table>
|
||
|
||
<h2 id="additional-java-runtime-options">Additional Java Runtime Options</h2>
|
||
|
||
<p>PMD is executed via a Java runtime. In some cases, you might need to set additional runtime options, e.g.
|
||
if you want to analyze a project, that uses one of OpenJDK’s <a href="https://openjdk.org/jeps/12">JEP 12: Preview Language Features</a>.</p>
|
||
|
||
<p>Just set the environment variable <code class="language-plaintext highlighter-rouge">PMD_JAVA_OPTS</code> before executing PMD, e.g.</p>
|
||
|
||
<div class="text-left">
|
||
<ul class="nav nav-tabs" role="tablist">
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link active" id="linux-tab-preview" data-toggle="tab" href="#linux-preview" role="tab" aria-controls="linux" aria-selected="true">Linux / macOS</a>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link" id="windows-tab-preview" data-toggle="tab" href="#windows-preview" role="tab" aria-controls="windows" aria-selected="false">Windows</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="tab-content border">
|
||
<div class="tab-pane fade show active" id="linux-preview" role="tabpanel" aria-labelledby="linux-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">~ $ </span><span class="s2">export</span> PMD_JAVA_OPTS="--enable-preview"
|
||
<span class="gp">~ $ </span><span class="s2">pmd</span> check -d src/main/java/ -f text -R rulesets/java/quickstart.xml
|
||
</code></pre></figure>
|
||
</div>
|
||
<div class="tab-pane fade" id="windows-preview" role="tabpanel" aria-labelledby="windows-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">C:\> </span><span class="s2">set</span> "PMD_JAVA_OPTS=--enable-preview"
|
||
<span class="gp">C:\> </span><span class="s2">pmd.bat</span> check -d src\main\java\ -f text -R rulesets/java/quickstart.xml
|
||
</code></pre></figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<h2 id="additional-runtime-classpath">Additional runtime classpath</h2>
|
||
|
||
<p>If you develop custom rules and package them as a jar file, you need to add it to PMD’s runtime classpath.
|
||
You can either copy the jar file into the <code class="language-plaintext highlighter-rouge">lib/</code> subfolder alongside the other jar files, that are in PMD’s
|
||
standard distribution.</p>
|
||
|
||
<p>Or you can set the environment variable <code class="language-plaintext highlighter-rouge">CLASSPATH</code> before starting PMD, e.g.</p>
|
||
|
||
<div class="text-left">
|
||
<ul class="nav nav-tabs" role="tablist">
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link active" id="linux-tab-preview_classpath" data-toggle="tab" href="#linux-preview_classpath" role="tab" aria-controls="linux" aria-selected="true">Linux / macOS</a>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link" id="windows-tab-preview_classpath" data-toggle="tab" href="#windows-preview_classpath" role="tab" aria-controls="windows" aria-selected="false">Windows</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="tab-content border">
|
||
<div class="tab-pane fade show active" id="linux-preview_classpath" role="tabpanel" aria-labelledby="linux-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">~ $ </span><span class="s2">export</span> CLASSPATH=custom-rule-example.jar
|
||
<span class="gp">~ $ </span><span class="s2">pmd</span> check -d ../../../src/main/java/ -f text -R myrule.xml
|
||
</code></pre></figure>
|
||
</div>
|
||
<div class="tab-pane fade" id="windows-preview_classpath" role="tabpanel" aria-labelledby="windows-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">C:\> </span><span class="s2">set</span> CLASSPATH=custom-rule-example.jar
|
||
<span class="gp">C:\> </span><span class="s2">pmd.bat</span> check -d ..\..\..\src\main\java\ -f text -R myrule.xml
|
||
</code></pre></figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<h2 id="exit-status">Exit Status</h2>
|
||
|
||
<p>Please note that if PMD detects any violations, it will exit with status 4 (since 5.3) or 5 (since 7.3.0).
|
||
This behavior has been introduced to ease PMD integration into scripts or hooks, such as SVN hooks.</p>
|
||
|
||
<table>
|
||
<tr><td>0</td><td>Everything is fine, no violations found and no recoverable error occurred.</td></tr>
|
||
<tr><td>1</td><td>PMD exited with an exception.</td></tr>
|
||
<tr><td>2</td><td>Usage error. Command-line parameters are invalid or missing.</td></tr>
|
||
<tr><td>4</td><td>At least one violation has been detected, unless <code>--no-fail-on-violation</code> is set.<p>Since PMD 5.3.</p></td></tr>
|
||
<tr><td>5</td><td>At least one recoverable error has occurred. There might be additionally zero or more violations detected.
|
||
To ignore recoverable errors, use <code>--no-fail-on-error</code>.<p>Since PMD 7.3.0.</p></td></tr>
|
||
</table>
|
||
|
||
<div class="alert alert-info" role="alert"><i class="fas fa-info-circle"></i> <b>Note:</b> If PMD exits with 5, then PMD had either trouble parsing one or more files or a rule failed with an exception.
|
||
That means, that either no violations for the entire file or for that rule are reported. These cases can be considered as false-negatives.
|
||
In any case, the root cause should be investigated. If it’s a problem in PMD itself, please create a bug report. Recoverable errors
|
||
are usually part of the generated PMD report.</div>
|
||
|
||
<h2 id="logging">Logging</h2>
|
||
|
||
<p>PMD internally uses <a href="https://www.slf4j.org/">slf4j</a> and ships with slf4j-simple as the logging implementation.
|
||
Logging messages are printed to System.err, that’s why you should use <code class="language-plaintext highlighter-rouge">--report-file</code> to specify an output for
|
||
the report and not rely on redirecting the console output.</p>
|
||
|
||
<p>The configuration for slf4j-simple is in the file <code class="language-plaintext highlighter-rouge">conf/simplelogger.properties</code>. There you can enable
|
||
logging of specific classes if needed. The <code class="language-plaintext highlighter-rouge">--debug</code> command line option configures the default log level
|
||
to be “debug”.</p>
|
||
|
||
<h2 id="supported-languages">Supported Languages</h2>
|
||
|
||
<p>The language is determined automatically by PMD from the file extensions. Some languages such as “Java”
|
||
however support multiple versions. The default version will be used, which is usually the latest supported
|
||
non-preview version. If you want to use an older version, so that e.g. rules that suggest usage of language features
|
||
that are not available yet won’t be executed, you need to specify a specific version via the <code class="language-plaintext highlighter-rouge">--use-version</code>
|
||
parameter.</p>
|
||
|
||
<p>The selected language version can also influence which rules are applied. Some rules might be relevant for
|
||
just a specific version of the language. Such rules are marked with either <code class="language-plaintext highlighter-rouge">minimumLanguageVersion</code> or
|
||
<code class="language-plaintext highlighter-rouge">maximumLanguageVersion</code> or both. Most rules apply for all language versions.</p>
|
||
|
||
<p>These parameters are most of the time irrelevant, if the rules apply for all versions.</p>
|
||
|
||
<p>The available versions depend on the language. You can get a list of the currently supported language versions
|
||
via the CLI option <code class="language-plaintext highlighter-rouge">--help</code>.</p>
|
||
|
||
<p>Example:</p>
|
||
|
||
<div class="text-left">
|
||
<ul class="nav nav-tabs" role="tablist">
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link active" id="linux-tab-lang-ver" data-toggle="tab" href="#linux-lang-ver" role="tab" aria-controls="linux" aria-selected="true">Linux / macOS</a>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link" id="windows-tab-lang-ver" data-toggle="tab" href="#windows-lang-ver" role="tab" aria-controls="windows" aria-selected="false">Windows</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="tab-content border">
|
||
<div class="tab-pane fade show active" id="linux-lang-ver" role="tabpanel" aria-labelledby="linux-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">~ $ </span><span class="s2">pmd</span> check -d src/main/java -f text -R rulesets/java/quickstart.xml --use-version java-1.8
|
||
</code></pre></figure>
|
||
</div>
|
||
<div class="tab-pane fade" id="windows-lang-ver" role="tabpanel" aria-labelledby="windows-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">C:\> </span><span class="s2">pmd.bat</span> check -d src\main\java -f text -R rulesets/java/quickstart.xml --use-version java-1.8
|
||
</code></pre></figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<ul>
|
||
<li><a href="pmd_rules_apex.html">apex</a> (Salesforce Apex)</li>
|
||
<li><a href="pmd_rules_ecmascript.html">ecmascript</a> (JavaScript)</li>
|
||
<li><a href="pmd_rules_html.html">html</a></li>
|
||
<li><a href="pmd_rules_java.html">java</a>
|
||
<ul>
|
||
<li><a href="pmd_languages_java.html">Supported Versions</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="pmd_rules_ecmascript.html">ecmascript</a> (JavaScript)</li>
|
||
<li><a href="pmd_rules_jsp.html">jsp</a></li>
|
||
<li><a href="pmd_rules_kotlin.html">kotlin</a></li>
|
||
<li><a href="pmd_rules_modelica.html">modelica</a></li>
|
||
<li><a href="pmd_rules_plsql.html">plsql</a></li>
|
||
<li><a href="pmd_rules_pom.html">pom</a> (Maven POM)</li>
|
||
<li><a href="pmd_rules_scala.html">scala</a></li>
|
||
<li><a href="pmd_rules_swift.html">swift</a></li>
|
||
<li><a href="pmd_rules_velocity.html">velocity</a> (Apache Velocity Template Language)</li>
|
||
<li><a href="pmd_rules_visualforce.html">visualforce</a> (Salesforce VisualForce)</li>
|
||
<li><a href="pmd_rules_xml.html">xml</a></li>
|
||
<li><a href="pmd_rules_xsl.html">xsl</a></li>
|
||
</ul>
|
||
|
||
<h2 id="available-report-formats">Available Report Formats</h2>
|
||
|
||
<p>PMD comes with many different renderers.
|
||
All formats are described at <a href="pmd_userdocs_report_formats.html">PMD Report formats</a></p>
|
||
|
||
<h2 id="examples">Examples</h2>
|
||
|
||
<h3 id="analyze-other-xml-formats">Analyze other xml formats</h3>
|
||
|
||
<p>If your xml language doesn’t use <code class="language-plaintext highlighter-rouge">xml</code> as file extension, you can still use PMD with <code class="language-plaintext highlighter-rouge">--force-language</code>:</p>
|
||
|
||
<div class="text-left">
|
||
<ul class="nav nav-tabs" role="tablist">
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link active" id="linux-tab-force" data-toggle="tab" href="#linux-force" role="tab" aria-controls="linux" aria-selected="true">Linux / macOS</a>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link" id="windows-tab-force" data-toggle="tab" href="#windows-force" role="tab" aria-controls="windows" aria-selected="false">Windows</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="tab-content border">
|
||
<div class="tab-pane fade show active" id="linux-force" role="tabpanel" aria-labelledby="linux-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">~ $ </span><span class="s2">pmd</span> check -d src/xml-file.ext -f text -R ruleset.xml --force-language xml
|
||
</code></pre></figure>
|
||
</div>
|
||
<div class="tab-pane fade" id="windows-force" role="tabpanel" aria-labelledby="windows-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">C:\> </span><span class="s2">pmd.bat</span> check -d src\xml-file.ext -f text -R ruleset.xml --force-language xml
|
||
</code></pre></figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<p>You can also specify a directory instead of a single file. Then all files are analyzed. In that case,
|
||
parse errors are suppressed in order to reduce irrelevant noise:</p>
|
||
|
||
<div class="text-left">
|
||
<ul class="nav nav-tabs" role="tablist">
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link active" id="linux-tab-force-dir" data-toggle="tab" href="#linux-force-dir" role="tab" aria-controls="linux" aria-selected="true">Linux / macOS</a>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link" id="windows-tab-force-dir" data-toggle="tab" href="#windows-force-dir" role="tab" aria-controls="windows" aria-selected="false">Windows</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="tab-content border">
|
||
<div class="tab-pane fade show active" id="linux-force-dir" role="tabpanel" aria-labelledby="linux-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">~ $ </span><span class="s2">pmd</span> check -d src/ -f text -R ruleset.xml --force-language xml
|
||
</code></pre></figure>
|
||
</div>
|
||
<div class="tab-pane fade" id="windows-force-dir" role="tabpanel" aria-labelledby="windows-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">C:\> </span><span class="s2">pmd.bat</span> check -d src\ -f text -R ruleset.xml --force-language xml
|
||
</code></pre></figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<p>Alternatively, you can create a filelist to only analyze files with a given extension:</p>
|
||
|
||
<div class="text-left">
|
||
<ul class="nav nav-tabs" role="tablist">
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link active" id="linux-tab-file-list" data-toggle="tab" href="#linux-file-list" role="tab" aria-controls="linux" aria-selected="true">Linux / macOS</a>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<a class="nav-link" id="windows-tab-file-list" data-toggle="tab" href="#windows-file-list" role="tab" aria-controls="windows" aria-selected="false">Windows</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="tab-content border">
|
||
<div class="tab-pane fade show active" id="linux-file-list" role="tabpanel" aria-labelledby="linux-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">~ $ </span><span class="s2">find</span> src/ -name "*.ext" > filelist.txt
|
||
<span class="gp">~ $ </span><span class="s2">pmd</span> check --file-list filelist.txt -f text -R ruleset.xml --force-language xml
|
||
</code></pre></figure>
|
||
</div>
|
||
<div class="tab-pane fade" id="windows-file-list" role="tabpanel" aria-labelledby="windows-tab">
|
||
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">C:\> </span><span class="s2">for</span> /r src\ %i in (*.ext) do echo %i >> filelist.txt
|
||
<span class="gp">C:\> </span><span class="s2">pmd.bat</span> check --file-list filelist.txt -f text -R ruleset.xml --force-language xml
|
||
</code></pre></figure>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="tags">
|
||
|
||
<b>Tags: </b>
|
||
|
||
|
||
|
||
<a href="tag_userdocs.html" class="btn btn-outline-secondary navbar-btn cursorNorm" role="button">userdocs</a>
|
||
|
||
|
||
|
||
</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/main/docs/pages/pmd/userdocs/cli_reference.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 />
|
||
<span>Page last updated:</span>
|
||
June 2024 (7.3.0)<br /> Site last generated: Nov 21, 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>
|