paint-brush
An IDE Plugin for Gamified Continuous Integration: Gamification Elements of Gamekinsby@gamifications
144 reads

An IDE Plugin for Gamified Continuous Integration: Gamification Elements of 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: Gamification Elements of Gamekins
Gamifications FTW Publications HackerNoon profile picture

Authors:

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

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

2 GAMIFICATION ELEMENTS OF GAMEKINS

2.1 Challenges

Gamekins offers a variety of different challenges, which are test and quality-oriented tasks for the developer to solve. There are currently eight different types of challenges available[2]:


• Build Challenge: This challenge shows the developer that the build on the CI failed and has to be fixed. • Test Challenge: This generic challenge shows that the developer has to write a new test.


• Class Coverage Challenge: This challenge tasks the developer to cover more lines in a specific class.


• Method Coverage Challenge: This challenge focuses on improving the coverage of a specific method.


• Line Coverage Challenge: This challenge assigns the developer an uncovered line that they have to cover.


• Branch Coverage Challenge: This challenge focuses on the improvement of branch coverage of a covered line.


• Mutation Challenge: This challenge tasks the developer to detect a mutant generated by PIT[3] by writing a new test.


• Smell Challenge: This challenge focuses on the removal of code and test smell with the help of SonarLint[4].

2.2 Quests

Since the original inception as described in prior work [3, 4], the way quests are implemented has changed. Instead of having multiple challenges solved after each other, quests are now test- and qualityrelated tasks that involve making multiple quality improvements and interacting with gamification elements. It is therefore not bound to challenges anymore, but rather on improving different test and quality-related metrics. The following types of quests are available:


• Add Tests Quest: This quest tasks the developer to add a specified number of tests to the existing test suite.


• Cover Branches Quest: This quest focuses on covering an additional specified number of branches with new tests.


• Cover Lines Quest: This quest focuses on covering an additional specified number of lines with new tests. • Receive Challenges Quest: This quest promotes interaction with other developers by receiving a challenge from another developer.


• Send Challenges Quest: This quest promotes interaction with other developers by sending a challenge to them.


• Solve Achievements Quest: This quest focuses on the completion of a new achievement.


• Solve Challenges Quest: This quest tasks the developer to solve a specified number of new challenges of one type.


• Solve Challenges Without Rejection Quest: This quest focuses on solving a specified number of challenges regardless of their types without rejecting one in between.

2.3 Achievements

Developers are rewarded based on their testing accomplishments, encompassing various achievements of differing difficulty levels. These achievements range from simple tasks like adding a test to a project to more challenging objectives such as achieving 100% coverage. Certain achievements remain hidden until they are completed and are tied to individual actions, like the addition of new tests. Achievements are triggered when users commit to the project repository. There are two main types of achievements: individual achievements, which involve completing a specific number of challenges, and project-level achievements, which are linked to reaching a particular threshold within the project.


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


[2] Detailed information can be found in prior work [3, 4]


[3] https://pitest.org/


[4] https://www.sonarsource.com/products/sonarlint/