Skip to content

Commit fa62a77

Browse files
committed
Address review comments
1 parent addccc9 commit fa62a77

File tree

3 files changed

+44
-24
lines changed

3 files changed

+44
-24
lines changed

sonar-python-plugin/src/main/java/org/sonar/plugins/python/IPynbSensor.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,21 +97,25 @@ private void processNotebooksFiles(List<PythonInputFile> pythonFiles, SensorCont
9797
PythonIndexer pythonIndexer = new SonarQubePythonIndexer(pythonFiles, cacheContext, context);
9898
PythonScanner scanner = new PythonScanner(context, checks, fileLinesContextFactory, noSonarFilter, PythonParser.createIPythonParser(), pythonIndexer);
9999
scanner.execute(pythonFiles, context);
100-
sensorTelemetryStorage.data.put(SensorTelemetryStorage.NOTEBOOK_RECOGNITION_ERROR_KEY, String.valueOf(scanner.getRecognitionErrorCount()));
100+
sensorTelemetryStorage.updateMetric(SensorTelemetryStorage.NOTEBOOK_RECOGNITION_ERROR_KEY, String.valueOf(scanner.getRecognitionErrorCount()));
101101
}
102102

103103
private List<PythonInputFile> parseNotebooks(List<PythonInputFile> pythonFiles, SensorContext context) {
104104
List<PythonInputFile> generatedIPythonFiles = new ArrayList<>();
105105

106-
sensorTelemetryStorage.data.put(SensorTelemetryStorage.NOTEBOOK_TOTAL_KEY, String.valueOf(pythonFiles.size()));
107-
final int[] numberOfFailedParsing = {0};
106+
sensorTelemetryStorage.updateMetric(SensorTelemetryStorage.NOTEBOOK_TOTAL_KEY, String.valueOf(pythonFiles.size()));
107+
var numberOfFailedParsing = 0;
108108
var numberOfExceptions = 0;
109109

110110
for (PythonInputFile inputFile : pythonFiles) {
111111
try {
112-
sensorTelemetryStorage.data.put(SensorTelemetryStorage.NOTEBOOK_PRESENT_KEY, "1");
112+
sensorTelemetryStorage.updateMetric(SensorTelemetryStorage.NOTEBOOK_PRESENT_KEY, "1");
113113
var result = IpynbNotebookParser.parseNotebook(inputFile);
114-
result.ifPresentOrElse(generatedIPythonFiles::add, () -> numberOfFailedParsing[0]++);
114+
if (result.isPresent()) {
115+
generatedIPythonFiles.add(result.get());
116+
} else {
117+
numberOfFailedParsing++;
118+
}
115119
} catch (Exception e) {
116120
numberOfExceptions++;
117121
if (context.config().getBoolean(FAIL_FAST_PROPERTY_NAME).orElse(false) && !isErrorOnTestFile(inputFile)) {
@@ -120,8 +124,8 @@ private List<PythonInputFile> parseNotebooks(List<PythonInputFile> pythonFiles,
120124
}
121125
}
122126

123-
sensorTelemetryStorage.data.put(SensorTelemetryStorage.NOTEBOOK_PARSE_ERROR_KEY, String.valueOf(numberOfFailedParsing[0]));
124-
sensorTelemetryStorage.data.put(SensorTelemetryStorage.NOTEBOOK_EXCEPTION_KEY, String.valueOf(numberOfExceptions));
127+
sensorTelemetryStorage.updateMetric(SensorTelemetryStorage.NOTEBOOK_PARSE_ERROR_KEY, String.valueOf(numberOfFailedParsing));
128+
sensorTelemetryStorage.updateMetric(SensorTelemetryStorage.NOTEBOOK_EXCEPTION_KEY, String.valueOf(numberOfExceptions));
125129

126130
return generatedIPythonFiles;
127131
}

sonar-python-plugin/src/main/java/org/sonar/plugins/python/SensorTelemetryStorage.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,36 @@
2525
public class SensorTelemetryStorage {
2626
private static final Logger LOG = LoggerFactory.getLogger(SensorTelemetryStorage.class);
2727

28-
public static final String NOTEBOOK_PRESENT_KEY = "python.notebook.present";
29-
public static final String NOTEBOOK_TOTAL_KEY = "python.notebook.total";
30-
public static final String NOTEBOOK_PARSE_ERROR_KEY = "python.notebook.parse_error";
31-
public static final String NOTEBOOK_RECOGNITION_ERROR_KEY = "python.notebook.recognition_error";
32-
public static final String NOTEBOOK_EXCEPTION_KEY = "python.notebook.exceptions";
28+
public static final MetricKey NOTEBOOK_PRESENT_KEY = new MetricKey("python.notebook.present");
29+
public static final MetricKey NOTEBOOK_TOTAL_KEY = new MetricKey("python.notebook.total");
30+
public static final MetricKey NOTEBOOK_PARSE_ERROR_KEY = new MetricKey("python.notebook.parse_error");
31+
public static final MetricKey NOTEBOOK_RECOGNITION_ERROR_KEY = new MetricKey("python.notebook.recognition_error");
32+
public static final MetricKey NOTEBOOK_EXCEPTION_KEY = new MetricKey("python.notebook.exceptions");
3333
final Map<String, String> data;
3434

3535
public SensorTelemetryStorage() {
3636
data = new HashMap<>();
37-
data.put(NOTEBOOK_PRESENT_KEY, "false");
37+
data.put(NOTEBOOK_PRESENT_KEY.key(), "false");
3838
}
3939

4040
public void send(SensorContext sensorContext) {
4141
data.forEach(sensorContext::addTelemetryProperty);
4242
data.forEach((k, v) -> LOG.info("Metrics property: {}={}", k, v));
4343
}
44+
45+
public void updateMetric(MetricKey key, String value) {
46+
data.put(key.key(), value);
47+
}
48+
49+
static class MetricKey {
50+
private final String key;
51+
52+
private MetricKey(String key) {
53+
this.key = key;
54+
}
55+
56+
public String key() {
57+
return key;
58+
}
59+
}
4460
}

sonar-python-plugin/src/test/java/org/sonar/plugins/python/IPynbSensorTest.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -218,11 +218,11 @@ void test_notebook_sensor_is_executed_on_json_file() {
218218
assertDoesNotThrow(() -> sensor.execute(context));
219219
assertThat(sensor.getSensorTelemetryStorage().data)
220220
.containsExactlyInAnyOrderEntriesOf(Map.of(
221-
SensorTelemetryStorage.NOTEBOOK_PRESENT_KEY, "1",
222-
SensorTelemetryStorage.NOTEBOOK_RECOGNITION_ERROR_KEY, "0",
223-
SensorTelemetryStorage.NOTEBOOK_PARSE_ERROR_KEY, "0",
224-
SensorTelemetryStorage.NOTEBOOK_TOTAL_KEY, "1",
225-
SensorTelemetryStorage.NOTEBOOK_EXCEPTION_KEY, "0"));
221+
SensorTelemetryStorage.NOTEBOOK_PRESENT_KEY.key(), "1",
222+
SensorTelemetryStorage.NOTEBOOK_RECOGNITION_ERROR_KEY.key(), "0",
223+
SensorTelemetryStorage.NOTEBOOK_PARSE_ERROR_KEY.key(), "0",
224+
SensorTelemetryStorage.NOTEBOOK_TOTAL_KEY.key(), "1",
225+
SensorTelemetryStorage.NOTEBOOK_EXCEPTION_KEY.key(), "0"));
226226
}
227227

