Files
codeql/cpp/ql/src/Metrics/Files/FTransitiveSourceIncludes.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

31 lines
883 B
Plaintext

/**
* @name Indirect source includes per file
* @description The number of source files included by the
* pre-processor - either directly by an `#include`
* directive, or indirectly (by being included by an
* included file). This metric excludes included files
* that aren't part of the main code base (like system
* headers).
* @kind treemap
* @id cpp/transitive-source-includes-per-file
* @treemap.warnOn highValues
* @metricType file
* @metricAggregate avg max
* @tags maintainability
* modularity
*/
import cpp
predicate isInCodebase(File f) {
exists(string prefix | sourceLocationPrefix(prefix) |
f.getAbsolutePath().prefix(prefix.length()) = prefix
)
}
from File f, int n
where
f.fromSource() and
n = count(File g | g = f.getAnIncludedFile+() and isInCodebase(g))
select f, n