Supported Programming Languages

CodeScene supports different programming languages at different levels:

1. Basic: All text-based content can be analysed on the file level. This enables hotspot analyses, change coupling, and knowledge metrics.

2. X-Ray with method level hotspots: The second level of support is CodeScene’s language aware X-Ray analysis that calculates hotspots and change coupling on a function/method level.

3. Full support: Full language support means that CodeScene calculates Code Health metrics, enables the virtual code reviewer, and supports the goal-oriented workflow concept to manage technical debt and code quality.

Language Specific Features

CodeScene has dedicated language support for the following programming languages:

Language

Full support

X-Ray (method level hotspots)

C

Yes

Yes

C++

Yes

Yes

C#

Yes

Yes

Java

Yes

Yes

Groovy

Yes

Yes

JavaScript

Yes

Yes

TypeScript

Yes

Yes

React (jsx, tsx)

Yes

Yes

ECMAScript Modules

Yes

Yes

Vue.js

Yes

Yes

Objective-C 2.0

Yes

Yes

Scala

Yes

Yes

Python

Yes

Yes

Swift

Yes

Yes

Go

Yes

Yes

Dart2

Yes

Yes

Visual Basic .Net

Yes

Yes

PHP

Yes

Yes

Rust

Yes

Yes

Ruby

Yes

Yes

Rational Software Architect models (C++)

Yes

Yes

Kotlin

Yes

Yes

Perl 5

Yes

Yes

Erlang

Yes

Yes

Elixir

Yes

Yes

Clojure

Yes

Yes

PowerShell

Yes

Yes

TCL

Yes

Yes

Apex (Salesforce)

Yes

Yes

BrightScript

Yes

Yes

BrighterScript

Yes

Yes

Terraform

No

Yes

Programming Language Details

The code health metric represents a general concept which applies across all supported languages. However, some details might vary. This section highlights any language specific analysis details.

C# Analysis Details

Local Functions: Local functions are a fairly recent addition to the C# language. A local function is simply a method defined inside another method:

private void Process(string?[] lines, string mark)
{
    foreach (var line in lines) // Here's some logic in the enclosing function...
    {
        if (IsValid(line))      // ...and we encapsulate details in a local function.
        {
            // Processing logic...
        }
    }

    bool IsValid([NotNullWhen(true)] string? line) // <-- local function.
    {
        return !string.IsNullOrEmpty(line) && line.Length >= mark.Length;
    }
}

CodeScene treats local functions as first-class analysis elements. This means that a code smell inside a local function is reported there (e.g. IsValid in the example above); not on the enclosing method (e.g. Process). Similiarly, this also allows you to view local functions as separate priorities in the X-Ray analysis. Here’s an example:

X-Ray example on C# local functions.

Fig. 273 The X-Ray analysiss prioritizes C# local functions too. (See ValidateRole and ValidateName).

Lack Support for a specific Programming Language?

We continue to add support for more programming languages over time. As always: if you lack support for a language, let us know and we will make it happen.