integrated-application-development / integrated-application-development/sonar-delphi

New Rule: Class method should not be invoked from an object instance

Open
#303 2 comments 0 reactions 0 assignees View on GitHub
feature rule
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.