Create rule S6745(java): Detection of the Local Butterfly object dependencies anti-pattern (#3007)

This commit is contained in:
github-actions[bot] 2023-09-26 15:48:40 +02:00 committed by GitHub
parent 51e34f4a2f
commit 077b76f3ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 52 additions and 0 deletions

View 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"
}
}

View 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.

View File

@ -0,0 +1,2 @@
{
}