The File tab
It opens with a readiness summary: the score, any blockers, whether a hook is installed, and the trend direction. Below that is the full breakdown:TypeScript-specific checks
Four additional signals appear in.ts, .tsx, .js and .jsx files. They are hidden entirely in Go, Python, Ruby, C#, Java, and Rust rather than shown as empty rows.
Code smells
Every finding is clickable and jumps to the exact line.Security smells
Nine patterns, in every supported language. They count as Blockers, the same category as hardcoded secrets, rather than as warnings.
All nine share one toggle,
enableSecuritySmells.
Warnings
Five warning types, each with a threshold you set in.irisconfig.json and a severity you can override independently.
Unused import detection runs for TypeScript, JavaScript, and Java. Go and Python handle unused imports at the compiler or runtime level, so Iris Code does not duplicate that. Ruby resolves constants at runtime, where static analysis cannot tell an unused require from one loaded through
send or Rails autoloading, and C# resolves types through dependency injection, reflection, and source generators for the same reason. Rust is excluded because a trait must be imported for its methods to be callable and its name is then never written again, so the usage is invisible to a static read. Java is the one addition where the verdict is safe: an import there is a compile-time type alias and javac itself warns, and the check reads Javadoc so a {@link} reference counts as usage.