mirror of
https://github.com/github/codeql.git
synced 2026-04-01 05:08:15 +02:00
42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
/**
|
|
* @id java/empty-method
|
|
* @name Empty method
|
|
* @description An empty method serves no purpose and makes code less readable. An empty method may
|
|
* indicate an error on the part of the developer.
|
|
* @kind problem
|
|
* @precision medium
|
|
* @problem.severity recommendation
|
|
* @tags correctness
|
|
* maintainability
|
|
* readability
|
|
* quality
|
|
* external/cwe/cwe-1071
|
|
*/
|
|
|
|
import java
|
|
|
|
/**
|
|
* A `Method` from source that is not abstract, and likely not a test method
|
|
*/
|
|
class NonAbstractSource extends Method {
|
|
NonAbstractSource() {
|
|
this.fromSource() and
|
|
not this.isAbstract() and
|
|
not this instanceof LikelyTestMethod
|
|
}
|
|
}
|
|
|
|
from NonAbstractSource m
|
|
where
|
|
//empty
|
|
not exists(m.getBody().getAChild()) and
|
|
//permit comment lines explaining why this is empty
|
|
m.getNumberOfCommentLines() = 0 and
|
|
//permit a javadoc above as well as sufficient reason to leave empty
|
|
not exists(m.getDoc().getJavadoc()) and
|
|
//annotated methods are considered compliant
|
|
not exists(m.getAnAnnotation()) and
|
|
//native methods have no body
|
|
not m.isNative()
|
|
select m, "Empty method found."
|