mirror of
https://github.com/github/codeql.git
synced 2025-12-20 02:44:30 +01:00
Will need subsequent PRs fixing up test failures (due to deprecated methods moving around), but other than that everything should be straight-forward.
27 lines
682 B
Plaintext
27 lines
682 B
Plaintext
/**
|
|
* @name DuplicateStatements
|
|
* @description Insert description here...
|
|
* @kind problem
|
|
* @problem.severity warning
|
|
*/
|
|
|
|
import python
|
|
import external.CodeDuplication
|
|
|
|
predicate mostlyDuplicateFunction(Function f) {
|
|
exists(int covered, int total, Function other, int percent |
|
|
duplicateStatements(f, other, covered, total) and
|
|
covered != total and
|
|
total > 5 and
|
|
covered * 100 / total = percent and
|
|
percent > 80 and
|
|
not exists(Scope s | s = f.getScope*() | duplicateScopes(s, _, _, _))
|
|
)
|
|
}
|
|
|
|
from Stmt s
|
|
where
|
|
mostlyDuplicateFunction(s.getScope()) and
|
|
not duplicateStatement(s.getScope(), _, s, _)
|
|
select s.toString(), s.getLocation().toString()
|