mirror of
https://github.com/github/codeql.git
synced 2026-01-03 17:50:19 +01:00
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
43 lines
814 B
Plaintext
43 lines
814 B
Plaintext
/**
|
|
* @name Fields
|
|
* @kind table
|
|
*/
|
|
|
|
import cpp
|
|
|
|
predicate nameCheck(Declaration d) {
|
|
count(d.toString()) = 1 and
|
|
count(string s | d.hasName(s)) = 1 and
|
|
d.hasName(d.toString())
|
|
}
|
|
|
|
string accessType(Field f) {
|
|
f.isPublic() and result = "public"
|
|
or
|
|
f.isProtected() and result = "protected"
|
|
or
|
|
f.isPrivate() and result = "private"
|
|
}
|
|
|
|
string fieldType(Field f) {
|
|
result = f.getType().getAQlClass() and
|
|
(
|
|
result.matches("%Type") or
|
|
result = "Enum"
|
|
)
|
|
}
|
|
|
|
string pointedType(Field f) {
|
|
if f.getType() instanceof PointerType
|
|
then result = f.getType().(PointerType).getBaseType().toString()
|
|
else result = ""
|
|
}
|
|
|
|
from Class c, Field f
|
|
where
|
|
f.getDeclaringType() = c and
|
|
c.getAField() = f and
|
|
nameCheck(c) and
|
|
nameCheck(f)
|
|
select c, f, accessType(f), fieldType(f), pointedType(f)
|