integrated-application-development / integrated-application-development/sonar-delphi
New Rule: Class method should not be invoked from an object instance
- Dominant language
- Java
- Stars
- 159
- Forks
- 31
- Avg merge
- 5d 4h
- Merged PRs (30d)
- 4
Description
### Prerequisites
- [X] This rule has not already been suggested.
- [X] This should be a new rule, not an improvement to an existing rule.
- [X] This rule would be generally useful, not specific to my code or setup.
### Suggested rule title
Class method should not be invoked from an object instance
### Rule description
Calling a class method from an object instance would mislead reader that the method is an object method and may affect the object itself. Call class method using class name as prefix.
### Rationale
```delphi
// class declaration and implemeantion
type
TFoo = class(TObject)
public
class procedure Bar;
end;
implementation
class procedure TFoo.Bar;
begin
// do something
end;
// calling
var
FooObj: TFoo;
begin
FooObj := TFoo.Create;
FooObj.Bar; // non-compliant
TFoo.Bar; // compliant
end.
```
Contributor guide
Assessment
This issue has not been assessed yet.