Skip to content

Commit

Permalink
Added support for hierarchy when .ql files are separate from .cpp
Browse files Browse the repository at this point in the history
… files
  • Loading branch information
DrAlexD committed Jan 18, 2024
1 parent 88ab511 commit 0a9660a
Show file tree
Hide file tree
Showing 22 changed files with 116 additions and 4 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@ jobs:
tar -xzf codeql-bundle-linux64.tar.gz
- name: Run codeQL
run: |
codeql/codeql test run languages/cpp
codeql/codeql test run -- codeWithQueries/cpp
codeql/codeql test run --additional-packs=queries/cpp -- code/cpp
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,15 @@
```shell
codeql test run -- <test|dir>
```
Where `<test|dir>` is .ql or .qlref file that defines a test to run or directory which will be searched recursively for tests to run.
To run the test cases, use the path to the `languages` folder.
Where `<test|dir>` is `.ql` file that defines a test to run or directory which will be searched recursively for tests to run.
To run the test cases, use the path to the `codeWithQueries` folder.

If you want to put `.ql` files are separate from `.cpp` files, then you can use the command:
```shell
codeql test run --additional-packs=<queries-dir> -- <test|dir>
```
Where `<queries-dir>` is dir with `.ql` files and `<test|dir>` is `.qlref` file or directory which will be searched recursively for tests to run.
To run the test cases, use the path to the folders `queries` and `code`.

After run, you will see the `NAME.actual` files (whose name matches to the `NAME.ql` test files).
Each such file contains the result of running the test.
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions code/cpp/doStmt/doStmtTest.qlref
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
doStmt/doStmtTest.ql
5 changes: 5 additions & 0 deletions code/cpp/qlpack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
name: codeql-code-test
dependencies:
codeql-queries-test: "*"
extractor: cpp
tests: .
1 change: 1 addition & 0 deletions code/cpp/rangeBasedForStmt/rangeBasedForStmtTest.qlref
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rangeBasedForStmt/rangeBasedForStmtTest.ql
4 changes: 4 additions & 0 deletions codeWithQueries/cpp/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
lockVersion: 1.0.0
dependencies: {}
compiled: false
40 changes: 40 additions & 0 deletions codeWithQueries/cpp/doStmt/doStmtCode.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
int get_square(int number = 0) {
return number * number;
}

int foo1() {
int a = 0;
int b = 100;
do {
do {
a++;
} while (get_square(5) < a);
b--;
} while (get_square(a) > b);
return a;
}

int foo2() {
int a = 0;
do {
a++;
} while (get_square() != 0);
return a;
}

int foo3() {
int a = 0;
bool flag = get_square(5) != 25;
do {
a++;
} while (flag);
return a;
}

int foo4(int a) {
bool flag = get_square(a) != 0;
do {
a++;
} while (flag && get_square(a) > 10);
return a;
}
5 changes: 5 additions & 0 deletions codeWithQueries/cpp/doStmt/doStmtTest.expected
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
| doStmtCode.cpp:8:5:13:32 | do (...) ... | This is 'do' statement. |
| doStmtCode.cpp:9:9:11:36 | do (...) ... | This is 'do' statement. |
| doStmtCode.cpp:19:5:21:32 | do (...) ... | This is 'do' statement. |
| doStmtCode.cpp:28:5:30:19 | do (...) ... | This is 'do' statement. |
| doStmtCode.cpp:36:5:38:41 | do (...) ... | This is 'do' statement. |
File renamed without changes.
5 changes: 5 additions & 0 deletions codeWithQueries/cpp/qlpack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
name: codeql-code-with-queries-test
dependencies:
codeql/cpp-all: "*"
extractor: cpp
tests: .
17 changes: 17 additions & 0 deletions codeWithQueries/cpp/rangeBasedForStmt/rangeBasedForStmtCode.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
int foo1() {
int a = 100;
int array1[] = {-6, 3, 10};
for (int i: array1) {
a -= i;
}
return a;
}

int foo2() {
int a = 0;
int array2[] = {-9, 5, 15};
for (int j: array2) {
a += j;
}
return a;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
| rangeBasedForStmtCode.cpp:4:5:6:5 | for(...:...) ... | This is range based 'for' statement. |
| rangeBasedForStmtCode.cpp:13:5:15:5 | for(...:...) ... | This is range based 'for' statement. |
4 changes: 4 additions & 0 deletions queries/cpp/codeql-pack.lock.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
lockVersion: 1.0.0
dependencies: {}
compiled: false
10 changes: 10 additions & 0 deletions queries/cpp/doStmt/doStmtTest.ql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* @name Test 'do' statement
* @kind problem
* @id cpp/doStmtTest
*/

import cpp

from DoStmt doStmt
select doStmt, "This is 'do' statement."
2 changes: 1 addition & 1 deletion languages/cpp/qlpack.yml → queries/cpp/qlpack.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: codeql-test-examples
name: codeql-queries-test
dependencies:
codeql/cpp-all: "*"
extractor: cpp
Expand Down
10 changes: 10 additions & 0 deletions queries/cpp/rangeBasedForStmt/rangeBasedForStmtTest.ql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* @name Test range based 'for' statement
* @kind problem
* @id cpp/rangeBasedForStmtTest
*/

import cpp

from RangeBasedForStmt rangeBasedForStmt
select rangeBasedForStmt, "This is range based 'for' statement."

0 comments on commit 0a9660a

Please sign in to comment.