228228
@Test
@@ -236,7 +236,7 @@ void test_notebook_sensor_does_not_execute_cpd_measures() {
236236
}
237237

238238
@Test
239-
void test_notebook_sensor_parse_error_on_valid_line(){
239+
void test_notebook_sensor_parse_error_on_valid_line() {
240240
inputFile("notebook_parse_error.ipynb");
241241
activeRules = new ActiveRulesBuilder().build();
242242
var sensor = notebookSensor();
@@ -245,10 +245,10 @@ void test_notebook_sensor_parse_error_on_valid_line(){
245245
assertThat(logs).contains("Unable to parse file: notebook_parse_error.ipynbParse error at line 1");
246246
assertThat(sensor.getSensorTelemetryStorage().data)
247247
.containsExactlyInAnyOrderEntriesOf(Map.of(
248-
SensorTelemetryStorage.NOTEBOOK_PRESENT_KEY, "1",
249-
SensorTelemetryStorage.NOTEBOOK_PARSE_ERROR_KEY, "0",
250-
SensorTelemetryStorage.NOTEBOOK_TOTAL_KEY, "1",
251-
SensorTelemetryStorage.NOTEBOOK_EXCEPTION_KEY, "0",
252-
SensorTelemetryStorage.NOTEBOOK_RECOGNITION_ERROR_KEY, "1"));
248+
SensorTelemetryStorage.NOTEBOOK_PRESENT_KEY.key(), "1",
249+
SensorTelemetryStorage.NOTEBOOK_PARSE_ERROR_KEY.key(), "0",
250+
SensorTelemetryStorage.NOTEBOOK_TOTAL_KEY.key(), "1",
251+
SensorTelemetryStorage.NOTEBOOK_EXCEPTION_KEY.key(), "0",
252+
SensorTelemetryStorage.NOTEBOOK_RECOGNITION_ERROR_KEY.key(), "1"));
253253
}
254254
}

0 commit comments

Comments
 (0)