Skip to content

Commit 9cf14d8

Browse files
SONARJAVA-5686 Report the scanner app using telemetry (#5250)
1 parent 0065cd0 commit 9cf14d8

File tree

5 files changed

+23
-4
lines changed

5 files changed

+23
-4
lines changed

its/plugin/tests/src/test/java/com/sonar/it/java/suite/JavaTutorialTest.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package com.sonar.it.java.suite;
1818

19+
import com.sonar.orchestrator.build.BuildResult;
1920
import com.sonar.orchestrator.build.MavenBuild;
2021
import com.sonar.orchestrator.junit4.OrchestratorRule;
2122
import java.util.List;
@@ -33,7 +34,10 @@ public class JavaTutorialTest {
3334

3435
@Test
3536
public void test() {
36-
MavenBuild build = TestUtils.createMavenBuild().setPom(TestUtils.projectPom("java-tutorial")).setCleanPackageSonarGoals();
37+
MavenBuild build = TestUtils.createMavenBuild()
38+
.setPom(TestUtils.projectPom("java-tutorial"))
39+
.setCleanPackageSonarGoals()
40+
.setDebugLogs(true);
3741
String projectKey = "org.sonarsource.it.projects:java-tutorial";
3842
TestUtils.provisionProject(orchestrator, projectKey, "java-tutorial", "java", "java-tutorial");
3943
executeAndAssertBuild(build, projectKey);
@@ -47,13 +51,14 @@ public void test_as_batch_mode() {
4751
.setCleanPackageSonarGoals()
4852
.setProperty("sonar.projectKey", projectKey)
4953
.setProperty("sonar.projectName", projectName)
50-
.setProperty("sonar.java.experimental.batchModeSizeInKB", "8000");
54+
.setProperty("sonar.java.experimental.batchModeSizeInKB", "8000")
55+
.setDebugLogs(true);
5156
TestUtils.provisionProject(orchestrator, projectKey, projectName, "java", "java-tutorial");
5257
executeAndAssertBuild(build, projectKey);
5358
}
5459

5560
private void executeAndAssertBuild(MavenBuild build, String projectKey) {
56-
orchestrator.executeBuild(build);
61+
BuildResult buildResult = orchestrator.executeBuild(build);
5762

5863
List<Issue> issues = TestUtils.issuesForComponent(orchestrator, projectKey);
5964
assertThat(issues).hasSize(31);
@@ -63,6 +68,8 @@ private void executeAndAssertBuild(MavenBuild build, String projectKey) {
6368
assertThat(issuesForRule(issues, "mycompany-java:AvoidBrandInMethodNames")).hasSize(2);
6469
assertThat(issuesForRule(issues, "mycompany-java:SecurityAnnotationMandatory")).hasSize(2);
6570
assertThat(issuesForRule(issues, "mycompany-java:SpringControllerRequestMappingEntity")).hasSize(1);
71+
72+
assertThat(buildResult.getLogs()).containsOnlyOnce("java.scanner_app=ScannerMaven");
6673
}
6774

6875
private static Stream<String> issuesForRule(List<Issue> issues, String key) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
* Telemetry keys used by the Java analyzer.
2121
*/
2222
public enum TelemetryKey {
23-
JAVA_LANGUAGE_VERSION("java.language.version");
23+
JAVA_LANGUAGE_VERSION("java.language.version"),
24+
JAVA_SCANNER_APP("java.scanner_app");
2425

2526
private final String key;
2627

sonar-java-plugin/src/main/java/org/sonar/plugins/java/JavaSensor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353

5454
import static org.sonar.api.rules.RuleAnnotationUtils.getRuleKey;
5555
import static org.sonar.java.TelemetryKey.JAVA_LANGUAGE_VERSION;
56+
import static org.sonar.java.TelemetryKey.JAVA_SCANNER_APP;
5657

5758
@Phase(name = Phase.Name.PRE)
5859
@DependedUpon("org.sonar.plugins.java.JavaSensor")
@@ -110,6 +111,8 @@ public void execute(SensorContext context) {
110111
JavaVersion javaVersion = getJavaVersion();
111112
telemetry.addMetric(JAVA_LANGUAGE_VERSION, javaVersion.toString());
112113

114+
telemetry.addMetric(JAVA_SCANNER_APP, settings.get("sonar.scanner.app").orElse("none"));
115+
113116
JavaFrontend frontend = new JavaFrontend(javaVersion, sonarComponents, measurer, javaResourceLocator, postAnalysisIssueFilter,
114117
sonarComponents.mainChecks().toArray(new JavaCheck[0]));
115118
frontend.scan(getSourceFiles(), getTestFiles(), runJasper(context));

sonar-java-plugin/src/main/java/org/sonar/plugins/java/SensorTelemetry.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
*/
1717
package org.sonar.plugins.java;
1818

19+
import org.slf4j.Logger;
20+
import org.slf4j.LoggerFactory;
1921
import org.sonar.api.batch.sensor.SensorContext;
2022
import org.sonar.java.Telemetry;
2123
import org.sonar.java.TelemetryKey;
@@ -24,6 +26,8 @@
2426
* Wraps up {@link SensorContext} to allow passing it around without exposing other APIs.
2527
*/
2628
public class SensorTelemetry implements Telemetry {
29+
private static final Logger LOG = LoggerFactory.getLogger(SensorTelemetry.class);
30+
2731
private final SensorContext context;
2832

2933
public SensorTelemetry(SensorContext context) {
@@ -32,6 +36,7 @@ public SensorTelemetry(SensorContext context) {
3236

3337
@Override
3438
public void addMetric(TelemetryKey key, String value) {
39+
LOG.debug("{}={}", key.key(), value);
3540
this.context.addTelemetryProperty(key.key(), value);
3641
}
3742
}

sonar-java-plugin/src/test/java/org/sonar/plugins/java/JavaSensorTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ void test_issues_creation_on_test_file() throws IOException { // NOSONAR require
122122
private void testIssueCreation(InputFile.Type onType, int expectedIssues) throws IOException {
123123
MapSettings settings = new MapSettings();
124124
settings.setProperty(JavaVersion.SOURCE_VERSION, "22");
125+
settings.setProperty("sonar.scanner.app", "ScannerJavaSensorTest");
126+
125127
NoSonarFilter noSonarFilter = mock(NoSonarFilter.class);
126128
SensorContextTester context = spy(createContext(onType).setRuntime(SonarRuntimeImpl.forSonarLint(Version.create(6, 7))));
127129
DefaultFileSystem fs = context.fileSystem();
@@ -135,6 +137,7 @@ private void testIssueCreation(InputFile.Type onType, int expectedIssues) throws
135137
verify(noSonarFilter, times(1)).noSonarInFile(fs.inputFiles().iterator().next(), Collections.singleton(118));
136138
verify(sonarComponents, times(expectedIssues)).reportIssue(any(AnalyzerMessage.class));
137139
verify(context).addTelemetryProperty("java.language.version", "22");
140+
verify(context).addTelemetryProperty("java.scanner_app", "ScannerJavaSensorTest");
138141

139142

140143
settings.setProperty(JavaVersion.SOURCE_VERSION, "wrongFormat");

0 commit comments

Comments
 (0)