mirror of
https://github.com/github/codeql.git
synced 2026-05-05 05:35:13 +02:00
QL code and tests for C#/C++/JavaScript.
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
| 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 |
|
||||
@@ -0,0 +1,12 @@
|
||||
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
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
| 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 |
|
||||
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @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()
|
||||
@@ -0,0 +1,7 @@
|
||||
| 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 |
|
||||
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @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()
|
||||
@@ -0,0 +1,18 @@
|
||||
| file://:0:0:0:0 | __va_list_tag | 0 | 0 |
|
||||
| virtual_functions.cpp:1:7:1:7 | A | 2 | 2 |
|
||||
| virtual_functions.cpp:8:7:8:8 | B1 | 2 | 0 |
|
||||
| virtual_functions.cpp:21:7:21:8 | B2 | 2 | 0 |
|
||||
| virtual_functions.cpp:34:8:34:9 | X1 | 1 | 0 |
|
||||
| virtual_functions.cpp:35:8:35:9 | X2 | 0 | 0 |
|
||||
| virtual_functions.cpp:36:8:36:9 | X3 | 1 | 0 |
|
||||
| virtual_functions.cpp:37:8:37:9 | X4 | 1 | 0 |
|
||||
| virtual_functions.cpp:38:8:38:9 | X5 | 1 | 0 |
|
||||
| virtual_functions.cpp:39:8:39:9 | X6 | 0 | 0 |
|
||||
| virtual_functions.cpp:40:8:40:9 | X7 | 1 | 0 |
|
||||
| virtual_functions.cpp:42:8:42:9 | Y1 | 1 | 0 |
|
||||
| virtual_functions.cpp:43:8:43:9 | Y2 | 0 | 0 |
|
||||
| virtual_functions.cpp:44:8:44:9 | Y3 | 1 | 0 |
|
||||
| virtual_functions.cpp:45:8:45:9 | Y4 | 1 | 0 |
|
||||
| virtual_functions.cpp:46:8:46:9 | Y5 | 1 | 0 |
|
||||
| virtual_functions.cpp:47:8:47:9 | Y6 | 0 | 0 |
|
||||
| virtual_functions.cpp:48:8:48:9 | Y7 | 1 | 0 |
|
||||
@@ -0,0 +1,7 @@
|
||||
import cpp
|
||||
|
||||
from Class c
|
||||
select c,
|
||||
count(VirtualFunction f | f.getDeclaringType() = c),
|
||||
count(PureVirtualFunction f | f.getDeclaringType() = c)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
| virtual_functions.cpp:1:7:1:7 | A |
|
||||
@@ -0,0 +1,4 @@
|
||||
import cpp
|
||||
|
||||
from Interface i
|
||||
select i
|
||||
@@ -0,0 +1,48 @@
|
||||
class A
|
||||
{
|
||||
public:
|
||||
virtual void withunusedpara(int * para1, int unusedpara) = 0;
|
||||
virtual void withunusedpara(int * para1, int & para2) = 0;
|
||||
};
|
||||
|
||||
class B1: public A
|
||||
{
|
||||
public:
|
||||
virtual void withunusedpara(int * para1, int unusedpara)
|
||||
{
|
||||
*para1 = 1U;
|
||||
}
|
||||
virtual void withunusedpara(int * para1, int & para2)
|
||||
{
|
||||
*para1 = 1U;
|
||||
}
|
||||
};
|
||||
|
||||
class B2: public A
|
||||
{
|
||||
public:
|
||||
virtual void withunusedpara(int * para1, int unusedpara)
|
||||
{
|
||||
*para1 = 1U;
|
||||
}
|
||||
virtual void withunusedpara(int * para1, int & para2)
|
||||
{
|
||||
para2 = 0;
|
||||
}
|
||||
};
|
||||
|
||||
struct X1 { virtual void f() {} };
|
||||
struct X2 : X1 {};
|
||||
struct X3 : X2 { void f() {} };
|
||||
struct X4 : X2 { void f() {} };
|
||||
struct X5 : X3, X4 { void f() {} };
|
||||
struct X6 : X5 {};
|
||||
struct X7 : X6 { void f() {} };
|
||||
|
||||
struct Y1 { virtual void f() {} };
|
||||
struct Y2 : Y1 {};
|
||||
struct Y3 : virtual Y2 { void f() {} };
|
||||
struct Y4 : virtual Y2 { void f() {} };
|
||||
struct Y5 : Y3, Y4 { void f() {} };
|
||||
struct Y6 : Y5 {};
|
||||
struct Y7 : Y6 { void f() {} };
|
||||
Reference in New Issue
Block a user