findClones method
Finds potential clones for a function.
Implementation
Future<List<CloneCandidate>> findClones(
String functionId,
String code,
) async {
final encoding = _tokenizer.encode(code);
final embedding = await _runtime.getEmbedding(encoding.ids);
final candidates = <CloneCandidate>[];
for (final entry in _embeddings.entries) {
if (entry.key == functionId) continue;
final similarity = OnnxRuntime.cosineSimilarity(embedding, entry.value);
if (similarity >= _similarityThreshold) {
candidates.add(CloneCandidate(
functionId: entry.key,
similarity: similarity,
));
}
}
// Sort by similarity descending
candidates.sort((a, b) => b.similarity.compareTo(a.similarity));
return candidates;
}