Skip to main content
Eight languages, each with its own parser, plus Vue and Svelte components whose script blocks go through the JavaScript or TypeScript one. The reason for separate parsers rather than one generic pass: a debug print is console.log in one language, fmt.Println in another, and print() in a third. A third-party import looks completely different in go.mod and requirements.txt. Analysis that doesn’t know which language it’s reading ends up counting lines and tokens, which tells you nothing.
Don’t compare scores across languages. A TypeScript file carries deductions that simply don’t exist in Go, Python, Ruby, C#, Java, or Rust: any, @ts-ignore, missing return types, non-null assertions. An 80 in Go and an 80 in TypeScript are not the same 80, and ranking a mixed codebase by score across languages will mislead you.
Iris Code scans .js, .jsx, .mjs, .cjs, .ts, and .tsx files with a single TS/JS parser. All six extensions are treated as the same language family and share the same rule set.TypeScript / JavaScript-specific features:
  • Unused import detection - named, default, and namespace bindings that are imported but never referenced in the file are flagged as unused imports. This detection is TS/JS only - Go and Python handle unused imports at the compiler or runtime level.
  • TypeScript quality metrics - any usages, @ts-ignore suppressions, non-null assertions (!), and exported functions missing a return type annotation are surfaced as separate counters in the File tab. See TypeScript Metrics for the full breakdown.
  • Debug prints - console.log, console.warn, and console.error calls are flagged in Code Lens and in the Code Smells section.