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.
TypeScript & JavaScript
TypeScript & JavaScript
Full coverageThe 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.
Vue & Svelte components
Vue & Svelte components
Script coverageIris 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.
Go
Go
Good coverageFile 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.
Python
Python
Good coverageComplexity, 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.
Ruby
Ruby
Good coverageMethods, 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.
C#
C#
Good coverageC# 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.
Java
Java
Good coverageJava 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.
Rust
Rust
Good coverageRust 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.
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.