Languages and compilersΒΆ

QL and LGTM version 1.20 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 6.0)

GNU extensions (up to GCC 7.3),

Microsoft extensions (up to VS 2017)

.cpp, .c++, .cxx, .hpp, .hh, .h++, .hxx, .c, .cc, .h
C# C# up to 7.2 together with .NET versions up to 4.7.1

Microsoft Visual Studio up to 2017,

.NET Core up to 2.1

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

javac (OpenJDK and Oracle JDK)

Eclipse compiler for Java (ECJ) batch compiler

JavaScript ECMAScript 2018 or lower Not applicable .js, .jsx, .mjs, .es, .es6, .htm, .html, .xhm, .xhtml, .vue, .json [3].
Python 2.7, 3.5, 3.6, 3.7 Not applicable .py
TypeScript [4]. 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2 Standard TypeScript compiler .ts, .tsx
[1]The best results are achieved with COBOL code that stays close to the ANSI 85 standard.
[2]Builds that execute on Java 6 to 11 can be analyzed. The analysis understands Java 11 language features.
[3]JSX and Flow code, YAML, JSON, and HTML files may also be analyzed with JavaScript files.
[4]TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default for LGTM.