mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
C#: Add workflow for running QL tests
This commit is contained in:
72
.github/workflows/csharp-qltest.yml
vendored
Normal file
72
.github/workflows/csharp-qltest.yml
vendored
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
name: "C#: Run QL Tests"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- "csharp/**"
|
||||||
|
- "shared/**"
|
||||||
|
- .github/actions/fetch-codeql/action.yml
|
||||||
|
- codeql-workspace.yml
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- "rc/*"
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- "csharp/**"
|
||||||
|
- "shared/**"
|
||||||
|
- .github/workflows/csharp-qltest.yml
|
||||||
|
- .github/actions/fetch-codeql/action.yml
|
||||||
|
- codeql-workspace.yml
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- "rc/*"
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: csharp
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
qlupgrade:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: ./.github/actions/fetch-codeql
|
||||||
|
- name: Check DB upgrade scripts
|
||||||
|
run: |
|
||||||
|
echo >empty.trap
|
||||||
|
codeql dataset import -S ql/lib/upgrades/initial/semmlecode.csharp.dbscheme testdb empty.trap
|
||||||
|
codeql dataset upgrade testdb --additional-packs ql/lib
|
||||||
|
diff -q testdb/semmlecode.csharp.dbscheme ql/lib/semmlecode.csharp.dbscheme
|
||||||
|
- name: Check DB downgrade scripts
|
||||||
|
run: |
|
||||||
|
echo >empty.trap
|
||||||
|
rm -rf testdb; codeql dataset import -S ql/lib/semmlecode.csharp.dbscheme testdb empty.trap
|
||||||
|
codeql resolve upgrades --format=lines --allow-downgrades --additional-packs downgrades \
|
||||||
|
--dbscheme=ql/lib/semmlecode.csharp.dbscheme --target-dbscheme=downgrades/initial/semmlecode.csharp.dbscheme |
|
||||||
|
xargs codeql execute upgrades testdb
|
||||||
|
diff -q testdb/semmlecode.csharp.dbscheme downgrades/initial/semmlecode.csharp.dbscheme
|
||||||
|
qltest:
|
||||||
|
runs-on: ubuntu-latest-xl
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
slice: ["1/2", "2/2"]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: ./.github/actions/fetch-codeql
|
||||||
|
- uses: ./csharp/actions/create-extractor-pack
|
||||||
|
- name: Cache compilation cache
|
||||||
|
id: query-cache
|
||||||
|
uses: ./.github/actions/cache-query-compilation
|
||||||
|
with:
|
||||||
|
key: csharp-qltest-${{ matrix.slice }}
|
||||||
|
- name: Run QL tests
|
||||||
|
run: |
|
||||||
|
CODEQL_PATH=$(gh codeql version --format=json | jq -r .unpackedLocation)
|
||||||
|
# The legacy ASP extractor is not in this repo, so take the one from the nightly build
|
||||||
|
mv "$CODEQL_PATH/csharp/tools/extractor-asp.jar" "${{ github.workspace }}/csharp/extractor-pack/tools"
|
||||||
|
# Safe guard against using the bundled extractor
|
||||||
|
rm -rf "$CODEQL_PATH/csharp"
|
||||||
|
codeql test run --threads=0 --ram 52000 --slice ${{ matrix.slice }} --search-path "${{ github.workspace }}/csharp/extractor-pack" --check-databases --check-undefined-labels --check-repeated-labels --check-redefined-labels --consistency-queries ql/consistency-queries ql/test --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}"
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -27,8 +27,6 @@
|
|||||||
# It's useful (though not required) to be able to unpack codeql in the ql checkout itself
|
# It's useful (though not required) to be able to unpack codeql in the ql checkout itself
|
||||||
/codeql/
|
/codeql/
|
||||||
|
|
||||||
csharp/extractor/Semmle.Extraction.CSharp.Driver/Properties/launchSettings.json
|
|
||||||
|
|
||||||
# Avoid committing cached package components
|
# Avoid committing cached package components
|
||||||
.codeql
|
.codeql
|
||||||
|
|
||||||
|
|||||||
5
csharp/.gitignore
vendored
5
csharp/.gitignore
vendored
@@ -11,4 +11,7 @@ csharp.log
|
|||||||
*.tlog
|
*.tlog
|
||||||
.vs
|
.vs
|
||||||
*.user
|
*.user
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
|
|
||||||
|
extractor/Semmle.Extraction.CSharp.Driver/Properties/launchSettings.json
|
||||||
|
extractor-pack
|
||||||
13
csharp/actions/create-extractor-pack/action.yml
Normal file
13
csharp/actions/create-extractor-pack/action.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
name: Build C# CodeQL pack
|
||||||
|
description: Builds the C# CodeQL pack
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Setup dotnet
|
||||||
|
uses: actions/setup-dotnet@v3
|
||||||
|
with:
|
||||||
|
dotnet-version: 6.0.202
|
||||||
|
- name: Build Extractor
|
||||||
|
shell: bash
|
||||||
|
run: scripts/create-extractor-pack.sh
|
||||||
|
working-directory: csharp
|
||||||
@@ -103,7 +103,6 @@ abstract class Completion extends TCompletion {
|
|||||||
* otherwise it is a normal non-Boolean completion.
|
* otherwise it is a normal non-Boolean completion.
|
||||||
*/
|
*/
|
||||||
predicate isValidFor(ControlFlowElement cfe) {
|
predicate isValidFor(ControlFlowElement cfe) {
|
||||||
cfe instanceof NonReturningCall and
|
|
||||||
this = cfe.(NonReturningCall).getACompletion()
|
this = cfe.(NonReturningCall).getACompletion()
|
||||||
or
|
or
|
||||||
this = TThrowCompletion(cfe.(TriedControlFlowElement).getAThrownException())
|
this = TThrowCompletion(cfe.(TriedControlFlowElement).getAThrownException())
|
||||||
|
|||||||
27
csharp/scripts/create-extractor-pack.sh
Executable file
27
csharp/scripts/create-extractor-pack.sh
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||||
|
platform="linux64"
|
||||||
|
dotnet_platform="linux-x64"
|
||||||
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
|
platform="osx64"
|
||||||
|
dotnet_platform="osx-x64"
|
||||||
|
else
|
||||||
|
echo "Unknown OS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf extractor-pack
|
||||||
|
mkdir -p extractor-pack
|
||||||
|
mkdir -p extractor-pack/tools/${platform}
|
||||||
|
|
||||||
|
function dotnet_publish {
|
||||||
|
dotnet publish --self-contained --configuration Release --runtime ${dotnet_platform} -p:RuntimeFrameworkVersion=6.0.4 $1 --output extractor-pack/tools/${platform}
|
||||||
|
}
|
||||||
|
|
||||||
|
dotnet_publish extractor/Semmle.Extraction.CSharp.Standalone
|
||||||
|
dotnet_publish extractor/Semmle.Extraction.CSharp.Driver
|
||||||
|
dotnet_publish autobuilder/Semmle.Autobuild.CSharp
|
||||||
|
|
||||||
|
cp -r codeql-extractor.yml tools/* downgrades tools ql/lib/semmlecode.csharp.dbscheme ql/lib/semmlecode.csharp.dbscheme.stats extractor-pack/
|
||||||
Reference in New Issue
Block a user