Skip to content

Commit 5e70f93

Browse files
SONARJAVA-3679 Report issue with AnalyzerMessage (#3447)
* SONARJAVA-3679 Report issue with AnalyzerMessage * SONARJAVA-3679 Make sure JavaCheckVerifier fails when DefaultJavaFileScannerContext does
1 parent 06240ff commit 5e70f93

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

java-checks/src/main/java/org/sonar/java/checks/security/ExcessiveContentRequestCheck.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,21 +126,22 @@ public List<Tree.Kind> nodesToVisit() {
126126

127127
@Override
128128
public void visitNode(Tree tree) {
129+
DefaultJavaFileScannerContext defaultContext = (DefaultJavaFileScannerContext) context;
129130
if (tree.is(Tree.Kind.NEW_CLASS)) {
130131
NewClassTree newClassTree = (NewClassTree) tree;
131132
if (MULTIPART_CONSTRUCTOR.matches(newClassTree)) {
132133
// Create an issue that we will report only at the end of the analysis if the maximum size was never set.
133-
DefaultJavaFileScannerContext defaultContext = (DefaultJavaFileScannerContext) context;
134134
AnalyzerMessage analyzerMessage = defaultContext.createAnalyzerMessage(this, newClassTree, MESSAGE_SIZE_NOT_SET);
135135
multipartConstructorIssues.add(analyzerMessage);
136136
}
137137
} else {
138138
MethodInvocationTree mit = (MethodInvocationTree) tree;
139139
if (METHODS_SETTING_MAX_SIZE.matches(mit)) {
140140
sizeSetSomewhere = true;
141-
getIfExceedSize(mit.arguments().get(0)).ifPresent(bytesExceeding ->
142-
reportIssue(mit, String.format(MESSAGE_EXCEED_SIZE, bytesExceeding, fileUploadSizeLimit))
143-
);
141+
getIfExceedSize(mit.arguments().get(0))
142+
.map(bytesExceeding ->
143+
defaultContext.createAnalyzerMessage(this, mit, String.format(MESSAGE_EXCEED_SIZE, bytesExceeding, fileUploadSizeLimit)))
144+
.ifPresent(defaultContext::reportIssue);
144145
}
145146
}
146147
}

java-frontend/src/main/java/org/sonar/java/model/DefaultJavaFileScannerContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ public List<Tree> getComplexityNodes(Tree tree) {
258258
return complexityVisitor.getNodes(tree);
259259
}
260260

261-
private static void throwIfEndOfAnalysisCheck(JavaCheck javaCheck) {
261+
protected static void throwIfEndOfAnalysisCheck(JavaCheck javaCheck) {
262262
if (javaCheck instanceof EndOfAnalysisCheck) {
263263
throw new UnsupportedOperationException("EndOfAnalysisCheck must only call reportIssue with AnalyzerMessage and must never pass a Tree reference.");
264264
}

java-frontend/src/main/java/org/sonar/java/model/VisitorsBridgeForTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,22 +96,26 @@ public void addIssue(int line, JavaCheck javaCheck, String message, @Nullable In
9696

9797
@Override
9898
public void reportIssue(JavaCheck javaCheck, Tree syntaxNode, String message, List<Location> secondary, @Nullable Integer cost) {
99+
throwIfEndOfAnalysisCheck(javaCheck);
99100
List<List<Location>> flows = secondary.stream().map(Collections::singletonList).collect(Collectors.toList());
100101
issues.add(createAnalyzerMessage(getInputFile(), javaCheck, syntaxNode, null, message, flows, cost));
101102
}
102103

103104
@Override
104105
public void reportIssue(JavaCheck javaCheck, Tree startTree, Tree endTree, String message) {
106+
throwIfEndOfAnalysisCheck(javaCheck);
105107
issues.add(createAnalyzerMessage(javaCheck, startTree, endTree, message, Collections.emptyList(), null));
106108
}
107109

108110
@Override
109111
public void reportIssue(JavaCheck javaCheck, Tree startTree, Tree endTree, String message, List<Location> secondary, @Nullable Integer cost) {
112+
throwIfEndOfAnalysisCheck(javaCheck);
110113
issues.add(createAnalyzerMessage(javaCheck, startTree, endTree, message, secondary, cost));
111114
}
112115

113116
@Override
114117
public void reportIssueWithFlow(JavaCheck javaCheck, Tree syntaxNode, String message, Iterable<List<Location>> flows, @Nullable Integer cost) {
118+
throwIfEndOfAnalysisCheck(javaCheck);
115119
issues.add(createAnalyzerMessage(getInputFile(), javaCheck, syntaxNode, null, message, flows, cost));
116120
}
117121

0 commit comments

Comments
 (0)