Clover Coverage Report - Checkstyle
Coverage timestamp: Fri May 9 2008 10:48:13 EST
../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
13   78   7   4.33
8   36   0.54   3
3     2.33  
1    
 
  ArrayTypeStyleCheck       Line # 33 100% 1.0
7 13 7 7 0.54
 
  (2)
 
1    ////////////////////////////////////////////////////////////////////////////////
2    // checkstyle: Checks Java source code for adherence to a set of rules.
3    // Copyright (C) 2001-2005 Oliver Burn
4    //
5    // This library is free software; you can redistribute it and/or
6    // modify it under the terms of the GNU Lesser General Public
7    // License as published by the Free Software Foundation; either
8    // version 2.1 of the License, or (at your option) any later version.
9    //
10    // This library is distributed in the hope that it will be useful,
11    // but WITHOUT ANY WARRANTY; without even the implied warranty of
12    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    // Lesser General Public License for more details.
14    //
15    // You should have received a copy of the GNU Lesser General Public
16    // License along with this library; if not, write to the Free Software
17    // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18    ////////////////////////////////////////////////////////////////////////////////
19    package com.puppycrawl.tools.checkstyle.checks;
20   
21    import com.puppycrawl.tools.checkstyle.api.Check;
22    import com.puppycrawl.tools.checkstyle.api.TokenTypes;
23    import com.puppycrawl.tools.checkstyle.api.DetailAST;
24   
25    /**
26    * Checks the style of array type definitions.
27    * Some like Java-style: <code>public static void main(String[] args)</code>
28    * and some like C-style: public static void main(String args[])
29    *
30    * By default the Check enforces Java style.
31    * @author lkuehne
32    */
 
33    public class ArrayTypeStyleCheck extends Check
34    {
35    /** controls whether to use Java or C style */
36    private boolean mJavaStyle = true;
37   
38    /** {@inheritDoc} */
 
39  2 toggle public int[] getDefaultTokens()
40    {
41  2 return new int[] {TokenTypes.ARRAY_DECLARATOR};
42    }
43   
44    /** {@inheritDoc} */
 
45  28 toggle public void visitToken(DetailAST aAST)
46    {
47  28 final DetailAST typeAST = aAST.getParent();
48  28 if (typeAST.getType() != TokenTypes.TYPE) {
49  6 return;
50    }
51  22 final DetailAST declAST = typeAST.getParent();
52  22 if (declAST.getType() == TokenTypes.METHOD_DEF) {
53    // Do not check method's return type.
54    // We have no alternatives here.
55  4 return;
56    }
57   
58  18 final DetailAST variableAST = (DetailAST) typeAST.getNextSibling();
59  18 if (variableAST != null) {
60  12 final boolean isJavaStyle =
61    (variableAST.getLineNo() > aAST.getLineNo())
62    || (variableAST.getColumnNo() > aAST.getColumnNo());
63   
64  12 if (isJavaStyle != mJavaStyle) {
65  6 log(aAST.getLineNo(), aAST.getColumnNo(), "array.type.style");
66    }
67    }
68    }
69   
70    /**
71    * Controls whether to check for Java or C style.
72    * @param aJavaStyle true if Java style should be used.
73    */
 
74  1 toggle public void setJavaStyle(boolean aJavaStyle)
75    {
76  1 mJavaStyle = aJavaStyle;
77    }
78    }