Skip to content

Commit 8f40429

Browse files
authored
JS-793 Add SensorContext as parameter to JsAnalysisConsumer::doneAnalysis (#5568)
1 parent f7176d6 commit 8f40429

File tree

8 files changed

+62
-52
lines changed

8 files changed

+62
-52
lines changed

its/plugin/plugins/consumer-plugin/src/main/java/org/sonar/samples/javascript/consumer/Consumer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.List;
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
23+
import org.sonar.api.batch.sensor.SensorContext;
2324
import org.sonar.plugins.javascript.api.JsAnalysisConsumer;
2425
import org.sonar.plugins.javascript.api.JsFile;
2526

@@ -37,7 +38,7 @@ public void accept(JsFile jsFile) {
3738
}
3839

3940
@Override
40-
public void doneAnalysis() {
41+
public void doneAnalysis(SensorContext context) {
4142
LOG.info("Done analysis");
4243
done = true;
4344
}

its/plugin/plugins/consumer-plugin/src/test/java/org/sonar/samples/javascript/consumer/ConsumerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class ConsumerTest {
2525
@Test
2626
void test() {
2727
var consumer = new Consumer();
28-
consumer.doneAnalysis();
28+
consumer.doneAnalysis(null);
2929
assertTrue(consumer.isDone());
3030
}
3131
}

sonar-plugin/api/src/main/java/org/sonar/plugins/javascript/api/JsAnalysisConsumer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package org.sonar.plugins.javascript.api;
1818

19+
import org.sonar.api.batch.sensor.SensorContext;
1920
import org.sonar.api.scanner.ScannerSide;
2021
import org.sonarsource.api.sonarlint.SonarLintSide;
2122

@@ -36,7 +37,7 @@ public interface JsAnalysisConsumer {
3637
*
3738
* Called at the end of the analysis.
3839
*/
39-
void doneAnalysis();
40+
void doneAnalysis(SensorContext context);
4041

4142
/**
4243
* Called only once per analysis.

sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/analysis/AnalysisConsumers.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.List;
2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
22+
import org.sonar.api.batch.sensor.SensorContext;
2223
import org.sonar.api.scanner.ScannerSide;
2324
import org.sonar.plugins.javascript.api.JsAnalysisConsumer;
2425
import org.sonar.plugins.javascript.api.JsFile;
@@ -49,8 +50,8 @@ public void accept(JsFile jsFile) {
4950
}
5051

5152
@Override
52-
public void doneAnalysis() {
53-
consumers.forEach(JsAnalysisConsumer::doneAnalysis);
53+
public void doneAnalysis(SensorContext context) {
54+
consumers.forEach(c -> c.doneAnalysis(context));
5455
}
5556

5657
@Override

sonar-plugin/sonar-javascript-plugin/src/main/java/org/sonar/plugins/javascript/analysis/JsTsSensor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ protected void analyzeFiles(List<InputFile> inputFiles) throws IOException {
127127

128128
analysis.initialize(context, checks, consumers, analysisWarnings);
129129
var issues = analysis.analyzeFiles(inputFiles);
130-
consumers.doneAnalysis();
130+
consumers.doneAnalysis(context.getSensorContext());
131131
ExternalIssueRepository.dedupeAndSaveESLintIssues(
132132
this.context.getSensorContext(),
133133
externalIssues,
@@ -140,7 +140,7 @@ protected void analyzeFiles(List<InputFile> inputFiles) throws IOException {
140140
var handler = new AnalyzeProjectHandler(context, inputFiles, externalIssues);
141141
bridgeServer.analyzeProject(handler);
142142
new PluginTelemetry(context.getSensorContext(), bridgeServer).reportTelemetry();
143-
consumers.doneAnalysis();
143+
consumers.doneAnalysis(context.getSensorContext());
144144
} catch (Exception e) {
145145
LOG.error("Failed to get response from analysis", e);
146146
throw e;

sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/JavaScriptProfilesDefinitionTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ public void register(RegistrarContext registrarContext) {
8686
}
8787
},
8888
}
89-
).define(context);
89+
)
90+
.define(context);
9091
}
9192

9293
@Test
@@ -103,7 +104,7 @@ void sonar_way_js() {
103104
.containsOnly(CheckList.JS_REPOSITORY_KEY, "additionalRepository");
104105
assertThat(profile.rules().size()).isGreaterThan(100);
105106

106-
assertThat(deprecatedRulesInProfile(profile, deprecatedJsRules)).hasSize(1);
107+
assertThat(deprecatedRulesInProfile(profile, deprecatedJsRules)).isEmpty();
107108
}
108109

109110
private List<String> deprecatedRulesInProfile(
@@ -133,7 +134,7 @@ void sonar_way_ts() {
133134
.extracting(BuiltInQualityProfilesDefinition.BuiltInActiveRule::ruleKey)
134135
.contains("S5122");
135136

136-
assertThat(deprecatedRulesInProfile(profile, deprecatedTsRules)).hasSize(1);
137+
assertThat(deprecatedRulesInProfile(profile, deprecatedTsRules)).isEmpty();
137138
}
138139

139140
@Test

sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/analysis/AnalysisConsumersTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.List;
2222
import org.junit.jupiter.api.Test;
2323
import org.slf4j.event.Level;
24+
import org.sonar.api.batch.sensor.SensorContext;
2425
import org.sonar.api.testfixtures.log.LogTesterJUnit5;
2526
import org.sonar.plugins.javascript.api.JsAnalysisConsumer;
2627
import org.sonar.plugins.javascript.api.JsFile;
@@ -86,7 +87,7 @@ static class Consumer implements JsAnalysisConsumer {
8687
public void accept(JsFile jsFile) {}
8788

8889
@Override
89-
public void doneAnalysis() {}
90+
public void doneAnalysis(SensorContext context) {}
9091

9192
@Override
9293
public boolean isEnabled() {

sonar-plugin/sonar-javascript-plugin/src/test/java/org/sonar/plugins/javascript/analysis/JsTsSensorTest.java

Lines changed: 46 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import org.sonar.api.batch.rule.CheckFactory;
7272
import org.sonar.api.batch.rule.internal.ActiveRulesBuilder;
7373
import org.sonar.api.batch.rule.internal.NewActiveRule;
74+
import org.sonar.api.batch.sensor.SensorContext;
7475
import org.sonar.api.batch.sensor.cache.ReadCache;
7576
import org.sonar.api.batch.sensor.cache.WriteCache;
7677
import org.sonar.api.batch.sensor.highlighting.TypeOfText;
@@ -171,16 +172,16 @@ void setUp() throws Exception {
171172
)
172173
);
173174
when(bridgeServerMock.loadTsConfig(any())).thenAnswer(invocationOnMock -> {
174-
String tsConfigPath = (String) invocationOnMock.getArguments()[0];
175-
FilePredicates predicates = context.fileSystem().predicates();
176-
List<String> files = StreamSupport.stream(
177-
context.fileSystem().inputFiles(predicates.hasLanguage("ts")).spliterator(),
178-
false
179-
)
180-
.map(InputFile::absolutePath)
181-
.toList();
182-
return new TsConfigFile(tsConfigPath, files, emptyList());
183-
});
175+
String tsConfigPath = (String) invocationOnMock.getArguments()[0];
176+
FilePredicates predicates = context.fileSystem().predicates();
177+
List<String> files = StreamSupport.stream(
178+
context.fileSystem().inputFiles(predicates.hasLanguage("ts")).spliterator(),
179+
false
180+
)
181+
.map(InputFile::absolutePath)
182+
.toList();
183+
return new TsConfigFile(tsConfigPath, files, emptyList());
184+
});
184185
when(bridgeServerMock.createTsConfigFile(any())).thenReturn(
185186
new TsConfigFile(tempFolder.newFile().getAbsolutePath(), emptyList(), emptyList())
186187
);
@@ -625,11 +626,10 @@ void should_raise_a_parsing_error() throws IOException {
625626
setSonarLintRuntime(context);
626627
createTsConfigFile();
627628
when(bridgeServerMock.analyzeJsTs(any())).thenReturn(
628-
new Gson()
629-
.fromJson(
630-
"{ parsingError: { line: 3, message: \"Parse error message\", code: \"Parsing\"} }",
631-
AnalysisResponse.class
632-
)
629+
new Gson().fromJson(
630+
"{ parsingError: { line: 3, message: \"Parse error message\", code: \"Parsing\"} }",
631+
AnalysisResponse.class
632+
)
633633
);
634634
createInputFile(context);
635635
createSonarLintSensor().execute(context);
@@ -648,8 +648,10 @@ void should_raise_a_parsing_error() throws IOException {
648648
void should_raise_a_parsing_error_without_line() throws IOException {
649649
createVueInputFile();
650650
when(bridgeServerMock.analyzeJsTs(any())).thenReturn(
651-
new Gson()
652-
.fromJson("{ parsingError: { message: \"Parse error message\"} }", AnalysisResponse.class)
651+
new Gson().fromJson(
652+
"{ parsingError: { message: \"Parse error message\"} }",
653+
AnalysisResponse.class
654+
)
653655
);
654656
createInputFile(context);
655657
var tsProgram = new TsProgram("1", List.of(), List.of());
@@ -727,7 +729,7 @@ void should_send_skipAst_flag_when_consumer_is_disabled() throws Exception {
727729
public void accept(JsFile jsFile) {}
728730

729731
@Override
730-
public void doneAnalysis() {}
732+
public void doneAnalysis(SensorContext ctx) {}
731733

732734
@Override
733735
public boolean isEnabled() {
@@ -841,7 +843,9 @@ void should_send_content_when_not_utf8() throws Exception {
841843
ArgumentCaptor<JsAnalysisRequest> captor = ArgumentCaptor.forClass(JsAnalysisRequest.class);
842844
createSensor().execute(ctx);
843845
verify(bridgeServerMock, times(2)).analyzeJsTs(captor.capture());
844-
assertThat(captor.getAllValues()).extracting(c -> c.fileContent()).contains(content);
846+
assertThat(captor.getAllValues())
847+
.extracting(c -> c.fileContent())
848+
.contains(content);
845849
}
846850

847851
@Test
@@ -1140,8 +1144,10 @@ void should_fail_fast() throws Exception {
11401144
void should_fail_fast_with_parsing_error_without_line() throws IOException {
11411145
createVueInputFile();
11421146
when(bridgeServerMock.analyzeJsTs(any())).thenReturn(
1143-
new Gson()
1144-
.fromJson("{ parsingError: { message: \"Parse error message\"} }", AnalysisResponse.class)
1147+
new Gson().fromJson(
1148+
"{ parsingError: { message: \"Parse error message\"} }",
1149+
AnalysisResponse.class
1150+
)
11451151
);
11461152
MapSettings settings = new MapSettings().setProperty("sonar.internal.analysis.failFast", true);
11471153
context.setSettings(settings);
@@ -1294,7 +1300,7 @@ public void accept(JsFile jsFile) {
12941300
}
12951301

12961302
@Override
1297-
public void doneAnalysis() {
1303+
public void doneAnalysis(SensorContext ctx) {
12981304
done = true;
12991305
}
13001306
};
@@ -1372,7 +1378,7 @@ public void accept(JsFile jsFile) {
13721378
}
13731379

13741380
@Override
1375-
public void doneAnalysis() {
1381+
public void doneAnalysis(SensorContext ctx) {
13761382
done = true;
13771383
}
13781384
};
@@ -1398,7 +1404,7 @@ public void accept(JsFile jsFile) {
13981404
}
13991405

14001406
@Override
1401-
public void doneAnalysis() {
1407+
public void doneAnalysis(SensorContext ctx) {
14021408
done = true;
14031409
}
14041410
};
@@ -1462,7 +1468,7 @@ public void accept(JsFile jsFile) {
14621468
}
14631469

14641470
@Override
1465-
public void doneAnalysis() {
1471+
public void doneAnalysis(SensorContext ctx) {
14661472
done = true;
14671473
}
14681474
};
@@ -1516,7 +1522,7 @@ public void accept(JsFile jsFile) {
15161522
}
15171523

15181524
@Override
1519-
public void doneAnalysis() {
1525+
public void doneAnalysis(SensorContext ctx) {
15201526
done = true;
15211527
}
15221528

@@ -1635,21 +1641,20 @@ private BridgeServer.AnalysisResponseDTO createResponse(List<BridgeServer.Issue>
16351641
}
16361642

16371643
private BridgeServer.AnalysisResponseDTO createResponse() {
1638-
return new Gson()
1639-
.fromJson(
1640-
"{" +
1641-
createIssues() +
1642-
"," +
1643-
createHighlights() +
1644-
"," +
1645-
createMetrics() +
1646-
"," +
1647-
createCpdTokens() +
1648-
"," +
1649-
createHighlightedSymbols() +
1650-
"}",
1651-
BridgeServer.AnalysisResponseDTO.class
1652-
);
1644+
return new Gson().fromJson(
1645+
"{" +
1646+
createIssues() +
1647+
"," +
1648+
createHighlights() +
1649+
"," +
1650+
createMetrics() +
1651+
"," +
1652+
createCpdTokens() +
1653+
"," +
1654+
createHighlightedSymbols() +
1655+
"}",
1656+
BridgeServer.AnalysisResponseDTO.class
1657+
);
16531658
}
16541659

16551660
private String createIssues() {

0 commit comments

Comments
 (0)