Skip to main content
Iris Code analyses every supported file as you open or save it, with no command to run. The File tab is where that lands: a line-level picture of the current file, and where each problem sits.

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.
Turning a toggle off hides both the counter and the detail section, rather than showing a zero. This keeps the sidebar free of categories that are not relevant to your project.

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.
To keep them scored without squiggles, leave enableSecuritySmells on and set inlineDiagnostics.securitySmells to false. Full pattern reference in Security Smells.

Warnings

Five warning types, each with a threshold you set in .irisconfig.json and a severity you can override independently.
severityOverrides adjusts any of these. Promote no-exports to a warning where it matters on your project, or demote file-too-long from error to warning while working through a backlog.
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.