01: ////////////////////////////////////////////////////////////////////////////////
02: // checkstyle: Checks Java source code for adherence to a set of rules.
03: // Copyright (C) 2001-2007 Oliver Burn
04: //
05: // This library is free software; you can redistribute it and/or
06: // modify it under the terms of the GNU Lesser General Public
07: // License as published by the Free Software Foundation; either
08: // version 2.1 of the License, or (at your option) any later version.
09: //
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.coding;
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: * Detects inline conditionals.
27: *
28: * An example inline conditional is this:
29: * <pre>
30: * String a = getParameter("a");
31: * String b = (a==null || a.length<1) ? null : a.substring(1);
32: * </pre>
33: *
34: * Rationale: Some developers find inline conditionals hard to read,
35: * so their company's coding standards forbids them.
36: *
37: * @author lkuehne
38: * @version $Revision: 1.6 $
39: */
40: public class AvoidInlineConditionalsCheck extends Check {
41: /** {@inheritDoc} */
42: public int[] getDefaultTokens() {
43: return new int[] { TokenTypes.QUESTION };
44: }
45:
46: /** {@inheritDoc} */
47: public int[] getRequiredTokens() {
48: return getDefaultTokens();
49: }
50:
51: /** {@inheritDoc} */
52: public void visitToken(DetailAST aAST) {
53: // the only place a QUESTION token can occur is in inline conditionals
54: // so no need to do any further tricks here - pretty trivial Check!
55:
56: log(aAST.getLineNo(), aAST.getColumnNo(),
57: "inline.conditional.avoid");
58: }
59: }
|