{"title":"graphhifyevolution——分析源代码历史的模块化方法","authors":"Kristiina Rahkema, Dietmar Pfahl","doi":"10.1109/MobileSoft52590.2021.00009","DOIUrl":null,"url":null,"abstract":"The analysis of mobile applications has gained popularity in recent years. Multiple tools have been developed to find code smells in mobile applications. To analyse code evolution of mobile applications researchers have mostly written scripts to parse repository histories and apply existing code smell tools for each commit. Some specialised tools have been developed for analysing code smell histories but they only apply one specific method of finding code smells. We developed a modular and extendable tool called GraphifyEvolution that makes it possible to analyse code repositories by analysing changes in each commit and saving the application structure, including all changes, into a Neo4j graph database. We built the tool with Swift applications in mind, especially iOS applications and frameworks, but due to its modular nature it is possible to add support for other languages easily. Implementing analysers that allow for running external analysis tools for each commit and inserting the results into the application database are also possible. Combining information on the structure of applications and its evolution with results from external code analysis tools helps answer a multitude of research questions. Given its modular nature, we hope that our tool will be useful to researchers who wish to analyse source code histories. We have currently implemented support for the languages Swift, Java, C++ and for the external tools jscpd (code duplicate scanner) and insider (vulnerability scanner).","PeriodicalId":257528,"journal":{"name":"2021 IEEE/ACM 8th International Conference on Mobile Software Engineering and Systems (MobileSoft)","volume":"238 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2021-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"3","resultStr":"{\"title\":\"GraphifyEvolution - A Modular Approach to Analysing Source Code Histories\",\"authors\":\"Kristiina Rahkema, Dietmar Pfahl\",\"doi\":\"10.1109/MobileSoft52590.2021.00009\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The analysis of mobile applications has gained popularity in recent years. Multiple tools have been developed to find code smells in mobile applications. To analyse code evolution of mobile applications researchers have mostly written scripts to parse repository histories and apply existing code smell tools for each commit. Some specialised tools have been developed for analysing code smell histories but they only apply one specific method of finding code smells. We developed a modular and extendable tool called GraphifyEvolution that makes it possible to analyse code repositories by analysing changes in each commit and saving the application structure, including all changes, into a Neo4j graph database. We built the tool with Swift applications in mind, especially iOS applications and frameworks, but due to its modular nature it is possible to add support for other languages easily. Implementing analysers that allow for running external analysis tools for each commit and inserting the results into the application database are also possible. Combining information on the structure of applications and its evolution with results from external code analysis tools helps answer a multitude of research questions. Given its modular nature, we hope that our tool will be useful to researchers who wish to analyse source code histories. We have currently implemented support for the languages Swift, Java, C++ and for the external tools jscpd (code duplicate scanner) and insider (vulnerability scanner).\",\"PeriodicalId\":257528,\"journal\":{\"name\":\"2021 IEEE/ACM 8th International Conference on Mobile Software Engineering and Systems (MobileSoft)\",\"volume\":\"238 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2021-05-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"3\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2021 IEEE/ACM 8th International Conference on Mobile Software Engineering and Systems (MobileSoft)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/MobileSoft52590.2021.00009\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2021 IEEE/ACM 8th International Conference on Mobile Software Engineering and Systems (MobileSoft)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/MobileSoft52590.2021.00009","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
GraphifyEvolution - A Modular Approach to Analysing Source Code Histories
The analysis of mobile applications has gained popularity in recent years. Multiple tools have been developed to find code smells in mobile applications. To analyse code evolution of mobile applications researchers have mostly written scripts to parse repository histories and apply existing code smell tools for each commit. Some specialised tools have been developed for analysing code smell histories but they only apply one specific method of finding code smells. We developed a modular and extendable tool called GraphifyEvolution that makes it possible to analyse code repositories by analysing changes in each commit and saving the application structure, including all changes, into a Neo4j graph database. We built the tool with Swift applications in mind, especially iOS applications and frameworks, but due to its modular nature it is possible to add support for other languages easily. Implementing analysers that allow for running external analysis tools for each commit and inserting the results into the application database are also possible. Combining information on the structure of applications and its evolution with results from external code analysis tools helps answer a multitude of research questions. Given its modular nature, we hope that our tool will be useful to researchers who wish to analyse source code histories. We have currently implemented support for the languages Swift, Java, C++ and for the external tools jscpd (code duplicate scanner) and insider (vulnerability scanner).