Create rule S6745(java): Detection of the Local Butterfly object dependencies anti-pattern (#3007)
This commit is contained in:
parent
51e34f4a2f
commit
077b76f3ab
25
rules/S6745/java/metadata.json
Normal file
25
rules/S6745/java/metadata.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"title": "Detection of the Local Butterfly object dependencies anti-pattern",
|
||||
"type": "CODE_SMELL",
|
||||
"status": "ready",
|
||||
"remediation": {
|
||||
"func": "Constant\/Issue",
|
||||
"constantCost": "5min"
|
||||
},
|
||||
"tags": [
|
||||
],
|
||||
"defaultSeverity": "Info",
|
||||
"ruleSpecification": "RSPEC-6745",
|
||||
"sqKey": "S6745",
|
||||
"scope": "All",
|
||||
"defaultQualityProfiles": ["Sonar way"],
|
||||
"quickfix": "infeasible",
|
||||
"code": {
|
||||
"impacts": {
|
||||
"MAINTAINABILITY": "LOW",
|
||||
"RELIABILITY": "LOW",
|
||||
"SECURITY": "LOW"
|
||||
},
|
||||
"attribute": "CONVENTIONAL"
|
||||
}
|
||||
}
|
25
rules/S6745/java/rule.adoc
Normal file
25
rules/S6745/java/rule.adoc
Normal file
@ -0,0 +1,25 @@
|
||||
Local Butterfly is a structural anti-pattern for a component with many immediate dependents.
|
||||
The scope of dependents is limited to immediate dependents that directly access, use, reference, or contain the Local Butterfly.
|
||||
|
||||
These issues arise from the tight coupling between the component and its dependents, which can lead to a lack of flexibility, maintainability, and scalability in the system.
|
||||
|
||||
== Why is this an issue?
|
||||
|
||||
Any changes or modifications to the component with a large number of immediate dependents may require updates in multiple places.
|
||||
This can make it challenging to introduce new features or make changes without impacting the entire system.
|
||||
The lack of flexibility can hinder adapting to evolving requirements or business needs.
|
||||
|
||||
The tight coupling between the component and its immediate dependents can make the codebase more complex and harder to understand.
|
||||
This can lead to difficulties in maintaining and debugging the system.
|
||||
When a change is required, it may be challenging to identify all the affected areas, increasing the risk of introducing bugs or unintended side effects.
|
||||
|
||||
As the number of immediate dependents increases, the component's scalability can be compromised.
|
||||
|
||||
Only basic Interfaces or utility classes should be allowed to become Local Butterflies.
|
||||
|
||||
== How to fix it
|
||||
|
||||
To mitigate these issues, it is recommended to consider alternative design patterns that promote loose coupling and separation of concerns.
|
||||
By decoupling the component from its immediate dependents, such as using interfaces or abstractions, it becomes easier to modify, maintain, and test the system.
|
||||
This promotes better flexibility, maintainability, and scalability in the long run.
|
||||
|
2
rules/S6745/metadata.json
Normal file
2
rules/S6745/metadata.json
Normal file
@ -0,0 +1,2 @@
|
||||
{
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user