paint-brush
An IDE Plugin for Gamified Continuous Integration: Intellij Plugin for Gamekinsby@gamifications
191 reads

An IDE Plugin for Gamified Continuous Integration: Intellij Plugin for Gamekins

tldt arrow

Too Long; Didn't Read

In this paper, researchers present an IntelliJ plugin designed to seamlessly integrate Gamekins’ gamification elements into the IDE.
featured image - An IDE Plugin for Gamified Continuous Integration: Intellij Plugin for Gamekins
Gamifications FTW Publications HackerNoon profile picture

Authors:

(1) Philipp Straubinger, University of Passau, Passau, Germany;

(2) Gordon Fraser, University of Passau, Passau, Germany.

3 INTELLIJ PLUGIN FOR GAMEKINS

The Gamekins IntelliJ plugin can be installed on any IntelliJ Community Edition or Ultimate IDE, adding a new tab on the right side of the IDE interface. Upon initial access to this tab, a login prompt will appear, prompting users to enter their username, password, URL, and project name to establish a connection with the relevant Jenkins instance. Subsequent logins are streamlined through the use of a token, eliminating the need for repeated manual logins, although users have the flexibility to log out as needed. Project and user configurations are centrally managed within Gamekins on a Jenkins server rather than within the Gamekins IntelliJ plugin. This allows for extensive collaboration within the project, and the analyses conducted by Gamekins need not be executed locally. A customized API integrated into Gamekins empowers the plugin to fetch challenges, quests, and user data from Gamekins, as well as transmit data to it. The Gamekins IntelliJ plugin tab encompasses various pages presenting all the information and gamification elements generated and provided by Gamekins, along with the buttons on the bottom to change between these pages (Fig. 1).

3.1 Challenges

All challenges are visible in the Gamekins IntelliJ plugin, with the availability of different information and actions based on the challenge type. For instance, a Test Challenge solely displays information about the challenge without further interactions with IntelliJ (Fig. 1). Similarly, a Build Challenge provides information and includes an additional link to the log files in Jenkins. The Class and Method Coverage Challenges offer a button to navigate to and highlight the respective class or method. This feature is also available for Line and Branch Coverage challenges, highlighting the specified line. The Branch Coverage Challenge additionally provides information about covered and uncovered branches for the tested line. The Mutation and Smell Challenges allow developers to go to and highlight the original line of code or the start of the test smell, respectively. These challenges also have an expandable area containing details such as the mutant or a smell description.


The challenges are not only visible in the Gamekins IntelliJ plugin tab but also feature yellow highlighting in the source files, aiding developers in easily identifying challenges in their current code. Hovering over the highlighted code snippet reveals a tooltip with the challenge description and a button to open the challenges page in the Gamekins IntelliJ plugin (Fig. 2). This page displays current challenges along with completed and rejected ones (Fig. 1).


Developers can reject challenges with an explanation if they deem them irrelevant, prompting the generation of new challenges. Once rejected, challenges cannot be reinstated, except for Class Coverage Challenges, which can be restored using the Undo button (Fig. 1). If a developer finds a challenge interesting but unsuitable for the current workflow, they can store a configurable number of challenges. These stored challenges can also be shared with a colleague working on the same project, especially if the source code is segmented into specialized fields unknown to the participant.


To address a challenge, developers simply need to commit and push their changes to their version control system, triggering Jenkins to run the CI pipeline in the background. Developers can seamlessly continue their work in the project as Gamekins automatically executes after the pipeline concludes, providing notifications upon completion. General notifications about the finished build and specific notifications for each solved and generated challenge or quest are displayed (Fig. 3) in IntelliJ. These notifications include links to view the corresponding elements in the Gamekins IntelliJ plugin.


Figure 1: Current, completed and rejected challenges


Figure 2: Highlighted line of code with the tooltip giving information about the challenge


Figure 3: Notification received after solving a challenge

3.2 Quests

Each quest in the Gamekins IntelliJ plugin is displayed on the quests page (Fig. 4) along with its description and a progress bar. Both ongoing and completed quests are shown. The progress bar indicates the percentage of quest completion and is dynamically updated whenever relevant actions are undertaken.


Figure 4: Current and completed quests


Figure 5: List of achievements

3.3 Achievements

Presently, the Gamekins IntelliJ plugin encompasses all achievements from Gamekins, allowing developers to access a dedicated tab to view both acquired and available achievements (Fig. 5). Each achievement consists of an icon, a title, a description, and the date and time it was awarded.

3.4 Leaderboards

To incentivize developers to solve challenges and complete quests, points are awarded based on the task’s difficulty. These points are accumulated for each user and team, prominently displayed in a dedicated leaderboard within the Gamekins IntelliJ plugin tab


Figure 6: Example leaderboard


(Fig. 6). The leaderboard showcases rankings for individual users as well as teams, emphasizing their scores in the logged-in project. Information regarding completed challenges, quests, achievements, and earned points is presented on each leaderboard. Additionally, users have the option to personalize their appearance by selecting one of 50 avatars available within Gamekins.


This paper is available on arxiv under CC BY-SA 4.0 DEED license.