IDE ’24, April 20, 2024, Lisbon, Portugal Straubinger et al.
•
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 quality-
related tasks that involve making multiple quality improvements
and interacting with gamication elements. It is therefore not bound
to challenges anymore, but rather on improving dierent test and
quality-related metrics. The following types of quests are available:
•
Add Tests Quest: This quest tasks the developer to add a
specied number of tests to the existing test suite.
•
Cover Branches Quest: This quest focuses on covering an
additional specied number of branches with new tests.
•
Cover Lines Quest: This quest focuses on covering an ad-
ditional specied number of lines with new tests.
•
Receive Challenges Quest: This quest promotes interac-
tion 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 com-
pletion of a new achievement.
•
Solve Challenges Quest: This quest tasks the developer to
solve a specied number of new challenges of one type.
•
Solve Challenges Without Rejection Quest: This quest
focuses on solving a specied number of challenges regard-
less of their types without rejecting one in between.
2.3 Achievements
Developers are rewarded based on their testing accomplishments,
encompassing various achievements of diering diculty 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 com-
pleted 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: individ-
ual achievements, which involve completing a specic number of
challenges, and project-level achievements, which are linked to
reaching a particular threshold within the project.
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, pass-
word, URL, and project name to establish a connection with the rel-
evant Jenkins instance. Subsequent logins are streamlined through
the use of a token, eliminating the need for repeated manual logins,
although users have the exibility to log out as needed. Project
3
https://pitest.org/
4
https://www.sonarsource.com/products/sonarlint/
and user congurations 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 gami-
cation 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 dierent information and actions based on the
challenge type. For instance, a Test Challenge solely displays in-
formation about the challenge without further interactions with
IntelliJ
(Fig. 1). Similarly, a Build Challenge provides information
and includes an additional link to the log les in Jenkins. The
Class and Method Coverage Challenges oer 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 specied line. The Branch Coverage Challenge additionally pro-
vides 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 les,
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 nds a challenge interesting but unsuitable
for the current workow, they can store a congurable 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 elds unknown to the participant.
To address a challenge, developers simply need to commit and
push their changes to their version control system, triggering Jenk-
ins to run the CI pipeline in the background. Developers can seam-
lessly continue their work in the project as
Gamekins
automatically
executes after the pipeline concludes, providing notications upon
completion. General notications about the nished build and spe-
cic notications for each solved and generated challenge or quest
are displayed (Fig. 3) in
IntelliJ
. These notications include links to
view the corresponding elements in the Gamekins IntelliJ plugin.