01: /*
02: * Hammurapi
03: * Automated Java code review system.
04: * Copyright (C) 2004 Hammurapi Group
05: *
06: * This program is free software; you can redistribute it and/or modify
07: * it under the terms of the GNU General Public License as published by
08: * the Free Software Foundation; either version 2 of the License, or
09: * (at your option) any later version.
10: *
11: * This program is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: * GNU General Public License for more details.
15: *
16: * You should have received a copy of the GNU General Public License
17: * along with this program; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: *
20: * URL: http://www.hammurapi.org
21: * e-Mail: support@hammurapi.biz
22: */
23: package org.hammurapi.inspectors;
24:
25: import org.hammurapi.InspectorBase;
26:
27: import com.pavelvlasov.jsel.statements.CompoundStatement;
28: import com.pavelvlasov.jsel.statements.DoStatement;
29: import com.pavelvlasov.jsel.statements.ForStatement;
30: import com.pavelvlasov.jsel.statements.IfStatement;
31: import com.pavelvlasov.jsel.statements.WhileStatement;
32: import com.pavelvlasov.review.SourceMarker;
33:
34: /**
35: * Complex statements like do, while, for, if, else need a brace enclosed block.
36: * @author Pavel Vlasov
37: * @version $Revision: 1.2 $
38: */
39: public class BraceRule extends InspectorBase {
40:
41: /**
42: * Reviews the if statements.
43: *
44: * @param statement the if statement to be reviewed
45: */
46: public void visit(IfStatement statement) {
47: if (!(statement.getStatement() instanceof CompoundStatement)) {
48: context.reportViolation((SourceMarker) statement
49: .getStatement());
50: }
51:
52: if (!(statement.getElseStatement() == null
53: || statement.getElseStatement() instanceof CompoundStatement || statement
54: .getElseStatement() instanceof IfStatement)) {
55: context.reportViolation((SourceMarker) statement
56: .getElseStatement());
57: }
58: }
59:
60: /**
61: * Reviews the do loops.
62: *
63: * @param statement the do statement to be reviewed.
64: */
65: public void visit(DoStatement statement) {
66: if (!(statement.getStatement() instanceof CompoundStatement)) {
67: context.reportViolation((SourceMarker) statement
68: .getStatement());
69: }
70: }
71:
72: /**
73: * Reviews the for loops.
74: *
75: * @param statement the for statement to be reviewed.
76: */
77: public void visit(ForStatement statement) {
78: if (!(statement.getStatement() instanceof CompoundStatement)) {
79: context.reportViolation((SourceMarker) statement
80: .getStatement());
81: }
82: }
83:
84: /**
85: * Reviews the while loops.
86: *
87: * @param statement the while statement to be reviewed.
88: */
89: public void visit(WhileStatement statement) {
90: if (!(statement.getStatement() instanceof CompoundStatement)) {
91: context.reportViolation((SourceMarker) statement
92: .getStatement());
93: }
94: }
95:
96: }
|