CodeQL documentation

System requirements

System requirements for running the latest version of CodeQL.

Supported platforms

Operating system Supported versions Supported CPU architectures
Linux

Ubuntu 20.04

Ubuntu 21.04

Ubuntu 22.04

x86-64
Windows

Windows 10 / Windows Server 2019

Windows 11 / Windows Server 2022

x86-64
macOS

macOS 12 Monterey

macOS 13 Ventura

macOS 14 Sonoma

x86-64, arm64 (Apple Silicon)

x86-64, arm64 (Apple Silicon)

x86-64, arm64 (Apple Silicon) [1]

[1]Support for Apple Silicon is currently in beta.

Additional software requirements

To generate a CodeQL database for a compiled language, you must ensure that the system can successfully build and compile your code, independently of CodeQL.

In addition, CodeQL extraction has the following requirements.

For extraction of compiled languages (C/C++, C#, Go, Java) and Ruby on Linux:

  • glibc version 2.17 or greater must be installed.
  • musl-c-based Linux distributions, such as Alpine Linux, are not supported.

For extraction of compiled languages on Windows:

  • The PowerShell.exe executable must be available on the PATH.

For TypeScript extraction on all platforms:

  • Node.js 14 or higher must be installed and available on the PATH as node.

For Python extraction:

  • On Linux and macOS, Python 3 must be installed and available on the PATH as python3 or python.
  • For Python 2 extraction on Linux and macOS, we also recommend having Python 2 installed and available on the PATH as python2.
  • On Windows, the Python launcher must be installed and available on the PATH as py.exe.

For Ruby extraction:

  • On Windows, the msvcp140.dll must be installed and available on the system. This can be installed by downloading the appropriate Microsoft Visual C++ Redistributable for Visual Studio.

For Java extraction:

  • There must be a java or java.exe executable available on the PATH, and the JAVA_HOME environment variable must point to the corresponding JDK’s home directory.
  • If you need to analyse projects using varying JDK versions, it may be useful to supply alternate JDK versions using environment variables of the form JAVA_HOME_$VERSION_$PLATFORM, following the example of the GitHub Actions runner images. An Apache Maven toolchains.xml file can also be used for the same purpose.
  • Having a mvn or mvn.exe executable available on the PATH is recommended if your project uses Apache Maven and does not use the mvnw wrapper script.
  • Having a gradle or gradle.exe executable available on the PATH is recommended if your project uses Gradle and does not use the gradlew wrapper script.
  • © GitHub, Inc.
  • Terms
  • Privacy