mirror of
https://github.com/github/codeql.git
synced 2026-04-29 18:55:14 +02:00
Merge pull request #1716 from geoffw0/qldoceg4
CPP: Add syntax examples to QLDoc in Function.qll
This commit is contained in:
@@ -32,3 +32,10 @@
|
||||
| functions.cpp:28:3:28:8 | ~Table | ~Table | | | functions.cpp:28:3:28:8 | definition |
|
||||
| functions.cpp:29:9:29:14 | lookup | lookup | | | functions.cpp:29:9:29:14 | declaration |
|
||||
| functions.cpp:30:8:30:13 | insert | insert | | | functions.cpp:30:8:30:13 | declaration |
|
||||
| functions.cpp:33:7:33:7 | operator= | operator= | | | functions.cpp:33:7:33:7 | declaration |
|
||||
| functions.cpp:33:7:33:7 | operator= | operator= | | | functions.cpp:33:7:33:7 | definition |
|
||||
| functions.cpp:36:2:36:8 | MyClass | MyClass | | | functions.cpp:36:2:36:8 | declaration |
|
||||
| functions.cpp:37:2:37:8 | MyClass | MyClass | | | functions.cpp:37:2:37:8 | declaration |
|
||||
| functions.cpp:38:2:38:8 | MyClass | MyClass | | | functions.cpp:38:2:38:8 | declaration |
|
||||
| functions.cpp:39:2:39:8 | MyClass | MyClass | | | functions.cpp:39:2:39:8 | declaration |
|
||||
| functions.cpp:40:2:40:13 | operator int | operator int | | | functions.cpp:40:2:40:13 | declaration |
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<T> | Class | ODASA-5186.cpp:5:8:5:17 | operator== | member function |
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<int> | Struct | ODASA-5186.cpp:4:8:4:8 | operator= | member function |
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<int> | Struct | ODASA-5186.cpp:4:8:4:8 | operator= | member function |
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<int> | Struct | ODASA-5186.cpp:5:8:5:8 | operator== | member function |
|
||||
| ODASA-5186.hpp:2:8:2:17 | NEQ_helper<MyClass<int>> | Struct | ODASA-5186.hpp:2:8:2:8 | operator= | member function |
|
||||
| ODASA-5186.hpp:2:8:2:17 | NEQ_helper<MyClass<int>> | Struct | ODASA-5186.hpp:2:8:2:8 | operator= | member function |
|
||||
| file://:0:0:0:0 | __va_list_tag | Struct | file://:0:0:0:0 | operator= | member function |
|
||||
| file://:0:0:0:0 | __va_list_tag | Struct | file://:0:0:0:0 | operator= | member function |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:7:8:7:8 | operator= | member function |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:7:8:7:8 | operator= | member function |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:8:7:8:8 | af | member function |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:11:7:11:8 | ag | member function |
|
||||
| functions.cpp:19:7:19:10 | Name | Class | functions.cpp:19:7:19:7 | operator= | member function |
|
||||
| functions.cpp:19:7:19:10 | Name | Class | functions.cpp:19:7:19:7 | operator= | member function |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:23:7:23:7 | Table | constructor |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:23:7:23:7 | Table | member function |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:23:7:23:7 | operator= | member function |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:27:3:27:7 | Table | constructor |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:27:3:27:7 | Table | member function |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:28:3:28:8 | ~Table | destructor |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:28:3:28:8 | ~Table | member function |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:29:9:29:14 | lookup | member function |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:30:8:30:13 | insert | member function |
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<T> | Class | ODASA-5186.cpp:5:8:5:17 | operator== | |
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<int> | Struct | ODASA-5186.cpp:4:8:4:8 | operator= | |
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<int> | Struct | ODASA-5186.cpp:4:8:4:8 | operator= | |
|
||||
| ODASA-5186.cpp:4:8:4:14 | MyClass<int> | Struct | ODASA-5186.cpp:5:8:5:8 | operator== | |
|
||||
| ODASA-5186.hpp:2:8:2:17 | NEQ_helper<MyClass<int>> | Struct | ODASA-5186.hpp:2:8:2:8 | operator= | |
|
||||
| ODASA-5186.hpp:2:8:2:17 | NEQ_helper<MyClass<int>> | Struct | ODASA-5186.hpp:2:8:2:8 | operator= | |
|
||||
| file://:0:0:0:0 | __va_list_tag | Struct | file://:0:0:0:0 | operator= | |
|
||||
| file://:0:0:0:0 | __va_list_tag | Struct | file://:0:0:0:0 | operator= | |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:7:8:7:8 | operator= | |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:7:8:7:8 | operator= | |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:8:7:8:8 | af | |
|
||||
| functions.cpp:7:8:7:8 | A | Struct | functions.cpp:11:7:11:8 | ag | |
|
||||
| functions.cpp:19:7:19:10 | Name | Class | functions.cpp:19:7:19:7 | operator= | |
|
||||
| functions.cpp:19:7:19:10 | Name | Class | functions.cpp:19:7:19:7 | operator= | |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:23:7:23:7 | Table | Constructor, CopyConstructor, getAConstructor() |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:23:7:23:7 | operator= | |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:27:3:27:7 | Table | Constructor, getAConstructor() |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:28:3:28:8 | ~Table | Destructor, getDestructor() |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:29:9:29:14 | lookup | |
|
||||
| functions.cpp:23:7:23:11 | Table | Class | functions.cpp:30:8:30:13 | insert | |
|
||||
| functions.cpp:33:7:33:13 | MyClass | Class | functions.cpp:33:7:33:7 | operator= | |
|
||||
| functions.cpp:33:7:33:13 | MyClass | Class | functions.cpp:36:2:36:8 | MyClass | Constructor, NoArgConstructor, getAConstructor() |
|
||||
| functions.cpp:33:7:33:13 | MyClass | Class | functions.cpp:37:2:37:8 | MyClass | Constructor, ConversionConstructor, getAConstructor() |
|
||||
| functions.cpp:33:7:33:13 | MyClass | Class | functions.cpp:38:2:38:8 | MyClass | Constructor, CopyConstructor, getAConstructor() |
|
||||
| functions.cpp:33:7:33:13 | MyClass | Class | functions.cpp:39:2:39:8 | MyClass | Constructor, ConversionConstructor, MoveConstructor, getAConstructor() |
|
||||
| functions.cpp:33:7:33:13 | MyClass | Class | functions.cpp:40:2:40:13 | operator int | ConversionOperator |
|
||||
|
||||
@@ -4,12 +4,41 @@
|
||||
*/
|
||||
import cpp
|
||||
|
||||
from Class c, string ctype, MemberFunction f, string ftype
|
||||
where
|
||||
if c instanceof Struct then ctype = "Struct" else ctype = "Class" and
|
||||
bindingset[c, f] string describe(Class c, MemberFunction f)
|
||||
{
|
||||
(
|
||||
(f = c.getAConstructor() and ftype = "constructor") or
|
||||
(f = c.getDestructor() and ftype = "destructor") or
|
||||
(f.getDeclaringType() = c and ftype = "member function")
|
||||
f = c.getAConstructor() and
|
||||
result = "getAConstructor()"
|
||||
) or (
|
||||
f = c.getDestructor() and
|
||||
result = "getDestructor()"
|
||||
) or (
|
||||
f instanceof Constructor and
|
||||
result = "Constructor"
|
||||
) or (
|
||||
f instanceof Destructor and
|
||||
result = "Destructor"
|
||||
) or (
|
||||
f instanceof ConversionConstructor and
|
||||
result = "ConversionConstructor"
|
||||
) or (
|
||||
f instanceof CopyConstructor and
|
||||
result = "CopyConstructor"
|
||||
) or (
|
||||
f instanceof MoveConstructor and
|
||||
result = "MoveConstructor"
|
||||
) or (
|
||||
f instanceof NoArgConstructor and
|
||||
result = "NoArgConstructor"
|
||||
) or (
|
||||
f instanceof ConversionOperator and
|
||||
result = "ConversionOperator"
|
||||
)
|
||||
select c, ctype, f, ftype
|
||||
}
|
||||
|
||||
from Class c, string ctype, MemberFunction f
|
||||
where
|
||||
f.getDeclaringType() = c and
|
||||
if c instanceof Struct then ctype = "Struct" else ctype = "Class"
|
||||
select
|
||||
c, ctype, f, concat(describe(c, f), ", ")
|
||||
|
||||
@@ -30,4 +30,12 @@ public:
|
||||
bool insert(Name*);
|
||||
};
|
||||
|
||||
|
||||
class MyClass
|
||||
{
|
||||
public:
|
||||
MyClass();
|
||||
MyClass(int from);
|
||||
MyClass(const MyClass &from);
|
||||
MyClass(MyClass &&from);
|
||||
operator int();
|
||||
};
|
||||
|
||||
@@ -1,20 +1,16 @@
|
||||
| virtual_functions.cpp:4:15:4:28 | withunusedpara | virtual_functions.cpp:1:7:1:7 | A | 2 | 0 | <none> |
|
||||
| virtual_functions.cpp:5:15:5:28 | withunusedpara | virtual_functions.cpp:1:7:1:7 | A | 2 | 0 | <none> |
|
||||
| virtual_functions.cpp:11:15:11:28 | withunusedpara | virtual_functions.cpp:8:7:8:8 | B1 | 0 | 1 | A |
|
||||
| virtual_functions.cpp:15:15:15:28 | withunusedpara | virtual_functions.cpp:8:7:8:8 | B1 | 0 | 1 | A |
|
||||
| virtual_functions.cpp:24:15:24:28 | withunusedpara | virtual_functions.cpp:21:7:21:8 | B2 | 0 | 1 | A |
|
||||
| virtual_functions.cpp:28:15:28:28 | withunusedpara | virtual_functions.cpp:21:7:21:8 | B2 | 0 | 1 | A |
|
||||
| virtual_functions.cpp:34:26:34:26 | f | virtual_functions.cpp:34:8:34:9 | X1 | 2 | 0 | <none> |
|
||||
| virtual_functions.cpp:36:23:36:23 | f | virtual_functions.cpp:36:8:36:9 | X3 | 1 | 1 | X1 |
|
||||
| virtual_functions.cpp:37:23:37:23 | f | virtual_functions.cpp:37:8:37:9 | X4 | 1 | 1 | X1 |
|
||||
| virtual_functions.cpp:38:27:38:27 | f | virtual_functions.cpp:38:8:38:9 | X5 | 1 | 2 | X3 |
|
||||
| virtual_functions.cpp:38:27:38:27 | f | virtual_functions.cpp:38:8:38:9 | X5 | 1 | 2 | X4 |
|
||||
| virtual_functions.cpp:40:23:40:23 | f | virtual_functions.cpp:40:8:40:9 | X7 | 0 | 1 | X5 |
|
||||
| virtual_functions.cpp:42:26:42:26 | f | virtual_functions.cpp:42:8:42:9 | Y1 | 4 | 0 | <none> |
|
||||
| virtual_functions.cpp:44:31:44:31 | f | virtual_functions.cpp:44:8:44:9 | Y3 | 1 | 1 | Y1 |
|
||||
| virtual_functions.cpp:45:31:45:31 | f | virtual_functions.cpp:45:8:45:9 | Y4 | 1 | 1 | Y1 |
|
||||
| virtual_functions.cpp:46:27:46:27 | f | virtual_functions.cpp:46:8:46:9 | Y5 | 1 | 3 | Y1 |
|
||||
| virtual_functions.cpp:46:27:46:27 | f | virtual_functions.cpp:46:8:46:9 | Y5 | 1 | 3 | Y3 |
|
||||
| virtual_functions.cpp:46:27:46:27 | f | virtual_functions.cpp:46:8:46:9 | Y5 | 1 | 3 | Y4 |
|
||||
| virtual_functions.cpp:48:23:48:23 | f | virtual_functions.cpp:48:8:48:9 | Y7 | 0 | 2 | Y1 |
|
||||
| virtual_functions.cpp:48:23:48:23 | f | virtual_functions.cpp:48:8:48:9 | Y7 | 0 | 2 | Y5 |
|
||||
| virtual_functions.cpp:4:15:4:28 | withunusedpara | virtual_functions.cpp:1:7:1:7 | A | B1, B2 | | PureVirtualFunction |
|
||||
| virtual_functions.cpp:5:15:5:28 | withunusedpara | virtual_functions.cpp:1:7:1:7 | A | B1, B2 | | PureVirtualFunction |
|
||||
| virtual_functions.cpp:11:15:11:28 | withunusedpara | virtual_functions.cpp:8:7:8:8 | B1 | | A | |
|
||||
| virtual_functions.cpp:15:15:15:28 | withunusedpara | virtual_functions.cpp:8:7:8:8 | B1 | | A | |
|
||||
| virtual_functions.cpp:24:15:24:28 | withunusedpara | virtual_functions.cpp:21:7:21:8 | B2 | | A | |
|
||||
| virtual_functions.cpp:28:15:28:28 | withunusedpara | virtual_functions.cpp:21:7:21:8 | B2 | | A | |
|
||||
| virtual_functions.cpp:34:26:34:26 | f | virtual_functions.cpp:34:8:34:9 | X1 | X3, X4 | | |
|
||||
| virtual_functions.cpp:36:23:36:23 | f | virtual_functions.cpp:36:8:36:9 | X3 | X5 | X1 | |
|
||||
| virtual_functions.cpp:37:23:37:23 | f | virtual_functions.cpp:37:8:37:9 | X4 | X5 | X1 | |
|
||||
| virtual_functions.cpp:38:27:38:27 | f | virtual_functions.cpp:38:8:38:9 | X5 | X7 | X3, X4 | |
|
||||
| virtual_functions.cpp:40:23:40:23 | f | virtual_functions.cpp:40:8:40:9 | X7 | | X5 | |
|
||||
| virtual_functions.cpp:42:26:42:26 | f | virtual_functions.cpp:42:8:42:9 | Y1 | Y3, Y4, Y5, Y7 | | |
|
||||
| virtual_functions.cpp:44:31:44:31 | f | virtual_functions.cpp:44:8:44:9 | Y3 | Y5 | Y1 | |
|
||||
| virtual_functions.cpp:45:31:45:31 | f | virtual_functions.cpp:45:8:45:9 | Y4 | Y5 | Y1 | |
|
||||
| virtual_functions.cpp:46:27:46:27 | f | virtual_functions.cpp:46:8:46:9 | Y5 | Y7 | Y1, Y3, Y4 | |
|
||||
| virtual_functions.cpp:48:23:48:23 | f | virtual_functions.cpp:48:8:48:9 | Y7 | | Y1, Y5 | |
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import cpp
|
||||
|
||||
from VirtualFunction f, string overriddenFunctionDeclaringType
|
||||
where if exists(f.getAnOverriddenFunction().getDeclaringType())
|
||||
then overriddenFunctionDeclaringType = f.getAnOverriddenFunction().getDeclaringType().toString()
|
||||
else overriddenFunctionDeclaringType = "<none>"
|
||||
select f,
|
||||
f.getDeclaringType(),
|
||||
count(f.getAnOverridingFunction()),
|
||||
count(f.getAnOverriddenFunction()),
|
||||
overriddenFunctionDeclaringType
|
||||
string describe(VirtualFunction f)
|
||||
{
|
||||
f instanceof PureVirtualFunction and
|
||||
result = "PureVirtualFunction"
|
||||
}
|
||||
|
||||
from VirtualFunction f
|
||||
select
|
||||
f,
|
||||
f.getDeclaringType(),
|
||||
concat(f.getAnOverridingFunction().getDeclaringType().toString(), ", "),
|
||||
concat(f.getAnOverriddenFunction().getDeclaringType().toString(), ", "),
|
||||
concat(describe(f), ", ")
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
| virtual_functions.cpp:34:8:34:9 | X1 | virtual_functions.cpp:36:8:36:9 | X3 |
|
||||
| virtual_functions.cpp:34:8:34:9 | X1 | virtual_functions.cpp:37:8:37:9 | X4 |
|
||||
| virtual_functions.cpp:36:8:36:9 | X3 | virtual_functions.cpp:38:8:38:9 | X5 |
|
||||
| virtual_functions.cpp:37:8:37:9 | X4 | virtual_functions.cpp:38:8:38:9 | X5 |
|
||||
| virtual_functions.cpp:38:8:38:9 | X5 | virtual_functions.cpp:40:8:40:9 | X7 |
|
||||
@@ -1,12 +0,0 @@
|
||||
/**
|
||||
* @name VirtualFunctions5
|
||||
* @description Test of getAnOverridingFunction in a hierarchy with no virtual inheritance
|
||||
* @kind table
|
||||
*/
|
||||
|
||||
import cpp
|
||||
|
||||
from VirtualFunction f
|
||||
where
|
||||
f.getDeclaringType().getName().matches("X%")
|
||||
select f.getDeclaringType(), f.getAnOverridingFunction().getDeclaringType()
|
||||
@@ -1,7 +0,0 @@
|
||||
| virtual_functions.cpp:42:8:42:9 | Y1 | virtual_functions.cpp:44:8:44:9 | Y3 |
|
||||
| virtual_functions.cpp:42:8:42:9 | Y1 | virtual_functions.cpp:45:8:45:9 | Y4 |
|
||||
| virtual_functions.cpp:42:8:42:9 | Y1 | virtual_functions.cpp:46:8:46:9 | Y5 |
|
||||
| virtual_functions.cpp:42:8:42:9 | Y1 | virtual_functions.cpp:48:8:48:9 | Y7 |
|
||||
| virtual_functions.cpp:44:8:44:9 | Y3 | virtual_functions.cpp:46:8:46:9 | Y5 |
|
||||
| virtual_functions.cpp:45:8:45:9 | Y4 | virtual_functions.cpp:46:8:46:9 | Y5 |
|
||||
| virtual_functions.cpp:46:8:46:9 | Y5 | virtual_functions.cpp:48:8:48:9 | Y7 |
|
||||
@@ -1,12 +0,0 @@
|
||||
/**
|
||||
* @name VirtualFunctions6
|
||||
* @description Test of getAnOverridingFunction in a hierarchy with virtual inheritance
|
||||
* @kind table
|
||||
*/
|
||||
|
||||
import cpp
|
||||
|
||||
from VirtualFunction f
|
||||
where
|
||||
f.getDeclaringType().getName().matches("Y%")
|
||||
select f.getDeclaringType(), f.getAnOverridingFunction().getDeclaringType()
|
||||
Reference in New Issue
Block a user