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.config.ConfigurationException;
28: import com.pavelvlasov.config.Parameterizable;
29: import com.pavelvlasov.jsel.Operation;
30:
31: /**
32: * Too many parameters.
33: * @author Pavel Vlasov
34: * @version $Revision: 1.4 $
35: */
36: public class TooManyParametersRule extends InspectorBase implements
37: Parameterizable {
38: /**
39: * Stores the setting form the configuration for the maximum allowed
40: * number of parameters for an operation.
41: */
42: private Integer maxParameters;
43:
44: /**
45: * Reviews the method and checks if it has too many parameters.
46: *
47: * @param operation the method to be reviewed.
48: */
49: public void visit(Operation operation) {
50: if (maxParameters != null
51: && operation.getParameters().size() > maxParameters
52: .intValue()) {
53: context.reportViolation(operation, new Object[] {
54: new Integer(operation.getParameters().size()),
55: maxParameters });
56: }
57: }
58:
59: /**
60: * Configures the rule. Reads in the values of the parameters max-parameters and
61: * class-max-complexity.
62: *
63: * @param name the name of the parameter being loaded from Hammurapi configuration
64: * @param value the value of the parameter being loaded from Hammurapi configuration
65: * @exception ConfigurationException in case of a not supported parameter
66: */
67: public boolean setParameter(String name, Object value)
68: throws ConfigurationException {
69: if ("max-parameters".equals(name)) {
70: maxParameters = new Integer(Integer.parseInt(value
71: .toString()));
72: return true;
73: }
74:
75: throw new ConfigurationException("Parameter '" + name
76: + "' is not supported");
77: }
78:
79: /**
80: * Gives back the preconfigured values.
81: */
82: public String getConfigInfo() {
83: StringBuffer ret = new StringBuffer(
84: "Allowed nbr of parameters:\n");
85: ret.append("max parameters: " + maxParameters + "\n");
86: return ret.toString();
87: }
88: }
|