Skip to content

Commit e2ad440

Browse files
SONARJAVA-5658 Refactoring: simplify object construction in JavaFrontend constructor (#5221)
1 parent e93a2a9 commit e2ad440

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

java-frontend/src/main/java/org/sonar/java/JavaFrontend.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.ArrayList;
2121
import java.util.Arrays;
2222
import java.util.Collection;
23-
import java.util.Collections;
2423
import java.util.HashSet;
2524
import java.util.List;
2625
import java.util.Map;
@@ -45,7 +44,6 @@
4544
import org.sonar.plugins.java.api.JavaCheck;
4645
import org.sonar.plugins.java.api.JavaResourceLocator;
4746
import org.sonar.plugins.java.api.JavaVersion;
48-
import org.sonarsource.analyzer.commons.collections.ListUtils;
4947
import org.sonarsource.performance.measure.PerformanceMeasure;
5048
import org.sonarsource.performance.measure.PerformanceMeasure.Duration;
5149

@@ -71,19 +69,24 @@ public JavaFrontend(JavaVersion javaVersion, @Nullable SonarComponents sonarComp
7169
commonVisitors.add(postAnalysisIssueFilter);
7270
}
7371

74-
Iterable<JavaCheck> codeVisitors = ListUtils.concat(commonVisitors, Arrays.asList(visitors));
75-
Collection<JavaCheck> testCodeVisitors = new ArrayList<>(commonVisitors);
76-
Iterable<JavaCheck> measurers = Collections.singletonList(measurer);
77-
codeVisitors = ListUtils.concat(measurers, codeVisitors);
72+
List<JavaCheck> codeVisitors = new ArrayList<>();
73+
codeVisitors.add(measurer);
74+
codeVisitors.addAll(commonVisitors);
75+
codeVisitors.addAll(Arrays.asList(visitors));
76+
77+
List<JavaCheck> testCodeVisitors = new ArrayList<>(commonVisitors);
7878
testCodeVisitors.add(measurer.new TestFileMeasurer());
79+
7980
List<File> classpath = new ArrayList<>();
8081
List<File> testClasspath = new ArrayList<>();
8182
List<JavaCheck> jspCodeVisitors = new ArrayList<>();
8283
List<File> jspClasspath = new ArrayList<>();
8384
boolean inAndroidContext = false;
85+
8486
if (sonarComponents != null) {
8587
if (!sonarComponents.isSonarLintContext()) {
86-
codeVisitors = ListUtils.concat(codeVisitors, Arrays.asList(new FileLinesVisitor(sonarComponents), new SyntaxHighlighterVisitor(sonarComponents)));
88+
codeVisitors.add(new FileLinesVisitor(sonarComponents));
89+
codeVisitors.add(new SyntaxHighlighterVisitor(sonarComponents));
8790
testCodeVisitors.add(new SyntaxHighlighterVisitor(sonarComponents));
8891
}
8992
classpath = sonarComponents.getJavaClasspath();
@@ -93,27 +96,21 @@ public JavaFrontend(JavaVersion javaVersion, @Nullable SonarComponents sonarComp
9396
jspCodeVisitors = sonarComponents.jspChecks();
9497
inAndroidContext = sonarComponents.inAndroidContext();
9598
}
99+
96100
globalClasspath = Stream.of(classpath, testClasspath, jspClasspath)
97101
.flatMap(Collection::stream).distinct().toList();
98102

99103
//AstScanner for main files
100104
astScanner = new JavaAstScanner(sonarComponents);
101-
astScanner.setVisitorBridge(createVisitorBridge(codeVisitors, classpath, javaVersion, sonarComponents, inAndroidContext));
105+
astScanner.setVisitorBridge(new VisitorsBridge(codeVisitors, classpath, sonarComponents, javaVersion, inAndroidContext));
102106

103107
//AstScanner for test files
104108
astScannerForTests = new JavaAstScanner(sonarComponents);
105-
astScannerForTests.setVisitorBridge(createVisitorBridge(testCodeVisitors, testClasspath, javaVersion, sonarComponents, inAndroidContext));
109+
astScannerForTests.setVisitorBridge(new VisitorsBridge(testCodeVisitors, testClasspath, sonarComponents, javaVersion, inAndroidContext));
106110

107111
//AstScanner for generated files
108112
astScannerForGeneratedFiles = new JavaAstScanner(sonarComponents);
109-
astScannerForGeneratedFiles.setVisitorBridge(createVisitorBridge(jspCodeVisitors, jspClasspath, javaVersion, sonarComponents, inAndroidContext));
110-
}
111-
112-
private static VisitorsBridge createVisitorBridge(
113-
Iterable<JavaCheck> codeVisitors, List<File> classpath, JavaVersion javaVersion, @Nullable SonarComponents sonarComponents, boolean inAndroidContext) {
114-
VisitorsBridge visitorsBridge = new VisitorsBridge(codeVisitors, classpath, sonarComponents, javaVersion);
115-
visitorsBridge.setInAndroidContext(inAndroidContext);
116-
return visitorsBridge;
113+
astScannerForGeneratedFiles.setVisitorBridge(new VisitorsBridge(jspCodeVisitors, jspClasspath, sonarComponents, javaVersion, inAndroidContext));
117114
}
118115

119116
@VisibleForTesting

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public class VisitorsBridge {
7575
protected InputFile currentFile;
7676
protected final JavaVersion javaVersion;
7777
private final List<File> classpath;
78+
// `inAndroidContext` should be made private final
7879
protected boolean inAndroidContext = false;
7980
private int fullyScannedFileCount = 0;
8081
private int skippedFileCount = 0;
@@ -92,6 +93,12 @@ public VisitorsBridge(Iterable<? extends JavaCheck> visitors, List<File> project
9293
this(visitors, projectClasspath, sonarComponents, new JavaVersionImpl());
9394
}
9495

96+
public VisitorsBridge(Iterable<? extends JavaCheck> visitors, List<File> projectClasspath, @Nullable SonarComponents sonarComponents, JavaVersion javaVersion,
97+
boolean inAndroidContext) {
98+
this(visitors, projectClasspath, sonarComponents, javaVersion);
99+
setInAndroidContext(inAndroidContext);
100+
}
101+
95102
public VisitorsBridge(Iterable<? extends JavaCheck> visitors, List<File> projectClasspath, @Nullable SonarComponents sonarComponents, JavaVersion javaVersion) {
96103
this.visitors = visitors;
97104
this.allScanners = new ArrayList<>();

0 commit comments

Comments
 (0)