Language support

One code health workflow across the languages teams actually ship.

Iris Code is built for mixed repos, not single-language demos. The strongest coverage today is TypeScript and JavaScript, including the executable script blocks in Vue and Svelte components. Go, Python, Ruby, C#, Java, and Rust join the same scoring and secrets-detection story so the whole repo can move toward one enforceable standard.

01

TypeScript & JavaScript

.ts.tsx.js.jsx.mjs.cjs

TypeScript & JavaScript

Full coverage

The deepest analysis Iris Code offers. Full file scoring, complexity analysis, function-level signals, import analysis, secrets detection, and type-safety-aware checks that are specific to TypeScript.

File scoringFull
Complexity analysisFull
Function-level signalFull
Import analysisFull
Secrets detectionFull
Type-safety checksTS only
Code smellsFull
src/api/users.ts
51
HEALTH SCORE
⚠ Warning
threshold: 70
Complexity
High
Duplication
3 blocks
Coupling
11 deps
Type safety
2 any
Secrets detected
API_KEY — OpenAI token patternline 4
DB_PASSWORD — credential patternline 11
02

Vue & Svelte components

.vue.svelte<script>lang="ts"

Vue & Svelte components

Script coverage

Iris analyses Vue script and script-setup blocks plus Svelte instance and module scripts with the same JavaScript/TypeScript rules. Findings keep their real component line numbers; template markup and styles are deliberately excluded from scoring and duplicate matching.

File scoringFull
Complexity analysisFull
Function-level signalFull
Import analysisFull
Secrets detectionFull
Type-safety checksTS only
Code smellsFull
src/api/users.ts
51
HEALTH SCORE
⚠ Warning
threshold: 70
Complexity
High
Duplication
3 blocks
Coupling
11 deps
Type safety
2 any
Secrets detected
API_KEY — OpenAI token patternline 4
DB_PASSWORD — credential patternline 11
03

Go

.go

Go

Good coverage

File scoring, complexity, function size, code smells, and secrets coverage for backend and service code. Import analysis is partial. Type-safety checks are not applicable to Go.

File scoringFull
Complexity analysisFull
Function-level signalFull
Import analysisPartial
Secrets detectionFull
Code smellsFull
internal/handler/users.go
68
HEALTH SCORE
⚠ Below threshold
threshold: 70
Complexity
Medium
Fn size
2 large
Smells
3
Secrets
None
Top issues
◐ HandleRequest() complexity 18
◐ validatePayload() 84 lines
◐ parseUser() duplicated 2×
04

Python

.py

Python

Good coverage

Complexity, code smells, and secrets scanning for scripts and services so mixed-language repos still get one local-first score workflow. Function-level and import analysis are partial.

File scoringFull
Complexity analysisFull
Function-level signalPartial
Import analysisPartial
Secrets detectionFull
Code smellsFull
scripts/data_pipeline.py
73
HEALTH SCORE
✓ Passing
threshold: 70
Complexity
Medium
Smells
4
Secrets
None
Score
73
Top issues
◐ transform_data() complexity 12
◐ Long parameter list in load()
◐ Dead code block lines 88-94
05

Ruby

.rb.erbGemfile

Ruby

Good coverage

Methods, complexity, code smells, and secrets across Ruby and Rails, including the extensionless files Ruby projects rely on and .erb templates, where findings report the line in the template itself. Adds three Ruby-specific checks: method_missing without respond_to_missing?, god classes, and Rails parameters reaching a model without permit. Unused-code detection does not apply, because Ruby resolves constants at runtime.

File scoringFull
Complexity analysisFull
Function-level signalFull
Import analysisPartial
Secrets detectionFull
Rails-aware checksFull
Code smellsFull
app/controllers/orders_controller.rb
68
HEALTH SCORE
✗ Below threshold
threshold: 70
Complexity
Medium
Smells
3
Secrets
None
Score
68
Top issues
✗ params passed to Order without permit
◐ method_missing without respond_to_missing?
◐ Order defines 24 methods
06

C#

.cs.csproj.NET

C#

Good coverage

C# source and .NET project files get local health scoring, method and complexity signals, secrets detection, and C#-specific checks for large classes, catch-all exception handling, async void methods, and hard-to-read LINQ chains. Project files are scanned for secrets and package references; .NET dependency CVE analysis is separate from this analyzer.

File scoringFull
Complexity analysisFull
Function-level signalFull
Project referencesPartial
Secrets detectionFull
.NET idiom checksFull
Code smellsFull
Controllers/OrdersController.cs
61
HEALTH SCORE
Below threshold
threshold: 70
Complexity
High
Async
void
LINQ
Long chain
Project
.csproj
Top issues
async void SaveOrder()
catch (Exception ex)
.csproj API token on line 4
07

Java

.java.properties

Java

Good coverage

Java source gets local health scoring, method and complexity signals, secrets detection, and Java-specific checks for catch-all exception handling and process execution. Unused imports are reported and the check reads Javadoc, so an import referenced only from a {@link} is left alone. A .properties file is treated as configuration rather than code: it is scanned for committed credentials and nothing else. Maven and Gradle dependency analysis is separate from this analyzer.

File scoringFull
Complexity analysisFull
Method-level signalFull
Unused import detectionFull
Secrets detectionFull
Java idiom checksFull
Code smellsFull
shop-api/src/main/java/OrderController.java
39
HEALTH SCORE
Below threshold
threshold: 70
Secrets
3
Catch-all
2
Imports
1 unused
Config
.properties
Top issues
dbPassword committed on line 19
catch (Exception e)
Runtime.getRuntime().exec on line 52
08

Rust

.rsCargo.lock

Rust

Good coverage

Rust source gets local health scoring, function and complexity signals, secrets detection, and Rust-specific checks for unwrap, expect, and explicit panics. Those are exempt inside #[cfg(test)] modules, because Rust puts tests in the file under test and a whole-file exemption would spare the production half too. Imports are counted but never judged unused: a trait is imported so its methods become callable and its name is then never written again. Cargo dependency analysis reads Cargo.lock for the full resolved tree.

File scoringFull
Complexity analysisFull
Function-level signalFull
Import analysisPartial
Secrets detectionFull
Test-aware panic checksFull
Code smellsFull
crates/shop-core/src/lib.rs
86
HEALTH SCORE
Above threshold
threshold: 70
unwrap
2
panic!
2
#[cfg(test)]
exempt
Lockfile
Cargo.lock
Top issues
raw.parse().unwrap() on line 12
panic! on line 23
test module unwraps not counted

Use Iris Code where local-first signal matters most

Start with the files people touch most, commit one shared configuration, and only then turn on enforcement. That rollout pattern matters more than chasing perfect language parity on day one.