-
Notifications
You must be signed in to change notification settings - Fork 0
Home
CodeSmell is a tool for detecting and visualizing code smells for object-oriented languages, primarily Java. Code smells are a costly infection in source code which can cause further damage as development progresses if not properly addressed early on. This tool aims to aid in detecting these smells and notifying the user of potential areas to direct their focus on by analyzing a set of 9 smells.
Code Smell Name | Description |
---|---|
Feature Envy | A class that accesses other class data more often than its own [1]. |
God Class | A class that has too many responsibilities, or is just too large [2]. |
ISPViolation | Implementors of an interface selectively fail to realize all defined methods [3]. |
Inappropriate Intimacy | One classes use the internal fields and methods of another class [4]. |
Lazy Class | A class that is underused [5]. |
Misplaced Class | A class that needs the classes from other packages more than those from its own package [1]. |
Orphan Variable | A collection of constants that belong in a different class than the class they are defined within [6]. |
Refused Bequest | A class that does not use all of its inherited properties from its superclass [7]. |
Shotgun Surgery | A feature whose behavior is defined in many different classes and methods, making it difficult to modify [1]. |
Name | Project Contributions |
---|---|
Golan Hassin | Lazy, Misplaced Class, Parser, GUI Code Smell Display. Relevant Pull Requests Relevant Kanban Tasks |
Visakan Kirubakaran | Maven, Joern Integration (Data Retrieval and Handling, Logging and Error Handling Joern Query), RelationshipManager, PackageManager, StatTracker, Inappropriate Intimacy, Refused Bequest, Orphan Variable, Parser. Relevant Pull Requests Relevant Kanban Tasks |
Sabin Plaiasu | God Class, ISP Violation, Frontend, Overall System Architecture, LayoutManager, Parser, Joern Integration (Serialization/Deserialization Handling, Server Refactor). Relevant Pull Requests Relevant Kanban Tasks |
Martin Rivard | Feature Envy, Shotgun Surgery, LayoutManager. Relevant Pull Requests Relevant Kanban Tasks |
[1]. Yamashita, A. and Moonen, L., 2022. Exploring the Impact of Inter-smell Relations on Software Maintainability: An Empirical Study. [online] Simula.no. Available at: https://www.simula.no/sites/default/files/publications/Simula.simula.1508.pdf [Accessed 18 October 2022].
[2] Abbes M, Khomh F, Guéhéneuc Y-G, Antoniol G: An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension. In Proc. of 15th European Conference on Software Maintenance and Reengineering (CSMR). IEEE, Oldenburg, Germany. Available: https://jserd.springeropen.com/articles/10.1186/s40411-014-0011-9 [Accessed 18 October 2022].
[3]. Madasu, Vamsi & Venna, Trinadh & Eltaeib, Tarik. (2015). SOLID Principles in Software Architecture and Introduction to RESM Concept in OOP. Journal of Engineering Science and Technology. 2. 3159-40. Available at: https://www.researchgate.net/publication/273451390_SOLID_Principles_in_Software_Architecture_and_Introduction_to_RESM_Concept_in_OOP [Accessed 18 October 2022].
[4]. “Inappropriate intimacy” Refactoring.Guru. [Online]. Available: https://refactoring.guru/smells/inappropriate-intimacy. [Accessed: 16-Oct-2022].
[5]. Douch, G., 2022. Lazy Class. [online] Code Smells. Available at: https://code-smells.com/dispensables/lazy-class#:~:text=Lazy%20Class%20smells%20represent%20classes,code%20smell%20to%20Large%20Class. [Accessed 15 October 2022]
[6]. J. Au-Yeung, “Code smells in JavaScript classes,” Medium, 12-Feb-2020. [Online]. Available: https://betterprogramming.pub/javascript-code-smells-classes-93f15551fa9a.[Accessed: 06-Dec-2022].
[7]. “Refused bequest” Refactoring.Guru. [Online]. Available: https://refactoring.guru/smells/refused-bequest. [Accessed: 16-Oct-2022].
CodeSmell Wiki
- Home Page
- Setup and Installation
- Running the CodeSmell tool
- Troubleshooting
- Acknowledgements & License
Milestone Progress for CodeSmell [Group #61]