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