In software engineering, an anti-pattern is a pattern that seems to work but is counter-productive and far from optimal in practice. An anti-pattern can easily result in unmaintainable and error-prone solutions. Usually, anti-patterns emerge over a period of time when new functionality is added incrementally without a focus on continuous refactoring. Maintenance of code by different developers over a period of time often compounds the problem.


Anti-patterns and languages supported

Here is the list of anti-patterns and the languages they are detected in:

Anti-pattern LanguageLevel
God ClassJava, C, C++, C#, Objective_C, TypescriptComponents
Shotgun SurgeryJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Feature EnvyJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Global HubJava, C, C++, C#, Objective_C, TypescriptComponents
Local BreakableJava, C, C++, C#, Objective_C, TypescriptComponents
Global BreakableJava, C, C++, C#, Objective_C, TypescriptComponents
Dispersed CouplingJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Brain MethodJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Local ButterflyJava, C, C++, C#, Objective_C, TypescriptComponents
Intensive CouplingJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Brain ClassJava, C, C++, C#, Objective_C, TypescriptComponents
Global ButterflyJava, C, C++, C#, Objective_C, TypescriptComponents
Solution SprawlC, C++, C#Components
Fat InterfaceJava, C, C++, C#, Objective_C, TypescriptComponents
Message ChainJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Fan OutJava, C, C++, C#, Objective_C, TypescriptSubcomponents
DecapsulationC, C++Subcomponents
Unused MethodJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Format ExposureC, C++Subcomponents
Data ExposureC, C++Subcomponents
Global VariableC, C++, PythonSubcomponents
Test HungryJava, C, C++, C#, Objective_C, TypescriptSubcomponents
Monster FileJavascript, PythonSubcomponents
Nested FunctionJavascript, PythonSubcomponents
Nested ClosureJavascriptSubcomponents
Promise Anomaly (Beta)JavascriptSubcomponents
Markup in JSJavascriptSubcomponents
Dispersed Variable Decl In FuncJavascriptSubcomponents
Direct Cyclic DependencyJava, C#, Objective_C, TypescriptComponents
File CouplingJavascript, PythonSubcomponents