|
| 1 | +#!/usr/bin/env bash |
| 2 | +# Scalytics Copilot - Local CodeQL Execution Script |
| 3 | +set -euo pipefail |
| 4 | + |
| 5 | +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
| 6 | +cd "$ROOT_DIR" |
| 7 | + |
| 8 | +if ! command -v codeql >/dev/null 2>&1; then |
| 9 | + echo "ERROR: codeql CLI not found in PATH" |
| 10 | + echo "Install from: https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli" |
| 11 | + exit 1 |
| 12 | +fi |
| 13 | + |
| 14 | +mkdir -p .tmp/codeql |
| 15 | + |
| 16 | +echo "==> Ensuring CodeQL standard query packs are available" |
| 17 | +codeql pack download codeql/javascript-queries codeql/python-queries codeql/actions-queries |
| 18 | + |
| 19 | +# Stable defaults for local runs. |
| 20 | +CODEQL_JS_RAM_MB="${CODEQL_JS_RAM_MB:-6144}" |
| 21 | +CODEQL_JS_THREADS="${CODEQL_JS_THREADS:-2}" |
| 22 | +CODEQL_PY_RAM_MB="${CODEQL_PY_RAM_MB:-4096}" |
| 23 | +CODEQL_ACTIONS_RAM_MB="${CODEQL_ACTIONS_RAM_MB:-1024}" |
| 24 | + |
| 25 | +# Strategy github/security-and-quality |
| 26 | +CODEQL_QUERY_STRATEGY="${CODEQL_QUERY_STRATEGY:-github}" |
| 27 | + |
| 28 | +run_js() { |
| 29 | + echo "==> CodeQL (JavaScript/TypeScript)" |
| 30 | + echo " using --ram=${CODEQL_JS_RAM_MB}MB --threads=${CODEQL_JS_THREADS}" |
| 31 | + rm -rf .tmp/codeql/js-db |
| 32 | + chmod +x scripts/codeql_js_build.sh |
| 33 | + codeql database create .tmp/codeql/js-db |
| 34 | + --language=javascript-typescript |
| 35 | + --ram="$CODEQL_JS_RAM_MB" |
| 36 | + --command="./scripts/codeql_js_build.sh" |
| 37 | + |
| 38 | + if [[ "$CODEQL_QUERY_STRATEGY" == "security-and-quality" ]]; then |
| 39 | + codeql database analyze .tmp/codeql/js-db |
| 40 | + codeql/javascript-queries:codeql-suites/javascript-security-and-quality.qls |
| 41 | + --download |
| 42 | + --ram="$CODEQL_JS_RAM_MB" |
| 43 | + --threads="$CODEQL_JS_THREADS" |
| 44 | + --format=sarifv2.1.0 |
| 45 | + --sarif-category="/language:javascript-typescript" |
| 46 | + --output .tmp/codeql/javascript.sarif |
| 47 | + else |
| 48 | + codeql database analyze .tmp/codeql/js-db |
| 49 | + codeql/javascript-queries |
| 50 | + --download |
| 51 | + --ram="$CODEQL_JS_RAM_MB" |
| 52 | + --threads="$CODEQL_JS_THREADS" |
| 53 | + --format=sarifv2.1.0 |
| 54 | + --sarif-category="/language:javascript-typescript" |
| 55 | + --output .tmp/codeql/javascript.sarif |
| 56 | + fi |
| 57 | +} |
| 58 | + |
| 59 | +run_py() { |
| 60 | + echo "==> CodeQL (Python)" |
| 61 | + echo " using --ram=${CODEQL_PY_RAM_MB}MB" |
| 62 | + rm -rf .tmp/codeql/py-db |
| 63 | + chmod +x scripts/codeql_py_build.sh |
| 64 | + codeql database create .tmp/codeql/py-db |
| 65 | + --language=python |
| 66 | + --ram="$CODEQL_PY_RAM_MB" |
| 67 | + --command="./scripts/codeql_py_build.sh" |
| 68 | + |
| 69 | + if [[ "$CODEQL_QUERY_STRATEGY" == "security-and-quality" ]]; then |
| 70 | + codeql database analyze .tmp/codeql/py-db |
| 71 | + codeql/python-queries:codeql-suites/python-security-and-quality.qls |
| 72 | + --download |
| 73 | + --ram="$CODEQL_PY_RAM_MB" |
| 74 | + --format=sarifv2.1.0 |
| 75 | + --sarif-category="/language:python" |
| 76 | + --output .tmp/codeql/python.sarif |
| 77 | + else |
| 78 | + codeql database analyze .tmp/codeql/py-db |
| 79 | + codeql/python-queries |
| 80 | + --download |
| 81 | + --ram="$CODEQL_PY_RAM_MB" |
| 82 | + --format=sarifv2.1.0 |
| 83 | + --sarif-category="/language:python" |
| 84 | + --output .tmp/codeql/python.sarif |
| 85 | + fi |
| 86 | +} |
| 87 | + |
| 88 | +run_actions() { |
| 89 | + echo "==> CodeQL (Actions)" |
| 90 | + echo " using --ram=${CODEQL_ACTIONS_RAM_MB}MB" |
| 91 | + rm -rf .tmp/codeql/actions-db |
| 92 | + codeql database create .tmp/codeql/actions-db |
| 93 | + --language=actions |
| 94 | + --build-mode=none |
| 95 | + --ram="$CODEQL_ACTIONS_RAM_MB" |
| 96 | + |
| 97 | + codeql database analyze .tmp/codeql/actions-db |
| 98 | + codeql/actions-queries |
| 99 | + --download |
| 100 | + --ram="$CODEQL_ACTIONS_RAM_MB" |
| 101 | + --format=sarifv2.1.0 |
| 102 | + --sarif-category="/language:actions" |
| 103 | + --output .tmp/codeql/actions.sarif |
| 104 | +} |
| 105 | + |
| 106 | +# Run for all project languages |
| 107 | +run_js |
| 108 | +run_py |
| 109 | +run_actions |
| 110 | + |
| 111 | +echo "" |
| 112 | +echo "CodeQL local run complete." |
| 113 | +echo "SARIF outputs:" |
| 114 | +echo " .tmp/codeql/javascript.sarif" |
| 115 | +echo " .tmp/codeql/python.sarif" |
| 116 | +echo " .tmp/codeql/actions.sarif" |
0 commit comments