-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathplugin.xml
More file actions
282 lines (258 loc) · 13.8 KB
/
plugin.xml
File metadata and controls
282 lines (258 loc) · 13.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
<id>org.jetbrains.research.testgenie</id>
<name>TestSpark</name>
<vendor>ictl</vendor>
<description><![CDATA[
<p>TestSpark is a plugin for generating unit tests. TestSpark natively integrates different AI-based test generation tools and techniques in the IDE. </p>
<p> TestSpark currently supports two test generation strategies:</p>
<ul>
<li>LLM-based test generation (using <a href="https://openai.com">OpenAI</a>, HuggingFace, and JetBrains internal AI Assistant platform)</li>
<li>Local search-based test generation (using <a href="https://www.evosuite.org">EvoSuite</a> and <a href="https://github.com/vorpal-research/kex">Kex</a>)</li>
</ul>
<h4>LLM-based test generation</h4>
<p>For this type of test generation, TestSpark sends request to different Large Language Models. Also, it automatically checks if tests are valid before presenting it to users.</p>
<p>This feature needs a token from OpenAI, HuggingFace, GoogleAI or the AI Assistant platform.</p>
<ul>
<li>Supports Java and Kotlin.</li>
<li>Generates unit tests for capturing failures.</li>
<li>Generate tests for Java classes, methods, and single lines.</li>
</ul>
<h4>Local search-based test generation</h4>
<p>For this type of test generation, TestSpark uses <a href="https://www.evosuite.org">EvoSuite</a>, which is the most powerful search-based local test generator, and <a href="https://github.com/vorpal-research/kex">Kex</a>, which is a symbolic execution engine for Kotlin and Java, developed by Vorpal Research at JetBrains.</p>
<ul>
<li>Supports up to Java 11.</li>
<li>Generates tests for different test criteria: line coverage, branch coverage, I/O diversity, exception coverage, mutation score.</li>
<li>Generates unit tests for capturing failures.</li>
<li>Generate tests for Java classes, methods, and single lines.</li>
</ul>
<p>Initially implemented by <a href="https://www.ciselab.nl">CISELab</a> at <a href="https://se.ewi.tudelft.nl">SERG @ TU Delft</a>, TestSpark is currently developed and maintained by <a href="https://lp.jetbrains.com/research/ictl/">ICTL at JetBrains Research</a>.</p>
]]></description>
<change-notes><![CDATA[
<h4>0.4.2</h>
<ul>
<li>Support IDE 253.*</li>
</ul>
<h4>0.4.1</h4>
<ul>
<li>Changed TestSpark’s vendor to JetBrains.</li>
<li>Support IDEA 252.*</li>
<li>Improved the error-handling structure.</li>
<li>Fixed minor bugs.</li>
</ul>
<h4>0.4.0</h4>
<ul>
<li>Add support for Google AI as an LLM.</li>
<li>Add KEX as a new test generation feature.</li>
<li>Improve the collection of sample test code candidates.</li>
<li>Support IDEA 251.*</li>
</ul>
<h4>0.3.1</h4>
<ul>
<li>Kotlin test generation now works in K2 mode as well.</li>
<li>Support IDEA 243.*</li>
<li>Fixed minor bugs.</li>
</ul>
<h4>0.3.0</h4>
<ul>
<li>Add full LLM-based Kotlin test generation for line, method/function, and class.</li>
<li>Integration with HuggingFace.</li>
<li>Support IDEA 242.*</li>
<li>Fixed multiple bugs in the LLM-based test generation algorithm.</li>
<li>Fixed multiple bugs in the UI.</li>
</ul>
<h4>0.2.1</h4>
<ul>
<li>Fix several minor bugs related to JUnit5 support and default template.</li>
</ul>
<h4>0.2.0</h4>
<ul>
<li>Add JUnit5 test generation for LLM-based approach</li>
<li>Users can provide samples to LLM for test generation</li>
<li>Add automatic sample detector for suggesting samples to user for LLM-based test generation</li>
<li>Users can save multiple prompt templates in settings now and use each of them for test genertion.</li>
<li>Supporting default structures for user's feedback to LLM for generated tests </li>
<li>Supporting the newer versions of IntelliJ IDEA (242.*)</li>
<li>Prompt structure improving</li>
<li>EvoSuite's communication port is now changeable in the plugin's settings.</li>
<li>Fixed An error with saving settings data between plugin runs</li>
<li>Major refactoring of the plugin, including moving majority of LLM-based test generation algorithm into a common module (to be used by other instances of plugin for other IDEs)</li>
</ul>
<h4>0.1.9</h4>
<ul>
<li>Model selection for JetBrains AI Assistant platform</li>
<li>Better user's request handling</li>
<li>Better default prompt</li>
<li>Fixed a minor bug in displaying number of passed tests</li>
<li>Test execution tasks will run in background now</li>
<li>Fixed a bug related to predicting if a prompt is larger than the maximum prompt size</li>
</ul>
<h4>0.1.8</h4>
<ul>
<li>Fixed Windows compatibility issues</li>
<li>Improve and refactor the test execution process</li>
</ul>
<h4>0.1.7</h4>
<ul>
<li>Fixed minor bugs and improve new test generation UI</li>
</ul>
<h4>0.1.6</h4>
<ul>
<li>New UI for requesting a test generation process</li>
<li>Users can now modify the prompt for each LLM-based request in the settings of the plugin</li>
<li>Added the usage guide window</li>
<li>Fixed some minor bugs</li>
<li>Add support build 233.*</li>
</ul>
<h4>0.1.5</h4>
<ul>
<li>Fix some minor bugs in LLM-based test generation process</li>
</ul>
<h4>0.1.4</h4>
<ul>
<li>New UI for test generation report</li>
<li>Add code highlighting and auto-completion for generated tests</li>
<li>Add Java code formatter for generated tests</li>
<li>Add direct user feedback to modify each generated test by LLM</li>
<li>Improve the test case execution process</li>
<li>Improve prompt generation</li>
</ul>
<h4>0.1.3</h4>
<ul>
<li>Add LLM-based test generation using Grazie platform in the settings</li>
<li>Fix compilation issue in LLM-based test generation</li>
<li>Fix Evosuite test generation freezing in case that a wrong java path is provided</li>
</ul>
<h4>0.1.2</h4>
<ul>
<li>Add LLM-based test generation using OpenAI platform</li>
<li>Add visualizing the result of tests executions</li>
<li>Improving user interaction with test cases</li>
<li>Changing the plugin's name</li>
<li>Fix bugs</li>
</ul>
<h4>0.1.1</h4>
<ul>
<li>Add LLM-based test generation for lines and methods</li>
<li>Add support for mocking-related annotations in generated tests</li>
<li>Smarter prompt generation to make sure that its number of tokens does not exceed the limits</li>
<li>Improve test parsing</li>
<li>Fix some major performance and functional bugs in interaction with Jacoco</li>
<li>code refactoring</li>
</ul>
<h4>0.1.0</h4>
<ul>
<li>Add LLM-based test generation using LLM platform</li>
<li>Add test execution and coverage information collector for tests generated by LLM</li>
<li>Add a feedback cycle between test compilation and LLM to ensure tests generated by LLM can be compiled</li>
<li>Better error handling</li>
</ul>
<h4>0.0.3</h4>
<ul>
<li>Fix some bugs</li>
</ul>
<h4>0.0.2</h4>
<ul>
<li>Improved test generation by aborting incomplete project builds and ensuring successful project builds before test generation begins</li>
<li>Catching Evosuite errors related to unknown classes by checking for incorrect input of .class files</li>
<li>Automatic creation of test files with the automatic addition includes and package lines</li>
<li>Error checking for target class initialization</li>
<li>Compatibility with IDEA 231.*</li>
<li>Add automated project build</li>
<li>Add compiled classes detector</li>
</ul>
]]>
</change-notes>
<depends>com.intellij.modules.platform</depends>
<depends>org.jetbrains.idea.maven</depends>
<depends>com.intellij.gradle</depends>
<!-- Plugin depends on the Kotlin support plugin that comes with org.jetbrains.kotlin.
This dependency is optional, which means plugin can run even if the Kotlin plugin is not available or not enabled.
This dependency will be loaded only when actually needed.
Moreover, we specify the configuration file to consider when the dependency is needed. -->
<depends
config-file="testgenie-kotlin.xml"
optional="true">
org.jetbrains.kotlin
</depends>
<!-- Plugin depends on the Java support plugin that comes with com.intellij.java.
This dependency is optional, which means plugin can run even if the Java plugin is not available or not enabled.
This dependency will be loaded only when actually needed.
Moreover, we specify the configuration file to consider when the dependency is needed. -->
<depends
config-file="testgenie-java.xml"
optional="true">
com.intellij.java
</depends>
<!-- Define an extension point for the plugin-->
<extensionPoints>
<extensionPoint
name="psiHelperProvider"
beanClass="com.intellij.lang.LanguageExtensionPoint"
dynamic="true">
<with attribute="implementationClass"
implements="org.jetbrains.research.testspark.langwrappers.PsiHelperProvider"/>
</extensionPoint>
</extensionPoints>
<!-- This is a temporary mechanism to mark the plugin as K2 compatible. -->
<extensions defaultExtensionNs="org.jetbrains.kotlin">
<supportsKotlinPluginMode supportsK2="true"/>
</extensions>
<extensions defaultExtensionNs="com.intellij">
<toolWindow id="TestSpark" secondary="true" anchor="right"
icon="org.jetbrains.research.testspark.display.TestSparkIcons.toolWindowIcon"
factoryClass="org.jetbrains.research.testspark.toolwindow.TestSparkToolWindowFactory"/>
<!-- Application-level services -->
<applicationService
serviceImplementation="org.jetbrains.research.testspark.services.LLMSettingsService"/>
<applicationService
serviceImplementation="org.jetbrains.research.testspark.services.PluginSettingsService"/>
<applicationService
serviceImplementation="org.jetbrains.research.testspark.services.EvoSuiteSettingsService"/>
<applicationService
serviceImplementation="org.jetbrains.research.testspark.services.KexSettingsService"/>
<!-- Configurables -->
<projectConfigurable
parentId="tools"
instance="org.jetbrains.research.testspark.settings.plugin.PluginSettingsConfigurable"
id="PluginSettings"
displayName="TestSpark"/>
<projectConfigurable
parentId="PluginSettings"
instance="org.jetbrains.research.testspark.settings.llm.LLMSettingsConfigurable"
id="LLMSettings"
displayName="Large Language Models"/>
<projectConfigurable
parentId="PluginSettings"
instance="org.jetbrains.research.testspark.settings.evosuite.EvoSuiteSettingsConfigurable"
id="EvoSuiteSettings"
displayName="EvoSuite"/>
<projectConfigurable
parentId="PluginSettings"
instance="org.jetbrains.research.testspark.settings.kex.KexSettingsConfigurable"
id="KexSettings"
displayName="Kex"/>
<!-- Notifications -->
<notificationGroup id="Execution Error"
displayType="BALLOON"/>
<notificationGroup id="EvoSuite Execution Error"
displayType="BALLOON"/>
<notificationGroup id="Build Execution Error"
displayType="BALLOON"/>
<notificationGroup id="LLM Execution Error"
displayType="BALLOON"/>
<notificationGroup id="Kex Execution Error"
displayType="BALLOON"/>
<notificationGroup id="UserInterface"
displayType="BALLOON"/>
<notificationGroup id="Compiler Error"
displayType="BALLOON"/>
</extensions>
<actions>
<!-- TestSpark actions -->
<action id="TestSpark.TestSparkActions" text="TestSpark" description="Actions related to TestSpark"
class="org.jetbrains.research.testspark.actions.TestSparkAction">
<add-to-group group-id="EditorPopupMenu" anchor="last"/>
</action>
</actions>
</idea-plugin>