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.
-
Kotlin · Alpha
Lightweight text-based parser with Kotlin-specific idiom recognition. Early support — higher false-positive rates expected.
-
Groovy · Beta
ANTLR parser extending the Java grammar, with GDK method recognition. Usable with caveats — use
--confidence highfor best results. -
JavaScript / TypeScript · Beta
Lightweight parser covering JS, TS, and Vue single-file components. Usable with caveats — use
--confidence highfor best results.
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 |