Skip to main content
zenodoopen

Artifacts of the TOSEM Submission Mario

<p>This is the online repository of <em><strong>Mario</strong></em>, a journal-first paper under review by ACM TOSEM.</p> <p>&nbsp;</p> <p><strong>Dataset:&nbsp;</strong>The dataset used in our study are all open-sourced. We provide the links to them below.</p> <ul> <li>Empirical dataset -- collected by Liu et al. (<a href="https://github.com/TruX-DTF/debug-method-name">here</a>)</li> <li>Evaluation dataset -- collected by Alon et al. (<a href="https://github.com/tech-srl/code2seq">here</a>)</li> </ul> <p>&nbsp;</p> <p><strong>Source code: </strong>We release three files here.</p> <ol> <li><em>Transformer.py:</em> This is the Transformer model used in <em><strong>Mario</strong></em>&nbsp;which is implemented in Pytorch.&nbsp;</li> <li><em>evaluation.py:</em> This file shows the workflow of&nbsp;<em><strong>Mario</strong></em> and calculates the overall performance of it.</li> <li><em>prior_knowledge.json:</em> This file stores the prior knowledge extracted from our empirical dataset for predicting field-relevant method names to unique fields.</li> </ol> <p>We will build a homepage for&nbsp;<em><strong>Mario</strong>&nbsp;</em>on Github and release the whole project upon acceptance.</p> <p>&nbsp;</p> <p><strong>Explanation of Figure3b:</strong></p> <p>In our experiment, we find that&nbsp;<span class="math-tex">\(\overline{\mathbb{S}_{M}}\)</span>&nbsp;is slightly higher than&nbsp;<span class="math-tex">\(\overline{\mathbb{S}_{T}}\)</span>. Through our manual observation, we find that it happens because tokens composing the investigated method names are repetitive. In the following, we give a&nbsp;concrete example.</p> <p>For the ErrorsTag.java class of <a href="https://github.com/apache/struts">Apache struts1</a> project, it contains 12 field-relevant method names obtained by combining the Verbs = {<em>get</em>, <em>set</em>} and the Fields = {<em>bundle</em>, <em>footer</em>, <em>locale</em>, <em>name</em>, <em>property</em>, <em>header</em>} in pairs. When&nbsp;<span class="math-tex">\(\alpha\)</span>&nbsp;= 0.5, its proximate classes totally have 14 field-relevant method names composed by the above 12 ones plus with&nbsp;<em>prepareName</em> and <em>createLocale</em>. Under such a condition, the Jaccard similarity of the&nbsp;method name level is 0.857 (12/14), higher than that of the token level which is 0.8 (8/10).</p> <p>&nbsp;</p> <p><strong>User Study:</strong></p> <p>We release the queries from the developers and the predictions of Mario in our user study. Note that due to the confidential policy, we only show the last two&nbsp;words of the full qualified class name for each query.</p> <p>&nbsp;</p> <p>***.impl.MarketService.java: {Init, set config file name, parse config, get config, get config file name}</p> <p>***.user.UserController.java: {Login, register, logout, delete role, find roles, create admin user, is login, get user by username, find permissions expired}</p> <p>***.db.Bot.java: {Respond, create kernel handler, init}</p> <p>***.controller.LoginController.java: {On click, show login form, login, logout}</p> <p>***.controller.UserController.java: {Delete user, save user, get user by id, get customer users, serve user, send activation email, get activation link, set passward}</p> <p>***.login.LoginService.java: {Login, logout, login with scm, get authentication}</p> <p>***.dto.ClientLoginDto.java: {To string, get topology}</p> <p>***.impl.IdaasServiceImpl.java: {Get mapper id, execute, get job id}</p> <p>***.router.DBRouterJoinPoint.java: {Materialize string, to string infix,&nbsp;get id}</p> <p>***.aspect.LogAspect.java: {Log to db, do before, do around, do after returning, do after in service layer, web service}</p> <p>***.service.DocService.java: {Get project docs, add enum doc strings, search docs, service added, add exception doc strings, doc values string, find supported services, copy of docs}</p> <p>***.dataclean.convertMessageStructureService.java: {Start up, delete, add module, list types, get type, shut down, delete all, list modules}</p> <p>***.dataclean.messageRouteAndSendService.java: {On bind, on create, on destroy, send message, on start command, handle message, configure, get error message}</p> <p>***.addresssimilarity.addressSimilarityService.java: {Delete, get hosted connection, start limited on connection, notify, opened change, on disconnected list changed, create, on initialize, on map changed}</p>

ShareScore

36/100

Overall dataset sharing score

Score breakdown

These five areas show where the dataset supports — or may limit — practical reuse.

Stewardship
4
Harmonization
4
Access
20
Reuse readiness
8
Engagement
0