File: codenarc-rules-grails.html

package info (click to toggle)
codenarc 0.23-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster
  • size: 11,312 kB
  • sloc: java: 2,530; xml: 1,088; makefile: 21
file content (398 lines) | stat: -rw-r--r-- 26,648 bytes parent folder | download | duplicates (3)
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
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia Site Renderer 1.4 at 18 Feb 2015 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>CodeNarc - CodeNarc - Grails Rules</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20150218" />
    <meta http-equiv="Content-Language" content="en" />
                  
        </head>
  <body class="composite">
    <div id="banner">
                                              <a href="./" id="bannerLeft">
                                                <img src="images/codenarc-logo.png" alt="CodeNarc" />
                </a>
                              <a href="http://github.com/CodeNarc" id="bannerRight">
                                                <img src="images/forkme_right_red_aa0000.png" alt="Fork me on GitHub" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                    
                <div class="xleft">
        <span id="publishDate">Last Published: 18 Feb 2015</span>
                  &nbsp;| <span id="projectVersion">Version: 0.23</span>
                      </div>
            <div class="xright">        
                    
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
                    
                                <h5>General</h5>
                  <ul>
                  <li class="none">
                          <a href="index.html" title="Home">Home</a>
            </li>
                  <li class="none">
                          <a href="https://sourceforge.net/project/showfiles.php?group_id=250145" class="externalLink" title="Downloads">Downloads</a>
            </li>
                  <li class="none">
                          <a href="apidocs/index.html" title="Javadocs">Javadocs</a>
            </li>
                  <li class="none">
                          <a href="http://sourceforge.net/mail/?group_id=250145" class="externalLink" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="http://sourceforge.net/tracker/?group_id=250145" class="externalLink" title="Bug Tracker">Bug Tracker</a>
            </li>
                  <li class="none">
                          <a href="http://sourceforge.net/projects/codenarc" class="externalLink" title="SourceForge Project">SourceForge Project</a>
            </li>
                  <li class="none">
                          <a href="http://github.com/CodeNarc" class="externalLink" title="GitHub Project">GitHub Project</a>
            </li>
          </ul>
                       <h5>Running</h5>
                  <ul>
                  <li class="none">
                          <a href="codenarc-ant-task.html" title="Ant Task Usage">Ant Task Usage</a>
            </li>
                  <li class="none">
                          <a href="codenarc-command-line.html" title="Command-Line">Command-Line</a>
            </li>
                  <li class="none">
                          <a href="codenarc-run-as-a-test.html" title="Run as a Test">Run as a Test</a>
            </li>
                  <li class="none">
                          <a href="codenarc-other-tools-frameworks.html" title="Other Tools/Frameworks">Other Tools/Frameworks</a>
            </li>
          </ul>
                       <h5>Using</h5>
                  <ul>
                  <li class="none">
                          <a href="codenarc-creating-ruleset.html" title="Creating a RuleSet">Creating a RuleSet</a>
            </li>
                  <li class="none">
                          <a href="codenarc-creating-rule.html" title="Creating a Rule">Creating a Rule</a>
            </li>
                  <li class="none">
                          <a href="codenarc-configuring-rules.html" title="Configuring Rules">Configuring Rules</a>
            </li>
                  <li class="none">
                          <a href="StarterRuleSet-AllRulesByCategory.groovy.txt" title="Starter RuleSet (All)">Starter RuleSet (All)</a>
            </li>
          </ul>
                       <h5>Report Types</h5>
                  <ul>
                  <li class="none">
                          <a href="codenarc-HtmlReportWriter.html" title="HTML Report">HTML Report</a>
            </li>
                  <li class="none">
                          <a href="codenarc-XmlReportWriter.html" title="XML Report">XML Report</a>
            </li>
                  <li class="none">
                          <a href="codenarc-TextReportWriter.html" title="Text and IDE Reports">Text and IDE Reports</a>
            </li>
          </ul>
                       <h5>Sample Reports</h5>
                  <ul>
                  <li class="none">
                          <a href="SampleCodeNarcHtmlReport.html" title="Sample HTML Report">Sample HTML Report</a>
            </li>
                  <li class="none">
                          <a href="SampleCodeNarcXmlReport.xml" title="Sample XML Report">Sample XML Report</a>
            </li>
          </ul>
                       <h5>Rules</h5>
                  <ul>
                  <li class="none">
                          <a href="codenarc-rule-index.html" title="Rule Index">Rule Index</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-basic.html" title="Basic Rules">Basic Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-braces.html" title="Braces Rules">Braces Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-concurrency.html" title="Concurrency Rules">Concurrency Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-convention.html" title="Convention Rules">Convention Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-design.html" title="Design Rules">Design Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-dry.html" title="DRY Rules">DRY Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-enhanced.html" title="Enhanced Rules">Enhanced Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-exceptions.html" title="Exceptions Rules">Exceptions Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-formatting.html" title="Formatting Rules">Formatting Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-generic.html" title="Generic Rules">Generic Rules</a>
            </li>
                  <li class="none">
            <strong>Grails Rules</strong>
          </li>
                  <li class="none">
                          <a href="codenarc-rules-groovyism.html" title="Groovyism Rules">Groovyism Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-imports.html" title="Imports Rules">Imports Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-jdbc.html" title="JDBC Rules">JDBC Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-junit.html" title="JUnit Rules">JUnit Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-logging.html" title="Logging Rules">Logging Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-naming.html" title="Naming Rules">Naming Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-size.html" title="Size/Complexity Rules">Size/Complexity Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-security.html" title="Security Rules">Security Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-serialization.html" title="Serialization Rules">Serialization Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-unnecessary.html" title="Unnecessary Rules">Unnecessary Rules</a>
            </li>
                  <li class="none">
                          <a href="codenarc-rules-unused.html" title="Unused Rules">Unused Rules</a>
            </li>
          </ul>
                       <h5>Developing</h5>
                  <ul>
                  <li class="none">
                          <a href="codenarc-developer-guide.html" title="Developer Guide">Developer Guide</a>
            </li>
          </ul>
                       <h5>Project Documentation</h5>
                  <ul>
                                                                    <li class="collapsed">
                          <a href="project-info.html" title="Project Information">Project Information</a>
                  </li>
                                                                                                                          <li class="collapsed">
                          <a href="project-reports.html" title="Project Reports">Project Reports</a>
                  </li>
          </ul>
                                                                                                                               <a href="http://sourceforge.net" title="Hosted on SourceForge.net" class="poweredBy">
        <img class="poweredBy"  alt="Hosted on SourceForge.net" src="http://sflogo.sourceforge.net/sflogo.php?group_id=208647&type=2"     />
      </a>
                                                                                                                      <a href="http://maven.apache.org" title="Build with Maven 2" class="poweredBy">
        <img class="poweredBy"  alt="Build with Maven 2" src="images/logos/maven-feather.png"     />
      </a>
                       
                    
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section">
<h2>Grails Rules (&quot;<i>rulesets/grails.xml</i>&quot;)<a name="Grails_Rules_rulesetsgrails.xml"></a></h2><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<div class="section">
<h3><a name="GrailsDomainHasEquals">GrailsDomainHasEquals</a> Rule<a name="GrailsDomainHasEquals_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p><i>Since CodeNarc 0.15</i></p>
<p>Checks that Grails domain classes redefine <tt>equals()</tt>.</p>
<p>Ignores classes annotated with <tt>@EqualsAndHashCode</tt> or <tt>@Canonical</tt>.</p>
<p>This rule sets the default value of <tt>applyToFilesMatching</tt> to only match files under the 'grails-app/domain' folder. You can override this with a different regular expression value if appropriate.</p></div>
<div class="section">
<h3><a name="GrailsDomainHasToString">GrailsDomainHasToString</a> Rule<a name="GrailsDomainHasToString_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p><i>Since CodeNarc 0.15</i></p>
<p>Checks that Grails domain classes redefine <tt>toString()</tt>.</p>
<p>Ignores classes annotated with <tt>@ToString</tt> or <tt>@Canonical</tt>.</p>
<p>This rule sets the default value of <tt>applyToFilesMatching</tt> to only match files under the 'grails-app/domain' folder. You can override this with a different regular expression value if appropriate.</p></div>
<div class="section">
<h3><a name="GrailsDomainReservedSqlKeywordName">GrailsDomainReservedSqlKeywordName</a> Rule<a name="GrailsDomainReservedSqlKeywordName_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p><i>Since CodeNarc 0.19</i></p>
<p>Forbids usage of SQL reserved keywords as class or field names in Grails domain classes. Naming a domain class (or its field) with such a keyword causes SQL schema creation errors and/or redundant table/column name mappings.</p>
<p>Note: due to limited type information available during CodeNarc's operation, this rule will report fields of type <tt>java.io.Serializable</tt>, but not of its implementations. Please specify any implementations used as domain properties in <tt>additionalHibernateBasicTypes</tt>.</p>
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><b>Property</b></td>
<td align="left"><b>Description</b></td>
<td align="left"><b>Default Value</b></td></tr>
<tr class="b">
<td align="left">additionalHibernateBasicTypes</td>
<td align="left">Comma-separated list of simple class names of additional classes that Hibernate maps as basic types (creates a column for a field of such class). Add your custom basic types here.</td>
<td align="left"><tt>''</tt></td></tr>
<tr class="a">
<td align="left">additionalReservedSqlKeywords</td>
<td align="left">Comma-separated list of additional reserved SQL keywords (just in case the 337 keywords of nowadays SQL-* standards weren't enough).</td>
<td align="left"><tt>''</tt></td></tr></table></div>
<div class="section">
<h3><a name="GrailsDomainWithServiceReference">GrailsDomainWithServiceReference</a> Rule<a name="GrailsDomainWithServiceReference_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p><i>Since CodeNarc 0.19</i></p>
<p>Checks that Grails Domain classes do not have Service classes injected.</p>
<p>This rule sets the default value of <tt>applyToFilesMatching</tt> to only match files under the 'grails-app/domain' folder. You can override this with a different regular expression value if appropriate.</p></div>
<div class="section">
<h3><a name="GrailsDuplicateConstraint">GrailsDuplicateConstraint</a> Rule<a name="GrailsDuplicateConstraint_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p><i>Since CodeNarc 0.18</i></p>
<p>Check for duplicate name in a Grails domain class constraints. Duplicate names/entries are legal, but can be confusing and error-prone.</p>
<p>NOTE: This rule does not check that the values of the entries are duplicated, only that there are two entries with the same name.</p>
<p>Example of violations:</p>
<div>
<pre>    class Person {
        String firstName
        String lastName

        static constraints = {
            firstName nullable:true
            lastName nullable:true, maxSize:30
            firstName nullable:false                // violation
        }
    }
</pre></div></div>
<div class="section">
<h3><a name="GrailsDuplicateMapping">GrailsDuplicateMapping</a> Rule<a name="GrailsDuplicateMapping_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p><i>Since CodeNarc 0.18</i></p>
<p>Check for duplicate name in a Grails domain class mapping. Duplicate names/entries are legal, but can be confusing and error-prone.</p>
<p>NOTE: This rule does not check that the values of the entries are duplicated, only that there are two entries with the same name.</p>
<p>Example of violations:</p>
<div>
<pre>    class Person {
        String firstName
        String lastName

        static mapping = {
            table 'people'
            firstName column: 'First_Name'
            lastName column: 'Last_Name'
            firstName column: 'First_Name'      // violation
            table 'people2'                     // violation
        }
    }
</pre></div></div>
<div class="section">
<h3><a name="GrailsMassAssignment">GrailsMassAssignment</a> Rule<a name="GrailsMassAssignment_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p><i>Since CodeNarc 0.21</i></p>
<p>Untrusted input should not be allowed to set arbitrary object fields without restriction.</p>
<p>Example of violations:</p>
<div>
<pre>   // Person would be a grails domain object
   def person = new Person(params)
   person.save()

   // or using .properties
   def person = Person.get(1)
   person.properties = params
   person.save()
</pre></div></div>
<div class="section">
<h3><a name="GrailsPublicControllerMethod">GrailsPublicControllerMethod</a> Rule (disabled)<a name="GrailsPublicControllerMethod_Rule_disabled"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><b>NOTE:</b> This rule has been disabled by default (i.e., by setting its <i>enabled</i> property to <i>false</i>). Given that Grails 2.x allows and encourages controller actions to be defined as methods instead of closures, this rule makes no sense for Grails 2.x projects.</td></tr></table>
<p>Rule that checks for public methods on Grails controller classes. Static methods are ignored.</p>
<p>Grails controller actions and interceptors are defined as properties on the controller class. Public methods on a controller class are unnecessary. They break encapsulation and can be confusing.</p>
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><b>Property</b></td>
<td align="left"><b>Description</b></td>
<td align="left"><b>Default Value</b></td></tr>
<tr class="b">
<td align="left">ignoreMethodNames</td>
<td align="left">Specifies one or more (comma-separated) method names that should be ignored (i.e., that should not cause a rule violation). The names may optionally contain wildcards (*,?).</td>
<td align="left"><tt>null</tt></td></tr></table>
<p>This rule sets the default value of <tt>applyToFilesMatching</tt> to only match files under the 'grails-app/controllers' folder. You can override this with a different regular expression value if appropriate.</p>
<p>This rule also sets the default value of <tt>applyToClassNames</tt> to only match class names ending in 'Controller'. You can override this with a different class name pattern (String with wildcards) if appropriate.</p></div>
<div class="section">
<h3><a name="GrailsServletContextReference">GrailsServletContextReference</a> Rule<a name="GrailsServletContextReference_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p>Rule that checks for references to the <tt>servletContext</tt> object from within Grails controller and taglib classes.</p>
<p>This rule is intended as a &quot;governance&quot; rule to enable monitoring and controlling access to the <tt>servletContext</tt> from within application source code. Storing objects in the <tt>servletContext</tt> may inhibit scalability and/or performance and should be carefully considered. Furthermore, access to the <tt>servletContext</tt> is not synchronized, so reading/writing objects from the <tt>servletConext</tt> must be manually synchronized, as described in <a class="externalLink" href="http://www.amazon.com/Definitive-Grails-Second-Experts-Development/dp/1590599950"> The Definitive Guide to Grails (2nd edition)</a>.</p>
<p>Note that this rule does not check for direct access to the <tt>servletContext</tt> from within GSP (Groovy Server Pages) files.</p>
<p>Enabling this rule may make most sense in a team environment where team members exhibit a broad range of skill and experience levels. Appropriate <tt>servletContext</tt> access can be configured as exceptions to this rule by configuring either the <tt>doNotApplyToFilenames</tt> or <tt>doNotApplyToFilesMatching</tt> property of the rule. And, as always, it is easy to just <a href="./codenarc-configuring-rules.html#Turning_Off_A_Rule">turn off the rule</a> if it does not make sense it your environment.</p>
<p>This rule sets the default value of <tt>applyToFilesMatching</tt> to only match files under the 'grails-app/controllers' or 'grails-app/taglib' folders. You can override this with a different regular expression value if appropriate.</p></div>
<div class="section">
<h3><a name="GrailsSessionReference">GrailsSessionReference</a> Rule (deprecated)<a name="GrailsSessionReference_Rule_deprecated"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><b>NOTE:</b> This rule has been <b>DEPRECATED</b>, and disabled by default (i.e., by setting its <i>enabled</i> property to <i>false</i>). Please email the <a class="externalLink" href="mailto:codenarc-user@lists.sourceforge.net">CodeNarc User Mailing List</a> if you have an opinion for/against deprecation and eventual removal of this rule.</td></tr></table>
<p>Rule that checks for references to the <tt>session</tt> object from within Grails controller and taglib classes.</p>
<p>This rule is intended as a &quot;governance&quot; rule to enable monitoring and controlling access to the <tt>session</tt> from within application source code. Storing objects in the <tt>session</tt> may inhibit scalability and/or performance and should be carefully considered.</p>
<p>Note that this rule does not check for direct access to the <tt>session</tt> from within GSP (Groovy Server Pages) files.</p>
<p>Enabling this rule may make most sense in a team environment where team members exhibit a broad range of skill and experience levels. Appropriate <tt>session</tt> access can be configured as exceptions to this rule by configuring either the <tt>doNotApplyToFilenames</tt> or <tt>doNotApplyToFilesMatching</tt> property of the rule. And, as always, it is easy to just <a href="./codenarc-configuring-rules.html#Turning_Off_A_Rule">turn off the rule</a> if it does not make sense it your environment.</p>
<p>This rule sets the default value of <tt>applyToFilesMatching</tt> to only match files under the 'grails-app/controllers' or 'grails-app/taglib' folders. You can override this with a different regular expression value if appropriate.</p></div>
<div class="section">
<h3><a name="GrailsStatelessService">GrailsStatelessService</a> Rule<a name="GrailsStatelessService_Rule"></a></h3><!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p>Checks for non-<tt>final</tt> fields on a Grails service class. Grails service classes are singletons by default, and so they should be reentrant. In most cases, this implies (or at least encourages) that they should be stateless.</p>
<p>This rule ignores (i.e., does not cause violations for) the following:</p>
<ul>
<li>All <tt>final</tt> fields (either instance or static). Note that fields that are <tt>static</tt> and non-<tt>final</tt>, however, do cause a violation.</li>
<li>Non-<tt>static</tt> properties (i.e., no visibility modifier specified) declared with <tt>def</tt>.</li>
<li>All classes annotated with the <tt>@Immutable</tt> transformation. See <a class="externalLink" href="http://groovy.codehaus.org/Immutable+transformation">http://groovy.codehaus.org/Immutable+transformation</a>.</li>
<li>All fields annotated with the <tt>@Inject</tt> annotation.</li>
<li>All fields with names matching the <i>ignoreFieldNames</i> property.</li>
<li>All fields with types matching the <i>ignoreFieldTypes</i> property.</li></ul>
<p>The <tt>ignoreFieldNames</tt> property of this rule is preconfigured to ignore the standard Grails service configuration field names ('scope', 'transactional') and the standard injected bean names ('dataSource', 'sessionFactory'), as well as all other field names ending with 'Service'.</p>
<table border="1" class="bodyTable">
<tr class="a">
<td align="left"><b>Property</b></td>
<td align="left"><b>Description</b></td>
<td align="left"><b>Default Value</b></td></tr>
<tr class="b">
<td align="left">ignoreFieldNames</td>
<td align="left">Specifies one or more (comma-separated) field names that should be ignored (i.e., that should not cause a rule violation). The names may optionally contain wildcards (*,?).</td>
<td align="left"><tt>'dataSource,scope,sessionFactory, transactional,*Service'</tt></td></tr>
<tr class="a">
<td align="left">addToIgnoreFieldNames</td>
<td align="left">Specifies one or more (comma-separated) field names to be added to the <tt>ignoreFieldNames</tt> property value. This is a special write-only property, and each call to <tt>setAddIgnoreFieldNames()</tt> adds to (rather than overwrites) the list of field names to be ignored.</td>
<td align="left"><tt>null</tt></td></tr>
<tr class="b">
<td align="left">ignoreFieldTypes</td>
<td align="left">Specifies one or more (comma-separated) field types that should be ignored (i.e., that should not cause a rule violation). The names may optionally contain wildcards (*,?).</td>
<td align="left"><tt>null</tt></td></tr></table>
<p>This rule sets the default value of <tt>applyToFilesMatching</tt> to only match files under the 'grails-app/services' folder. You can override this with a different regular expression value if appropriate.</p>
<p>This rule also sets the default value of <tt>applyToClassNames</tt> to only match class names ending in 'Service'. You can override this with a different class name pattern (String with wildcards) if appropriate.</p>
<div class="section">
<h4>Notes<a name="Notes"></a></h4><!-- ~~~~~~~~~~ -->
<ol style="list-style-type: decimal">
<li>The <tt>ignoreFieldTypes</tt> property matches the field type name as indicated in the field declaration, only including a full package specification IF it is included in the source code. For example, the field declaration <tt>BigDecimal value</tt> matches an <tt>ignoreFieldTypes</tt> value of <tt>BigDecimal</tt>, but not <tt>java.lang.BigDecimal</tt>.</li>
<li>There is one exception for the <tt>ignoreFieldTypes</tt> property: if the field is declared with a modifier/type of <tt>def</tt>, then the type resolves to <tt>java.lang.Object</tt>.</li></ol></div></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
              Copyright &#169;                   2015.
          All Rights Reserved.      
                    
                  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>