Languages and compilersΒΆ

CodeQL and LGTM version 1.22.2 support analysis of the following languages compiled by the following compilers. (CodeQL was previously known as QL.)

Note that where there are several versions or dialects of a language, the supported variants are listed. If your code requires a particular version of a compiler, check that this version is included below. Customers with any questions should contact their usual Semmle contact with any questions. If you’re not a customer yet, contact us at info@semmle.com with any questions you have about language and compiler support.

Language Variants Compilers Extensions
C/C++ C89, C99, C11, C++98, C++03, C++11, C++14, C++17

Clang (and clang-cl [1]) extensions (up to Clang 8.0),

GNU extensions (up to GCC 8.3),

Microsoft extensions (up to VS 2019),

Arm Compiler 5.0 [2].

.cpp, .c++, .cxx, .hpp, .hh, .h++, .hxx, .c, .cc, .h
C# C# up to 7.3. with .NET up to 4.8 [3].

Microsoft Visual Studio up to 2019,

.NET Core up to 2.2

.sln, .csproj, .cs, .cshtml, .xaml
COBOL ANSI 85 or newer [4]. Not applicable .cbl, .CBL, .cpy, .CPY, .copy, .COPY
Go (aka Golang) Go up to 1.13 Go 1.11 or more recent .go
Java Java 6 to 12 [5].

javac (OpenJDK and Oracle JDK),

Eclipse compiler for Java (ECJ) [6].

.java
JavaScript ECMAScript 2019 or lower Not applicable .js, .jsx, .mjs, .es, .es6, .htm, .html, .xhm, .xhtml, .vue, .json, .yaml, .yml, .raml, .xml [7].
Python 2.7, 3.5, 3.6, 3.7 Not applicable .py
TypeScript [8]. 2.6-3.5 Standard TypeScript compiler .ts, .tsx
[1]Support for the clang-cl compiler is preliminary.
[2]Support for the Arm Compiler (armcc) is preliminary.
[3]In addition, support is included for the preview features of C# 8.0 and .NET Core 3.0.
[4]The best results are achieved with COBOL code that stays close to the ANSI 85 standard.
[5]Builds that execute on Java 6 to 12 can be analyzed. The analysis understands Java 12 language features.
[6]ECJ is supported when the build invokes it via the Maven Compiler plugin or the Takari Lifecycle plugin.
[7]JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files.
[8]TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default for LGTM.