pi-lens
Version:
Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo
61 lines (49 loc) • 1.22 kB
YAML
# No Clone Override
# Detects classes that override the clone() method
id: no-clone-override
name: Clone Should Not Be Overridden
severity: warning
category: reliability
defect_class: correctness
inline_tier: blocking
language: java
message: "clone() should not be overridden — use copy constructor instead"
description: |
Overriding clone() is error-prone due to shallow copy issues and
complex inheritance. Use copy constructors or factory methods instead.
✅ FIX: Implement a copy constructor
```java
public class Person {
private String name;
public Person(Person other) {
this.name = other.name;
}
}
```
query: |
(method_declaration
name: (identifier) (#eq? "clone")
parameters: (formal_parameters) )
metavars:
- NAME
- PARAMS
tags:
- reliability
- java
- cloning
- best-practice
examples:
bad: |
class MyClass implements Cloneable {
public Object clone() { // BAD - override
// ...
}
}
good: |
class MyClass {
public MyClass(MyClass other) { // GOOD - copy constructor
this.field = other.field;
}
}
has_fix: false