findClones method

Future<List<CloneCandidate>> findClones(
  1. String functionId,
  2. String code
)

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;
}