Languages and compilersΒΆ

QL and LGTM version 1.22.1 support analysis of the following languages compiled by the following compilers.

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.