Files
clang-p2996/clang/test/Analysis/copypaste/sub-sequences.cpp
Artem Dergachev ba816326f3 [analyzer] Add basic capabilities to detect source code clones.
This patch adds the CloneDetector class which allows searching source code
for clones.

For every statement or group of statements within a compound statement,
CloneDetector computes a hash value, and finds clones by detecting
identical hash values.

This initial patch only provides a simple hashing mechanism
that hashes the kind of each sub-statement.

This patch also adds CloneChecker - a simple static analyzer checker
that uses CloneDetector to report copy-pasted code.

Patch by Raphael Isemann!

Differential Revision: https://reviews.llvm.org/D20795

llvm-svn: 276782
2016-07-26 18:13:12 +00:00

28 lines
567 B
C++

// RUN: %clang_cc1 -analyze -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -verify %s
// This tests if sub-sequences can match with normal sequences.
void log2(int a);
void log();
int max(int a, int b) {
log2(a);
log(); // expected-warning{{Detected code clone.}}
if (a > b)
return a;
return b;
}
int maxClone(int a, int b) {
log(); // expected-note{{Related code clone is here.}}
if (a > b)
return a;
return b;
}
// Functions below are not clones and should not be reported.
int foo(int a, int b) { // no-warning
return a + b;
}