QL for QL: add autobuilder that respects LGTM_INDEX_FILTERS

This commit is contained in:
Nick Rolfe
2021-12-17 16:05:21 +00:00
parent 5054d5b555
commit e6c60ebd41
12 changed files with 67 additions and 27 deletions

View File

@@ -77,6 +77,8 @@ jobs:
with:
name: extractor-ubuntu-latest
path: |
ql/target/release/ql-autobuilder
ql/target/release/ql-autobuilder.exe
ql/target/release/ql-extractor
ql/target/release/ql-extractor.exe
retention-days: 1
@@ -101,6 +103,10 @@ jobs:
unzip query-pack-zip/*.zip -d pack
cp -r ql/codeql-extractor.yml ql/tools ql/ql/src/ql.dbscheme.stats pack/
mkdir -p pack/tools/linux64
if [[ -f linux64/ql-autobuilder ]]; then
cp linux64/ql-autobuilder pack/tools/linux64/autobuilder
chmod +x pack/tools/linux64/autobuilder
fi
if [[ -f linux64/ql-extractor ]]; then
cp linux64/ql-extractor pack/tools/linux64/extractor
chmod +x pack/tools/linux64/extractor
@@ -112,13 +118,13 @@ jobs:
name: codeql-ql-pack
path: codeql-ql.zip
retention-days: 1
analyze:
analyze:
runs-on: ubuntu-latest
needs:
needs:
- package
steps:
steps:
- name: Download pack
uses: actions/download-artifact@v2
with:
@@ -149,4 +155,3 @@ jobs:
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@esbena/ql

BIN
ql/Cargo.lock generated

Binary file not shown.

View File

@@ -1,5 +1,6 @@
[workspace]
members = [
"autobuilder",
"extractor",
"generator",
"node-types",

View File

@@ -0,0 +1,9 @@
[package]
name = "ql-autobuilder"
version = "0.1.0"
authors = ["GitHub"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

View File

@@ -0,0 +1,39 @@
use std::env;
use std::path::PathBuf;
use std::process::Command;
fn main() -> std::io::Result<()> {
let dist = env::var("CODEQL_DIST").expect("CODEQL_DIST not set");
let db = env::var("CODEQL_EXTRACTOR_QL_WIP_DATABASE")
.expect("CODEQL_EXTRACTOR_QL_WIP_DATABASE not set");
let codeql = if env::consts::OS == "windows" {
"codeql.exe"
} else {
"codeql"
};
let codeql: PathBuf = [&dist, codeql].iter().collect();
let mut cmd = Command::new(codeql);
cmd.arg("database")
.arg("index-files")
.arg("--include-extension=.ql")
.arg("--include-extension=.qll")
.arg("--include-extension=.dbscheme")
.arg("--include=**/qlpack.yml")
.arg("--size-limit=5m")
.arg("--language=ql")
.arg("--working-dir=.")
.arg(db);
for line in env::var("LGTM_INDEX_FILTERS")
.unwrap_or_default()
.split('\n')
{
if let Some(stripped) = line.strip_prefix("include:") {
cmd.arg("--include").arg(stripped);
} else if let Some(stripped) = line.strip_prefix("exclude:") {
cmd.arg("--exclude").arg(stripped);
}
}
let exit = &cmd.spawn()?.wait()?;
std::process::exit(exit.code().unwrap_or(1))
}

View File

@@ -11,3 +11,4 @@ cp codeql-extractor.yml, ql\src\ql.dbscheme, ql\src\ql.dbscheme.stats extractor-
cp -Recurse tools extractor-pack
mkdir extractor-pack\tools\win64 | Out-Null
cp target\release\ql-extractor.exe extractor-pack\tools\win64\extractor.exe
cp target\release\ql-autobuilder.exe extractor-pack\tools\win64\autobuilder.exe

View File

@@ -20,3 +20,4 @@ mkdir -p extractor-pack
cp -r codeql-extractor.yml tools ql/src/ql.dbscheme ql/src/ql.dbscheme.stats extractor-pack/
mkdir -p extractor-pack/tools/${platform}
cp target/release/ql-extractor extractor-pack/tools/${platform}/extractor
cp target/release/ql-autobuilder extractor-pack/tools/${platform}/autobuilder

View File

@@ -13,7 +13,7 @@ tree-sitter = "0.19"
tree-sitter-ql = { git = "https://github.com/tausbn/tree-sitter-ql.git", rev = "36bdc0eae196f9833182ce3f8932be63534121b3" }
clap = "2.33"
tracing = "0.1"
tracing-subscriber = { version = "0.2", features = ["env-filter"] }
tracing-subscriber = { version = "0.3.3", features = ["env-filter"] }
rayon = "1.5.0"
num_cpus = "1.13.0"
regex = "1.4.3"

View File

@@ -10,5 +10,5 @@ edition = "2018"
clap = "2.33"
node-types = { path = "../node-types" }
tracing = "0.1"
tracing-subscriber = { version = "0.2", features = ["env-filter"] }
tracing-subscriber = { version = "0.3.3", features = ["env-filter"] }
tree-sitter-ql = { git = "https://github.com/tausbn/tree-sitter-ql.git", rev = "36bdc0eae196f9833182ce3f8932be63534121b3" }

View File

@@ -8,4 +8,4 @@ edition = "2018"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_json = "1.0"

View File

@@ -1,12 +1,5 @@
@echo off
type NUL && "%CODEQL_DIST%\codeql.exe" database index-files ^
--include-extension=.ql ^
--include-extension=.qll ^
--include-extension=.dbscheme ^
--include=**/qlpack.yml ^
--size-limit=5m ^
--language=ql ^
"%CODEQL_EXTRACTOR_QL_WIP_DATABASE%"
type NUL && "%CODEQL_EXTRACTOR_QL_ROOT%\tools\%CODEQL_PLATFORM%\autobuilder"
exit /b %ERRORLEVEL%

View File

@@ -1,13 +1,4 @@
#!/bin/sh
set -eu
exec "${CODEQL_EXTRACTOR_QL_ROOT}/tools/${CODEQL_PLATFORM}/autobuilder"
exec "${CODEQL_DIST}/codeql" database index-files \
--include-extension=.ql \
--include-extension=.qll \
--include-extension=.dbscheme \
--include=**/qlpack.yml \
--size-limit=5m \
--language=ql \
--working-dir=.\
"$CODEQL_EXTRACTOR_QL_WIP_DATABASE"