-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathconfig_system_properties.html
331 lines (282 loc) · 14.2 KB
/
config_system_properties.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
<!DOCTYPE html>
<!--
| Generated by Apache Maven Doxia Site Renderer 2.0.0 from src/site/xdoc/config_system_properties.xml at 2025-04-02
| Rendered using Apache Maven Fluido Skin 2.0.1
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
<title>Reporting Configuration – checkstyle</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-2.0.1.min.css" />
<link rel="stylesheet" href="./css/site.css" />
<link rel="stylesheet" href="./css/print.css" media="print" />
<script src="./js/apache-maven-fluido-2.0.1.min.js"></script>
<script type="text/javascript" src="./js/checkstyle.js"></script>
<script type="text/javascript" src="./js/anchors.js"></script>
<script type="text/javascript" src="./js/google-analytics.js"></script>
<script type="text/javascript" src="./js/copy-clipboard.js"></script>
<link rel="icon" href="./images/favicon.png" type="image/x-icon" />
<link rel="shortcut icon" href="./images/favicon.ico" type="image/ico" />
</head>
<body>
<div class="container-fluid container-fluid-top">
<header>
<div id="banner">
<div class="pull-left"><div id="bannerLeft"><h1><a href="./"><img class="class java.lang.Object" src="images/header-checkstyle-logo.png" alt="Checkstyle" /></a></h1></div></div>
<div class="pull-right"><div id="bannerRight"><h1><img class="class java.lang.Object" src="images/header-right-ruller.png" alt="Checkstyle" /></h1></div></div>
<div class="clear"><hr/></div>
</div>
<div id="breadcrumbs">
<ul class="breadcrumb">
<li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2025-04-02</li>
<li id="projectVersion" class="pull-right"><span class="divider">|</span>Version: 10.23.0</li>
<li class="pull-right"><a>toTop</a></li>
</ul>
</div>
</header>
<div class="row-fluid">
<header id="leftColumn" class="span2">
<nav class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">About</li>
<li><a href="index.html">Checkstyle</a></li>
<li><a href="releasenotes.html">Release Notes</a></li>
<li><a href="consulting.html">Consulting</a></li>
<li><a href="sponsoring.html">Sponsoring</a></li>
<li class="nav-header">Documentation</li>
<li><a href="config.html"><span class="icon-chevron-down"></span>Configuration</a>
<ul class="nav nav-list">
<li><a href="property_types.html">Property Types</a></li>
<li class="active"><a>System Properties</a></li>
</ul></li>
<li><a href="running.html"><span class="icon-chevron-down"></span>Running</a>
<ul class="nav nav-list">
<li><a href="anttask.html">Ant Task</a></li>
<li><a href="cmdline.html">Command Line</a></li>
</ul></li>
<li><a href="checks.html"><span class="icon-chevron-down"></span>Checks</a>
<ul class="nav nav-list">
<li><a href="checks/annotation/index.html"><span class="icon-chevron-right"></span>Annotations</a></li>
<li><a href="checks/blocks/index.html"><span class="icon-chevron-right"></span>Block Checks</a></li>
<li><a href="checks/design/index.html"><span class="icon-chevron-right"></span>Class Design</a></li>
<li><a href="checks/coding/index.html"><span class="icon-chevron-right"></span>Coding</a></li>
<li><a href="checks/header/index.html"><span class="icon-chevron-right"></span>Headers</a></li>
<li><a href="checks/imports/index.html"><span class="icon-chevron-right"></span>Imports</a></li>
<li><a href="checks/javadoc/index.html"><span class="icon-chevron-right"></span>Javadoc Comments</a></li>
<li><a href="checks/metrics/index.html"><span class="icon-chevron-right"></span>Metrics</a></li>
<li><a href="checks/misc/index.html"><span class="icon-chevron-right"></span>Miscellaneous</a></li>
<li><a href="checks/modifier/index.html"><span class="icon-chevron-right"></span>Modifiers</a></li>
<li><a href="checks/naming/index.html"><span class="icon-chevron-right"></span>Naming Conventions</a></li>
<li><a href="checks/regexp/index.html"><span class="icon-chevron-right"></span>Regexp</a></li>
<li><a href="checks/sizes/index.html"><span class="icon-chevron-right"></span>Size Violations</a></li>
<li><a href="checks/whitespace/index.html"><span class="icon-chevron-right"></span>Whitespace</a></li>
</ul></li>
<li><a href="filters/index.html"><span class="icon-chevron-right"></span>Filters</a></li>
<li><a href="filefilters/index.html"><span class="icon-chevron-right"></span>File Filters</a></li>
<li><a href="style_configs.html"><span class="icon-chevron-down"></span>Style Configurations</a>
<ul class="nav nav-list">
<li><a href="google_style.html">Google's Style</a></li>
<li><a href="sun_style.html">Sun's Style</a></li>
</ul></li>
<li class="nav-header">Developers</li>
<li><a href="extending.html"><span class="icon-chevron-down"></span>Extending Checkstyle</a>
<ul class="nav nav-list">
<li><a href="writingchecks.html">Writing Checks</a></li>
<li><a href="writingjavadocchecks.html">Writing Javadoc Checks</a></li>
<li><a href="writingfilters.html">Writing Filters</a></li>
<li><a href="writingfilefilters.html">Writing File Filters</a></li>
<li><a href="writinglisteners.html">Writing Listeners</a></li>
</ul></li>
<li><a href="contributing.html">Contributing</a></li>
<li><a href="beginning_development.html"><span class="icon-chevron-down"></span>Beginning Development</a>
<ul class="nav nav-list">
<li><a href="eclipse.html">Eclipse IDE</a></li>
<li><a href="netbeans.html">NetBeans IDE</a></li>
<li><a href="idea.html">IntelliJ IDE</a></li>
</ul></li>
<li><a href="apidocs/index.html">Javadoc</a></li>
<li class="nav-header">Project Documentation</li>
<li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
<li><a href="project-reports.html"><span class="icon-chevron-right"></span>Project Reports</a></li>
</ul>
</nav>
<div class="well sidebar-nav">
<div id="poweredBy">
<div class="clear"></div>
<div class="clear"></div>
<a href="https://github.com/checkstyle/checkstyle" class="builtBy"><img class="builtBy" src="images/github_logo_social_coding_outlined.png" alt="GitHub" /></a>
<a href="https://twitter.com/checkstyle_java/" class="builtBy"><img class="builtBy" src="images/twitter_button.png" alt="Twitter" /></a>
<a href="https://stackoverflow.com/questions/tagged/checkstyle" class="builtBy"><img class="builtBy" src="images/stackoverflow.jpeg" alt="Stackoverflow" /></a>
<a href="https://groups.google.com/forum/#!forum/checkstyle" class="builtBy"><img class="builtBy" src="images/groups.png" alt="GoogleGroups" /></a>
<a href="https://www.ej-technologies.com/products/jprofiler/overview.html" class="builtBy"><img class="builtBy" src="https://www.ej-technologies.com/images/product_banners/jprofiler_medium.png" alt="JProfiler" /></a>
</div>
</div>
</header>
<main id="bodyColumn" class="span10">
<section><a id="Content"></a>
<h1>Content</h1>
<ul>
<li><a href="#Content">Content</a></li>
<li><a href="#How_to_set_system_property_for_CLI">How to set system property for CLI</a></li>
<li><a href="#Enable_External_DTD_load">Enable External DTD load</a></li>
<li><a href="#Property_chaining_support">Property chaining support</a></li></ul>
</section>
<section><a id="How_to_set_system_property_for_CLI"></a>
<h1>How to set system property for CLI</h1>
<p>
System properties should be provided to <code>java</code> command.
Example: <code>java -D<property>=<value> -jar ... </code>
</p>
<p>
Attention to Windows users: system properties should be wrapped with <code>"</code>.
Example: <code>-D"<property>=<value>"</code>
</p>
</section>
<section><a id="Enable_External_DTD_load"></a>
<h1>Enable External DTD load</h1>
<p>
The property <code>checkstyle.enableExternalDtdLoad</code>
defines the ability to use custom DTD files in config and load them from some location.
The property type
is <a href="property_types.html#boolean">boolean</a> and defaults
to <code>false</code>. Disabled by default due to security concerns.
</p>
<a id="Enable_External_DTD_load_Examples"></a><section id="Enable_External_DTD_load_Examples"><a id="Examples"></a>
<h2>Examples</h2>
<p>
The following is an example of including the contents of other xml files by using the
ENTITY feature to keep common parts of configs in a single file and then creating
composite configs from smaller parts.
<br />
Imagine we want to define different requirements for test sources
than for main code.
</p>
<p>
Common part <code>checkstyle-common.xml</code>:
<div class="wrapper"></p>
<pre class="prettyprint"><code class="language-xml">
<module name="FileLength">
<property name="max" value="1"/>
</module>
</code></pre></div>
<p>
Main config <code>checkstyle.xml</code>:
<div class="wrapper"></p>
<pre class="prettyprint"><code class="language-xml">
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd" [
<!ENTITY common SYSTEM "checkstyle-common.xml">
]>
<module name="Checker">
&common;
<module name="TreeWalker">
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z]+$"/>
</module>
</module>
</module>
</code></pre></div>
<p>
Test config <code>checkstyle-test.xml</code>:
<div class="wrapper"></p>
<pre class="prettyprint"><code class="language-xml">
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd" [
<!ENTITY common SYSTEM "checkstyle-common.xml">
]>
<module name="Checker">
&common;
<module name="TreeWalker">
<module name="MemberName">
<property name="format" value="_[a-z]"/>
</module>
</module>
</module>
</code></pre></div>
<p>
Target file for validation <code>Test.java</code>:
<div class="wrapper"></p>
<pre class="prettyprint"><code class="language-java">
class Test {
int i = 0;
}
</code></pre></div>
<p>
Example of execution for <code>checkstyle.xml</code>. Violation from Check of
<code>common.xml</code> is expected, validation of field name is done by main code rules:
<div class="wrapper"></p>
<pre class="prettyprint"><code class="language-java">
$ java -Dcheckstyle.enableExternalDtdLoad=true -classpath checkstyle-XX.X-all.jar \
com.puppycrawl.tools.checkstyle.Main -c checkstyle.xml Test.java
Starting audit...
[ERROR] Test.java:1: File length is 3 lines (max allowed is 1). [FileLength]
[ERROR] Test.java:2:7: 'i' must match pattern '^[a-z][a-zA-Z]+$'. [MemberName]
Audit done.
Checkstyle ends with 2 errors.
</code></pre></div>
<p>
Example of execution for <code>checkstyle-test.xml</code>. Violation from Check of
<code>common.xml</code> is expected, validation of field name is done by test code rules:
<div class="wrapper"></p>
<pre class="prettyprint"><code class="language-java">
$ java -Dcheckstyle.enableExternalDtdLoad=true -classpath checkstyle-XX.X-all.jar \
com.puppycrawl.tools.checkstyle.Main -c checkstyle-test.xml Test.java
Starting audit...
[ERROR] Test.java:1: File length is 3 lines (max allowed is 1). [FileLength]
[ERROR] Test.java:2:7: 'i' must match pattern '_[a-z]'. [MemberName]
Audit done.
Checkstyle ends with 2 errors.
</code></pre></div>
<p>
Attention to Windows users: system properties should be wrapped with <code>"</code>.
Example: <code>-D"<property>=<value>"</code>
</p>
</section>
</section>
<section><a id="Property_chaining_support"></a>
<h1>Property chaining support</h1>
<p>
Checkstyle supports property expansion within property definitions, also
known as property chaining. This feature allows you to define properties
using other properties. For example:
<div class="wrapper"></p>
<pre class="prettyprint"><code class="language-text">
checkstyle.dir=/home/user/checkstyle
config.dir=configs
checkstyle.suppressions.file=${checkstyle.dir}/${config.dir}/suppressions.xml
</code></pre></div>
You can then use
<code>${checkstyle.suppressions.file}</code> in your checkstyle configuration,
which will resolve to
<code>/home/user/checkstyle/configs/suppressions.xml</code>.
<a id="Property_chaining_support_Notes"></a><section id="Property_chaining_support_Notes"><a id="Notes"></a>
<h2>Notes</h2>
<p>
Note that property variable expression must be of the form
<code>${expression}</code>.
</p>
<p>
It is not necessary to define chained properties sequentially.
</p>
</section>
</section>
</main>
</div>
</div>
<hr/>
<footer>
<div class="container-fluid">
<div class="row-fluid">
<p>© 2001–2025
</p>
</div>
</div>
</footer>
</body>
</html>