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

.java
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.