KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > puppycrawl > tools > checkstyle > checks > ArrayTypeStyleCheck


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     public int[] getDefaultTokens()
40     {
41         return new int[] {TokenTypes.ARRAY_DECLARATOR};
42     }
43
44     /** {@inheritDoc} */
45     public void visitToken(DetailAST aAST)
46     {
47         final DetailAST typeAST = aAST.getParent();
48         if (typeAST.getType() != TokenTypes.TYPE) {
49             return;
50         }
51         final DetailAST declAST = typeAST.getParent();
52         if (declAST.getType() == TokenTypes.METHOD_DEF) {
53             // Do not check method's return type.
54
// We have no alternatives here.
55
return;
56         }
57
58         final DetailAST variableAST = (DetailAST) typeAST.getNextSibling();
59         if (variableAST != null) {
60             final boolean isJavaStyle =
61                 (variableAST.getLineNo() > aAST.getLineNo())
62                 || (variableAST.getColumnNo() > aAST.getColumnNo());
63
64             if (isJavaStyle != mJavaStyle) {
65                 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     public void setJavaStyle(boolean aJavaStyle)
75     {
76         mJavaStyle = aJavaStyle;
77     }
78 }
79
Popular Tags