The IntelliJ Platform: A Framework for Building Plugins and Mining Software Data

  title={The IntelliJ Platform: A Framework for Building Plugins and Mining Software Data},
  author={Zarina Kurbatova and Yaroslav Golubev and Vladimir Kovalenko and Timofey Bryksin},
  journal={2021 36th IEEE/ACM International Conference on Automated Software Engineering Workshops (ASEW)},
In software engineering, a great number of new approaches are being actively researched, and a lot of tools are being developed based on them. These tools require a framework for their creation and an opportunity to be used by potential developers. Modern IDEs provide both. In this paper, we describe the main capabilities of the IntelliJ Platform that could be useful for researchers that are developing code analysis tools. To illustrate the benefits of using the platform, we describe several… 

Figures from this paper

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.
All You Need Is Logs: Improving Code Completion by Learning from Anonymous IDE Usage Logs
This work proposes an approach for collecting completion usage logs from the users in an IDE and using them to train a machine learning based model for ranking completion candidates, and shows that using a simple ranking model trained on the past user behavior logs significantly improved code completion experience.
RacketLogger: Logging and Visualising Changes in DrRacket
RacketLogger, a change-logging plugin for DrRacket, which logs changes both at the textual level and at the AST level, and has adapted Negara et al.


Sorrel: an IDE Plugin for Managing Licenses and Detecting License Incompatibilities
SORREL-a plugin for managing licenses and detecting potential incompatibilities for IntelliJ IDEA, a popular Java IDE, makes it easier for developers to choose a proper license for a project and avoid most of the licensing errors-all inside the familiar IDE editor.
PSIMiner: A Tool for Mining Rich Abstract Syntax Trees from Code
This work presents PSIMiner— a tool for processing PSI trees from the IntelliJ Platform, a tool to infer types of identifiers in Java ASTs and extend the code2seq model for the method name prediction problem.
A Tool for Non-Intrusive and Privacy-Preserving Developers' Programming Activity Data Collection
A tool for IDE-based programming activity data collection for software developers in the form of an IDE plug-in for popular IDEs including IntelliJ IDEA and Android Studio is implemented which can collect and process developers' in-IDE activity data in a non-intrusive and privacy-preserving manner.
VITRuM: A Plug-In for the Visualization of Test-Related Metrics
This paper proposes VITRuM (VIsualization of Test-Related Metrics), an IntelliJ plug-in able to provide developers with an advanced visual interface of both static and dynamic test-related metrics that has the potential of making them more able to diagnose production code faults.
DeepGraph: A PyCharm Tool for Visualizing and Understanding Deep Learning Models
This paper proposes DeepGraph, a visualization tool for visualizing and understanding a deep neural network, which analyzes the training program to construct the graph representation of a DNN, and establishes and maintains the linkage between the source code of theTraining program and its corresponding neural network architecture.
cASpER: A Plug-in for Automated Code Smell Detection and Refactoring
During software evolution, code is inevitably subject to continuous changes that are often performed by developers within short and strict deadlines. As a consequence, good design practices are often
A deep tree-based model for software defect prediction
A novel prediction model is developed which is capable of automatically learning features for representing source code and using them for defect prediction, built upon the powerful deep learning, tree-structured Long Short Term Memory network which directly matches with the Abstract Syntax Tree representation of source code.
Just-In-Time Test Smell Detection and Refactoring: The DARTS Project
DARTS (Detection And Refactoring of Test Smells), an Intellij plug-in which implements a state-of-the-art detection mechanism to detect instances of three test smell types at commit-level and enables their automated refactoring through the integrated APIs provided by IntellIJ.
RefactorInsight: Enhancing IDE Representation of Changes in Git with Refactorings Information
REFACTORINSIGHT is a plugin for IntelliJ IDEA that introduces a smart diff for code changes in Java and Kotlin where refactorings are auto-folded and provided with their description, thus allowing users to focus on changes that modify the code behavior like bug fixes and new features.
Fine-grained and accurate source code differencing
The objective is to compute edit scripts that are short and close to the original developer intent by introducing an algorithm computing edit scripts at the abstract syntax tree granularity including move actions.