Files
codeql/cpp/ql/src/Metrics/Files/FMacroRatio.ql
Jonas Jensen 4ef5c9af62 C++: Autoformat everything
Some files that will change in #1736 have been spared.

    ./build -j4 target/jars/qlformat
    find ql/cpp/ql -name "*.ql"  -print0 | xargs -0 target/jars/qlformat --input
    find ql/cpp/ql -name "*.qll" -print0 | xargs -0 target/jars/qlformat --input
    (cd ql && git checkout 'cpp/ql/src/semmle/code/cpp/ir/implementation/**/*SSA*.qll')
    buildutils-internal/scripts/pr-checks/sync-identical-files.py --latest
2019-09-09 11:25:53 +02:00

32 lines
797 B
Plaintext

/**
* @name Usage of macros
* @description The percentage of source lines in each file that contain
* use of macros.
* @kind treemap
* @id cpp/macro-ratio-per-file
* @treemap.warnOn highValues
* @metricType file
* @metricAggregate avg max
* @tags maintainability
* readability
*/
import cpp
predicate macroLines(File f, int line) {
exists(MacroInvocation mi |
mi.getFile() = f and
mi.getLocation().getStartLine() = line
)
}
predicate macroLineCount(File f, int num) { num = count(int line | macroLines(f, line)) }
from MetricFile f, int macroLines, int loc
where
f.fromSource() and
loc = f.getNumberOfLinesOfCode() and
loc > 0 and
macroLineCount(f, macroLines)
select f, 100.0 * (macroLines.(float) / loc.(float)) as ratio order by ratio desc