Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,9 @@ build:bl-x86_64-qnx --config=bl_toolchain_common
build:bl-x86_64-qnx --platforms=@score_bazel_platforms//:x86_64-qnx
build:bl-x86_64-qnx --extra_toolchains=@toolchains_qnx_qcc//:qcc_x86_64
test:bl-x86_64-qnx --config=bl_common

build --action_env=LD_PRELOAD
build --copt=-gdwarf-5
build --copt=-fno-var-tracking-assignments
build --copt=-fvar-tracking
build --copt=-g3
114 changes: 114 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# *******************************************************************************
# Copyright (c) 2025 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

# Workflow configuration for S-CORE CI - Release Check
# This workflow runs Bazel build and test when triggered by tag creation.

name: "CodeQL Advanced"

on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches:
- main
merge_group:
types: [checks_requested]

#jobs:
# analyze:
# uses: eclipse-score/cicd-workflows/.github/workflows/codeql.yml@main
# with:
# build-script: |
# bazel build --config bl-x86_64-linux -- //score/...

# permissions:
# security-events: write
# packages: read
# actions: read
# contents: read

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
permissions:
security-events: write
packages: read
actions: read
contents: read

strategy:
fail-fast: false
matrix:
include:
- language: c-cpp
build-mode: manual
steps:
- name: Checkout repository
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
packs: codeql/misra-cpp-coding-standards
dependency-caching: true
env:
CODEQL_ACTION_DEBUG: true

- if: matrix.build-mode == 'manual'
shell: bash
run: |
# Clean Bazel cache to ensure a fresh build that CodeQL can trace.
# This is crucial as Bazel often uses cached results, which CodeQL cannot observe.
bazel clean --expunge

# Build using specific Bazel flags to help CodeQL detect the build.
# --spawn_strategy=local: Ensures local compilation, not distributed.
# --nouse_action_cache: Prevents using action cache, forcing recompilation.
# --noremote_accept_cached, --noremote_upload_local_results: Avoids remote caching.
# --disk_cache=: Disables disk cache.
bazel --batch build -j 4 --config bl-x86_64-linux \
--spawn_strategy=local \
--strategy=Genrule=local \
--nouse_action_cache \
--noremote_accept_cached \
--noremote_upload_local_results \
--disk_cache= \
//score/...
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you try adding --action_env=LD_PRELOAD here?

CodeQL injects a library to intercept build commands, but bazel seems to ignore it: https://github.com/eclipse-score/baselibs/actions/runs/19935641098/job/57159502549#step:4:65

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other code checking tools do it as well https://codechecker.readthedocs.io/en/latest/analyzer/user_guide/#bazel
I'm not sure if more CodeQL environment variables need to be listed as well or the one for LD_PRELOAD is enough.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks i will give it a try


# Shut down Bazel server processes after the build.
# This ensures future build commands start in a clean Bazel server process without CodeQL attached.
bazel shutdown

- name: Check CodeQL Tracer Log
if: always()
run: |
echo "--- Contents of CODEQL_TRACER_LOG ---"
cat "${CODEQL_TRACER_LOG}" || echo "Tracer log file not found or empty."
echo "-------------------------------------"

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
output: sarif-results.sarif

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: sarif-results.sarif
path: sarif-results.sarif
Loading