Merge pull request #11251 from igfoo/igfoo/total

Kotlin: Add total number of diagnostics to telemetry
This commit is contained in:
Ian Lynagh
2022-11-14 15:09:57 +00:00
committed by GitHub
2 changed files with 33 additions and 4 deletions

View File

@@ -60,6 +60,29 @@ predicate extractorDiagnostics(string key, int value) {
)
}
/*
* Just counting the diagnostics doesn't give the full picture, as
* CODEQL_EXTRACTOR_KOTLIN_DIAGNOSTIC_LIMIT means that some diagnostics
* will be suppressed. In that case, we need to look for the
* suppression message, uncount those that did get emitted, uncount the
* suppression message itself, and then add on the full count.
*/
predicate extractorTotalDiagnostics(string key, int value) {
exists(string extractor, string limitRegex |
limitRegex = "Total of ([0-9]+) diagnostics \\(reached limit of ([0-9]+)\\).*" and
key = "Total number of diagnostics from " + extractor and
value =
strictcount(Diagnostic d | d.getGeneratedBy() = extractor) +
sum(Diagnostic d |
d.getGeneratedBy() = extractor
|
d.getMessage().regexpCapture(limitRegex, 1).toInt() -
d.getMessage().regexpCapture(limitRegex, 2).toInt() - 1
)
)
}
from string key, int value
where
compilationInfo(key, value) or
@@ -69,5 +92,6 @@ where
numberOfLinesOfCode(key, value) or
totalNumberOfLinesByExtension(key, value) or
numberOfLinesOfCodeByExtension(key, value) or
extractorDiagnostics(key, value)
extractorDiagnostics(key, value) or
extractorTotalDiagnostics(key, value)
select key, value