Lupa: A Framework for Large Scale Analysis of the Programming Language Usage
Anna Vlasova, Maria Tigina, Ilya Vlasov, Anastasiia Birillo, Yaroslav, Golubev, Timofey Bryksin

TL;DR
Lupa is a scalable command line framework leveraging IntelliJ's static analysis capabilities to analyze programming language usage, supporting custom analyzers for syntax and dependency features, initially for Python and Kotlin.
Contribution
Introduces Lupa, a flexible framework for large-scale programming language analysis using IntelliJ's static analysis tools, with extensibility for custom analyses and multiple languages.
Findings
Successfully analyzed Kotlin syntax of ranges.
Framework supports custom analyzers and language extension.
Demonstrated extensibility and practical analysis example.
Abstract
In this paper, we present Lupa - a framework for large-scale analysis of the programming language usage. Lupa is a command line tool that uses the power of the IntelliJ Platform under the hood, which gives it access to powerful static analysis tools used in modern IDEs. The tool supports custom analyzers that process the rich concrete syntax tree of the code and can calculate its various features: the presence of entities, their dependencies, definition-usage chains, etc. Currently, Lupa supports analyzing Python and Kotlin, but can be extended to other languages supported by IntelliJ-based IDEs. We explain the internals of the tool, show how it can be extended and customized, and describe an example analysis that we carried out with its help: analyzing the syntax of ranges in Kotlin.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware System Performance and Reliability · Parallel Computing and Optimization Techniques · Software Engineering Research
