GodExpo: Automated God Structure Detection Tool for Golang

GodExpo: Automated God Structure Detection Tool for Golang
Slide Note
Embed
Share

GodExpo is an automated tool developed for detecting and analyzing the structure of God in Golang. The tool aims to streamline the process of identifying and managing God structures efficiently. With contributions from Rafed Muhammad Yasir, Moumita Asad, Asadullah Hill Galib, Kishan Kumar Ganguly, and Md, this tool offers a comprehensive solution for developers working with Golang projects.

  • Golang
  • Automated tool
  • God structure detection
  • Development

Uploaded on Mar 09, 2025 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. GodExpo GodExpo: An Automated : An Automated God God Structure Structure Detection Tool Detection Tool for for Golang Golang Rafed Muhammad Yasir, Moumita Asad, Asadullah Hill Galib, Kishan Kumar Ganguly, Md. Saeed Siddik Institute of Information Technology University of Dhaka

  2. Contents Contents About Golang Problem Definition Related Work Example of Golang Code Features of GodExpo Flowchart of GodExpo Findings Future Work 3/9/2025 2

  3. About About Golang Golang An open source programming language developed and maintained by Google [1] 3/9/2025 3

  4. Renowned Renowned Golang Golang Projects Projects 3/9/2025 4

  5. Companies Using Companies Using Golang Golang 3/9/2025 5

  6. Problem Definition Problem Definition As Golang s popularity increases, code smell detectiontool in Golang is crucially required for maintaining code quality [2]. This research focuses on God Class detectionof Golang God class exhibits high complexity, low cohesion and heavy access to foreign classes data [3] leads to defect and frequent change [4] violates the single responsibility principle - a class should have only one reason to change [3] 3/9/2025 6

  7. Related Work Related Work Jdeodorant [5] infusion [6] PMD [6] JSpIRIT [7] open source Eclipse plugin detects four code smells: God Class, God Method, Feature Envy, and Type Checking Commercial standalone tool detects God Class along with 21 other smells open source tool for Java detect various smells including God Class and God Method identifies and prioritizes ten code smells including God Class 3/9/2025 7

  8. No God Struct Detection Tool for Golang! 3/9/2025 8

  9. Example of Example of Golang Golang Code Code Struct Method Method receiver 3/9/2025 9

  10. Technique Technique C: WMC(C): ATFD(C): TCC(C): Class being inspected. Weighted Method Count Access to Foreign Data Tight Class Cohesion 3/9/2025 10

  11. Tight Class Cohesion (TCC) Tight Class Cohesion (TCC) NP(C): maximum possible number of direct or indirect connections in a class [8]. NDC(C): number of direct connections. 3/9/2025 11

  12. Flowchart of Flowchart of GodExpo GodExpo 3/9/2025 12

  13. Features of Features of GodExpo GodExpo GodExpo is a CLI tool that can- 1. Show struct summary 2. Find God Structs 3. Show evolution of God Structs across versions of a project 3/9/2025 13

  14. Show Show Struct Struct Summary Summary $ godExpo -f f i l e . go 3/9/2025 14

  15. Find God Find God Structs Structs $ godExpo -d d i r e c t o r y/ 3/9/2025 15

  16. Show Show Evolution Evolution of God across across Versions Versions of a P of God Structs of a Project roject Structs $ godExpo -e d i r e c t o r y/ 3/9/2025 16

  17. Other Flags Other Flags -wmc number : Set customized WMC threshold -atfd number : Set customized ATFD threshold -tcc number : Set customized TCC threshold 3/9/2025 17

  18. Dataset Description Dataset Description To evaluate the tool, it has been executed on seven different versions of two popular Go projects. 1. Hugo [9] a static HTML and CSS website generator written in Golang Average LOC 45K+ 2. Mattermost [10] an open source, private cloud, Slack-alternative. Average LOC 777K+ 3/9/2025 18

  19. Hugo statistics Hugo statistics Number of God Structures Detected Total Number of Structures 162 206 224 233 280 343 369 Project name Number of stars Version v0.20 v0.25 v0.30 v0.35 v0.40 v0.45 v0.50 4 5 4 7 7 8 7 31704 (as of Hugo 10 Jan 2019) 3/9/2025 19

  20. Hugo God Hugo God Structs Structs 3/9/2025 20

  21. Mattermost Mattermost statistics statistics Number of God Structures Detected Total Number of Structures 4626 4693 5151 5219 5238 5238 5611 Project name Number of stars Version v5.0.0 v5.1.0 v5.2.0 v5.3.0 v5.4.0 v5.5.0 v5.6.0 51 52 59 59 59 59 60 13886 (as of Mattermost 10 Jan 2019) 3/9/2025 21

  22. Mattermost Mattermost God God Structs Structs 3/9/2025 22

  23. Future Work Future Work Handling anonymous structs Providing refactoring suggestions 3/9/2025 23

  24. References References [1] The Go Project. Retrieved October 20, 2018, from https://golang.org/project/ [2] Paiva, T., Damasceno, A., Figueiredo, E., & SantAnna, C. (2017). On the evaluation of code smells and detection tools. Journal of Software Engineering Research and Development, 5(1), 7. [3] Martin, R. C. (2002). Agile software development: principles, patterns, and practices. Prentice Hall. [4] Olbrich, S. M., Cruzes, D. S., & Sjoberg, D. I. (2010, September). Are all code smells harmful? A study of God Classes and Brain Classes in the evolution of three open source systems. 2010 IEEE International Conference on Software Maintenance (ICSM) (pp. 1-10). IEEE. 3/9/2025 24

  25. References References [5] Tsantalis, N., Chaikalis, T., & Chatzigeorgiou, A. (2008, April). JDeodorant: Identification and removal of type-checking bad smells. In 12th European Conference on Software Maintenance and Reengineering (CSMR) 2008. (pp. 329-331). IEEE. [6] Paiva, T., Damasceno, A., Figueiredo, E., & SantAnna, C. (2017). On the evaluation of code smells and detection tools. Journal of Software Engineering Research and Development, 5(1), 7. [7] Vidal, S., Vazquez, H., Diaz-Pace, J. A., Marcos, C., Garcia, A., & Oizumi, W. (2015, November). JSpIRIT: a flexible tool for the analysis of code smells. In 34th International Conference of the Chilean Computer Science Society (SCCC)(pp. 1-6). IEEE. 3/9/2025 25

  26. References References [8] Bieman, J. M., & Kang, B.-K. (1995). Cohesion and Reuse in an Object-Oriented System. Proc. Int l Symp. Software Reusability, (259- 262). [9] Hugo. Retrieved January 19, 2019, from https://github.com/gohugoio/hugo [10] Mattermost. Retrieved January 19, 2019, from https://github.com/mattermost/mattermost-server 3/9/2025 26

  27. Demonstration Demonstration

  28. Thank You Thank You

Related


More Related Content