|
28 | 28 | import org.sonar.java.checks.methods.MethodMatcher; |
29 | 29 | import org.sonar.java.tag.Tag; |
30 | 30 | import org.sonar.plugins.java.api.semantic.Symbol; |
| 31 | +import org.sonar.plugins.java.api.tree.Arguments; |
31 | 32 | import org.sonar.plugins.java.api.tree.BinaryExpressionTree; |
32 | 33 | import org.sonar.plugins.java.api.tree.ExpressionTree; |
33 | 34 | import org.sonar.plugins.java.api.tree.IdentifierTree; |
@@ -163,25 +164,33 @@ private static MethodMatcher dateMethodInvocationMatcherSetter(String type, Stri |
163 | 164 | @Override |
164 | 165 | protected void onMethodInvocationFound(MethodInvocationTree mit) { |
165 | 166 | String name = getMethodName(mit); |
| 167 | + Arguments arguments = mit.arguments(); |
166 | 168 | if ("set".equals(name)) { |
167 | 169 | // Calendar method |
168 | | - ExpressionTree arg0 = mit.arguments().get(0); |
169 | | - ExpressionTree arg1 = mit.arguments().get(1); |
| 170 | + ExpressionTree arg0 = arguments.get(0); |
| 171 | + ExpressionTree arg1 = arguments.get(1); |
170 | 172 | String referenceName = getReferencedCalendarName(arg0); |
171 | 173 | if (referenceName != null) { |
172 | 174 | checkArgument(arg1, referenceName, "\"{0}\" is not a valid value for setting \"{1}\"."); |
173 | 175 | } |
| 176 | + } else if ("<init>".equals(mit.symbol().name())) { |
| 177 | + // call to this() or super() |
| 178 | + checkConstructorArguments(mit.arguments()); |
174 | 179 | } else { |
175 | | - ExpressionTree arg = mit.arguments().get(0); |
176 | | - checkArgument(arg, name, "\"{0}\" is not a valid value for \"{1}\" method."); |
| 180 | + checkArgument(arguments.get(0), name, "\"{0}\" is not a valid value for \"{1}\" method."); |
177 | 181 | } |
178 | 182 | } |
179 | 183 |
|
180 | 184 | @Override |
181 | 185 | protected void onConstructorFound(NewClassTree newClassTree) { |
| 186 | + Arguments arguments = newClassTree.arguments(); |
| 187 | + checkConstructorArguments(arguments); |
| 188 | + } |
| 189 | + |
| 190 | + private void checkConstructorArguments(Arguments arguments) { |
182 | 191 | // Gregorian Calendar : ignore first argument: year. |
183 | | - for (int i = 1; i < newClassTree.arguments().size(); i++) { |
184 | | - checkArgument(newClassTree.arguments().get(i), GREGORIAN_PARAMETERS[i], "\"{0}\" is not a valid value for setting \"{1}\"."); |
| 192 | + for (int i = 1; i < arguments.size(); i++) { |
| 193 | + checkArgument(arguments.get(i), GREGORIAN_PARAMETERS[i], "\"{0}\" is not a valid value for setting \"{1}\"."); |
185 | 194 | } |
186 | 195 | } |
187 | 196 |
|
|
0 commit comments