pmd/pmd_userdocs_cli_reference.html

2302 lines
72 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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" 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">&nbsp;<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 CLI reference">{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-toc-wrapper">
<div class="container">
<div class="col-lg-12">&nbsp;</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.45.0-SNAPSHOT</li>
<div class="sidebarTitleDate">Release date: 30-April-2022</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_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 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 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_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 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_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="#">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="#">Maven POM Rules</a>
<ul>
<li><a href="pmd_rules_pom.html">Index</a></li>
<li><a href="pmd_rules_pom_errorprone.html">Error Prone</a></li>
</ul>
</li>
<li class="subfolders">
<a href="#">Modelica Rules</a>
<ul>
<li><a href="pmd_rules_modelica.html">Index</a></li>
<li><a href="pmd_rules_modelica_bestpractices.html">Best Practices</a></li>
</ul>
</li>
<li class="subfolders">
<a href="#">PLSQL Rules</a>
<ul>
<li><a href="pmd_rules_plsql.html">Index</a></li>
<li><a href="pmd_rules_plsql_bestpractices.html">Best Practices</a></li>
<li><a href="pmd_rules_plsql_codestyle.html">Code Style</a></li>
<li><a href="pmd_rules_plsql_design.html">Design</a></li>
<li><a href="pmd_rules_plsql_errorprone.html">Error Prone</a></li>
</ul>
</li>
<li class="subfolders">
<a href="#">Salesforce VisualForce Rules</a>
<ul>
<li><a href="pmd_rules_vf.html">Index</a></li>
<li><a href="pmd_rules_vf_security.html">Security</a></li>
</ul>
</li>
<li class="subfolders">
<a href="#">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 class="subfolders">
<a href="#">Java Support</a>
<ul>
<li><a href="pmd_languages_java.html">Java Versions</a></li>
<li><a href="pmd_java_metrics_index.html">Java Code Metrics</a></li>
</ul>
</li>
<li><a href="pmd_apex_metrics_index.html">Apex code metrics</a></li>
<li><a href="pmd_languages_plsql.html">PLSQL</a></li>
<li><a href="pmd_languages_visualforce.html">Visualforce</a></li>
<li><a href="pmd_languages_xml.html">XML and XML dialects</a></li>
<li><a href="pmd_languages_html.html">HTML</a></li>
</ul>
</li>
<li>
<a href="#">Developer Documentation</a>
<ul>
<li><a href="pmd_devdocs_development.html">Developer resources</a></li>
<li><a href="pmd_devdocs_building.html">Building PMD from source</a></li>
<li><a href="https://github.com/pmd/pmd/blob/master/CONTRIBUTING.md" target="_blank">Contributing</a></li>
<li><a href="pmd_devdocs_writing_documentation.html">Writing documentation</a></li>
<li><a href="pmd_devdocs_roadmap.html">Roadmap</a></li>
<li><a href="pmd_devdocs_how_pmd_works.html">How PMD works</a></li>
<li><a href="pmd_devdocs_pmdtester.html">Pmdtester</a></li>
<li><a href="pmd_devdocs_rule_deprecation_policy.html">Rule Deprecation Policy</a></li>
<li class="subfolders">
<a href="#">Major contributions</a>
<ul>
<li><a href="pmd_devdocs_major_rule_guidelines.html">Rule Guidelines</a></li>
<li><a href="pmd_devdocs_major_adding_new_language.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>
<li class="subfolders">
<a href="#">Experimental features</a>
<ul>
<li><a href="pmd_devdocs_experimental_ast_dump.html">Creating (XML) dump of the AST</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_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>
<!-- 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">
<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/master/docs/pages/pmd/userdocs/cli_reference.md"
class="pull-right"
role="button"
><i class="fa 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/master/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>
<div id="inline-toc"><!-- empty, move TOC here when screen size too small --></div>
<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&nbsp;&lt;refs&gt;</code><br /><code>-R&nbsp;&lt;refs&gt;</code></a></td>
<td><span class="label label-primary">Required</span> Comma-separated list of ruleset or rule references.</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&nbsp;&lt;path&gt;</code><br /><code>-d&nbsp;&lt;path&gt;</code></a></td>
<td><span class="label label-primary">Required</span> Root directory for the analyzed sources.</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&nbsp;&lt;format&gt;</code><br /><code>-f&nbsp;&lt;format&gt;</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&nbsp;&lt;cp&gt;</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.</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&nbsp;&lt;filepath&gt;</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.</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&nbsp;&lt;charset&gt;</code><br /><code>-e&nbsp;&lt;charset&gt;</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="-fail-on-violation"><code>--fail-on-violation&nbsp;&lt;bool&gt;</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>--fail-on-violation false</code> to exit with 0 instead and just output the report.</td>
<td><code>true</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&nbsp;&lt;filepath&gt;</code></a></td>
<td>Path to file containing a comma delimited list of files to analyze.
If this is given, then you don't need to provide <code>--dir</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="-force-language"><code>--force-language&nbsp;&lt;lang&gt;</code></a></td>
<td>Force a language to be used for all input files, irrespective of
filenames. When using this option, the automatic language selection
by extension is disabled and all files are tried to be parsed with
the given language <code>&lt;lang&gt;</code>. Parsing errors are ignored and unparsable files
are skipped.
<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&nbsp;&lt;filepath&gt;</code></a></td>
<td>Path to file containing a comma delimited list of files to ignore.
This option can be combined with <code>--dir</code> and <code>--file-list</code>.
This ignore list takes precedence over any files in the filelist.</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><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="language"><code>-language&nbsp;&lt;lang&gt;</code><br /><code>-l&nbsp;&lt;lang&gt;</code></a></td>
<td>Specify the language PMD should use. Used together with <code>-version</code>. See also <a href="#supported-languages">Supported Languages</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="-minimum-priority"><code>--minimum-priority&nbsp;&lt;num&gt;</code><br /><code>-min&nbsp;&lt;num&gt;</code></a></td>
<td>Rule priority threshold; rules with lower priority than configured here won't be used.</td>
<td><code>5</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="-property"><code>--property&nbsp;&lt;name&gt;=&lt;value&gt;</code><br /><code>-P&nbsp;&lt;name&gt;=&lt;value&gt;</code></a></td>
<td>Specifies a property for the report renderer. The option can be specified several times.</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&nbsp;&lt;path&gt;</code><br /><code>-r&nbsp;&lt;path&gt;</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="-short-names"><code>--short-names</code></a></td>
<td>Prints shortened filenames in the report.</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.</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="-stress"><code>--stress</code><br /><code>-S</code></a></td>
<td>Performs a stress test.</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&nbsp;&lt;marker&gt;</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&nbsp;&lt;num&gt;</code><br /><code>-t&nbsp;&lt;num&gt;</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&nbsp;&lt;uri&gt;</code><br /><code>-u&nbsp;&lt;uri&gt;</code></a></td>
<td>Database URI for sources. If this is given, then you don't need to provide <code>--dir</code>.</td>
<td><code></code></td>
<td>PLSQL</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="-version"><code>--version</code></a></td>
<td>Display current version of PMD and exit without performing any analysis.</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="version"><code>-version&nbsp;&lt;version&gt;</code><br /><code>-v&nbsp;&lt;version&gt;</code></a></td>
<td>Specify the version of a language PMD should use. Used together with <code>-language</code>. See also <a href="#supported-languages">Supported Languages</a>.</td>
<td><code></code></td>
<td></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 OpenJDKs <a href="http://openjdk.java.net/jeps/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="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export PMD_JAVA_OPTS="--enable-preview"
./run.sh pmd -d ../../../src/main/java/ -f text -R rulesets/java/quickstart.xml
</code></pre></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).
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</td></tr>
<tr><td>1</td><td>Couldn't understand command-line parameters or PMD exited with an exception</td></tr>
<tr><td>4</td><td>At least one violation has been detected, unless <code>--fail-on-violation false</code> is set.</td></tr>
</table>
<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
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, wont be executed, you need to specify a specific version via the <code class="language-plaintext highlighter-rouge">-language</code>
and <code class="language-plaintext highlighter-rouge">-version</code> parameter.</p>
<p>These parameters are irrelevant for languages that dont support different versions.</p>
<p>Example:</p>
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./run.sh pmd <span class="nt">-d</span> src/main/java <span class="nt">-f</span> text <span class="nt">-R</span> rulesets/java/quickstart.xml <span class="nt">-language</span> java <span class="nt">-version</span> 8
</code></pre></div></div>
<ul>
<li><a href="pmd_rules_apex.html">apex</a> (Salesforce Apex)</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_modelica.html">modelica</a></li>
<li><a href="pmd_rules_plsql.html">plsql</a></li>
<li><a href="pmd_rules_scala.html">scala</a>
<ul>
<li>Supported Versions: 2.10, 2.11, 2.12, 2.13 (default)</li>
</ul>
</li>
<li><a href="pmd_rules_vf.html">vf</a> (Salesforce VisualForce)</li>
<li><a href="pmd_rules_vm.html">vm</a> (Apache Velocity)</li>
<li><a href="pmd_rules_xml.html">xml and 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 doesnt 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="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./run.sh pmd -d /home/me/src/xml-file.ext -f text -R ruleset.xml --force-language xml
</code></pre></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="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./run.sh pmd -d /home/me/src/ -f text -R ruleset.xml --force-language xml
</code></pre></div></div>
<p>Alternatively, you can create a filelist to only analyze files with a given extension:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ find /home/me/src -name "*.ext" &gt; /home/me/src/filelist.txt
$ ./run.sh pmd --file-list /home/me/src/filelist.txt -f text -R ruleset.xml --force-language xml
</code></pre></div></div>
<div class="tags">
<b>Tags: </b>
<a href="tag_userdocs.html" class="btn btn-default 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/master/docs/pages/pmd/userdocs/cli_reference.md"
role="button"
><i class="fa fa-github fa-lg"></i> Edit on GitHub</a
>
</div>
<hr />
<div class="row">
<div class="col-lg-12 footer">
&copy;2022 PMD Open Source Project. All rights
reserved. <br />
Site last generated: Apr 29, 2022 <br />
<p>
<img src="images/pmd-logo-small.png" alt="Company
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>
</body>
</html>