Skip to content

Commit

Permalink
Support an empty list of languages in order for codeQL to autodetect …
Browse files Browse the repository at this point in the history
…them

Apparently codeQL no longer handles the fact where languages are set but
are not present in the repository and instead errors out.

There is a relatively recent change (Oct-23) to codeQL that is able to
autodetect the languages used:
https://github.blog/changelog/2023-10-23-code-scanning-default-setup-automatically-includes-all-codeql-supported-languages/
and especially:
https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning
says:
"""
If your workflow does not contain a matrix called language, then CodeQL
is configured to run analysis sequentially. If you don't specify
languages in the workflow, CodeQL automatically detects, and attempts to
analyze, any supported languages in the repository.
"""

Let's use that feature instead. Unfortunately this is a breaking change.
  • Loading branch information
jhrozek committed Apr 16, 2024
1 parent 71454c3 commit ae92d74
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions rule-types/github/codeql_enabled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ def:
type: string
description: |
Only applicable for remediation. Sets the CodeQL languages to use in the workflow.
Leave empty (`[]`) to automatically detect the languages in the repository.
CodeQL supports 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
default: []
schedule_interval:
type: string
description: |
Expand Down Expand Up @@ -116,12 +118,14 @@ def:
strategy:
fail-fast: false
{{ if .Profile.languages | len }}
matrix:
language: [{{range $index, $pattern := .Profile.languages}}{{if $index}},{{end}}"{{ $pattern }}"{{end}}]
# CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
# Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
{{ end }}
steps:
- name: Checkout repository
Expand All @@ -130,6 +134,7 @@ def:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
{{ if .Profile.languages | len }}
with:
languages: ${{"{{"}} matrix.language {{"}}"}}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -138,6 +143,7 @@ def:
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
{{ end }}
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
# If this step fails, then you should remove it and run the build manually (see below)
Expand All @@ -156,8 +162,10 @@ def:
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
{{ if .Profile.languages | len }}
with:
category: "/language:${{"{{"}} matrix.language {{"}}"}}"
{{ end }}
# Defines the configuration for alerting on the rule
alert:
type: security_advisory
Expand Down

0 comments on commit ae92d74

Please sign in to comment.