Skip to content

Language Support

Algorilla analyzes source code in four language groups, each with its own parser. All 28 rules work across all languages unless noted otherwise.

Supported Languages

  • Java · GA

    Full ANTLR parser with complete AST. The most mature language support — production-ready with low false-positive rate.

    Java details

  • Kotlin · Alpha

    Lightweight text-based parser with Kotlin-specific idiom recognition. Early support — higher false-positive rates expected.

    Kotlin details

  • Groovy · Beta

    ANTLR parser extending the Java grammar, with GDK method recognition. Usable with caveats — use --confidence high for best results.

    Groovy details

  • JavaScript / TypeScript · Beta

    Lightweight parser covering JS, TS, and Vue single-file components. Usable with caveats — use --confidence high for best results.

    JS/TS details

Rule Coverage Matrix

All rules work on the language-agnostic intermediate representation (IR), so most rules apply to all languages. Only rules that target platform-specific APIs are restricted.

Rule Java Kotlin Groovy JS/TS
nested-lookup ✅ ✅ ✅ ✅
repeated-linear-scan ✅ ✅ ✅ ✅
sort-for-last ✅ ✅ ✅ ✅
expensive-sort-comparator ✅ ✅ ✅ ✅
filter-after-sort ✅ ✅ ✅ ✅
bulk-load-for-single-lookup ✅ ✅ ✅ ✅
n-plus-one-query ✅ ✅ ✅ ✅
expensive-construction ✅ ✅ ✅ ✅
repeated-regex-in-loop ✅ ✅ ✅ ✅
regex-recompilation-in-loop ✅ ✅ ✅ ✅
expensive-serialization-in-loop ✅ ✅ ✅ ✅
sequential-async-join-in-loop ✅ ✅ ✅ ✅
in-loop-collection-building ✅ ✅ ✅ ✅
string-concat-in-loop ✅ ✅ ✅ ✅
quadratic-removal ✅ ✅ ✅ ✅
hidden-nested-loop ✅ ✅ ✅ ✅
io-in-loop ✅ ✅ ✅ ✅
expensive-callback ✅ ✅ ✅ ✅
cardinality-explosion ✅ ✅ ✅ ✅
lazy-loading-in-loop ✅ ✅ ✅ ✅
redundant-expensive-call ✅ ✅ ✅ ✅
unmemoized-recursion ✅ ✅ ✅ ✅
repeated-collection-iteration ✅ ✅ ✅ ✅
loop-invariant-hoisting ✅ ✅ ✅ ✅
uncached-getter ✅ ✅ ✅ ✅
chained-getters ✅ ✅ ✅ ✅
repeated-reflection-in-loop ✅ ✅ ✅
parallel-pipeline-bottleneck ✅ ✅ ✅