Languages and compilersΒΆ

QL and LGTM version 1.21 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.

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

Clang extensions (up to Clang 8.0),

GNU extensions (up to GCC 8.3),

Microsoft extensions (up to VS 2019),

Arm Compiler 5.0 [1].

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

Microsoft Visual Studio up to 2019,

.NET Core up to 2.2

.sln, .csproj, .cs, .cshtml, .xaml
COBOL ANSI 85 or newer [3]. Not applicable .cbl, .CBL, .cpy, .CPY, .copy, .COPY
Java Java 6 to 12 [4].

javac (OpenJDK and Oracle JDK),

Eclipse compiler for Java (ECJ) [5].

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