Skip to main content

similarity_core/
lib.rs

1#![allow(clippy::uninlined_format_args)]
2
3pub mod apted;
4pub mod ast_exchange;
5pub mod ast_fingerprint;
6pub mod class_comparator;
7pub mod class_extractor;
8pub mod config_loader;
9pub mod css_structure_adapter;
10pub mod enhanced_similarity;
11pub mod fast_similarity;
12pub mod function_extractor;
13pub mod generic_overlap_detector;
14pub mod generic_parser_config;
15pub mod generic_tree_sitter_parser;
16mod ignore_directive;
17pub mod language_parser;
18pub mod overlap_detector;
19pub mod parser;
20pub mod rust_structure_adapter;
21pub mod structure_comparator;
22pub mod subtree_fingerprint;
23pub mod tree;
24pub mod tsed;
25pub mod type_comparator;
26pub mod type_extractor;
27pub mod type_fingerprint;
28pub mod type_normalizer;
29pub mod typescript_structure_adapter;
30pub mod unified_type_comparator;
31
32// CLI utilities
33pub mod cli_file_utils;
34pub mod cli_output;
35pub mod cli_parallel;
36
37pub use apted::{compute_edit_distance, APTEDOptions};
38pub use enhanced_similarity::{
39    calculate_enhanced_similarity, calculate_semantic_similarity, EnhancedSimilarityOptions,
40};
41pub use function_extractor::{
42    compare_functions, extract_functions, find_similar_functions_across_files,
43    find_similar_functions_in_file, FunctionDefinition, FunctionType, SimilarityResult,
44};
45pub use parser::{ast_to_tree_node, parse_and_convert_to_tree};
46pub use tree::TreeNode;
47pub use tsed::{
48    calculate_tsed, calculate_tsed_from_code, calculate_tsed_with_threshold, TSEDOptions,
49};
50
51// Type-related exports
52pub use type_comparator::{
53    compare_type_literal_with_type, compare_types, find_duplicate_types,
54    find_similar_type_literals, find_similar_type_literals_pairs, find_similar_types,
55    group_similar_types, MatchedProperty, SimilarTypePair, TypeComparisonOptions,
56    TypeComparisonResult, TypeDifferences, TypeLiteralComparisonPair, TypeMismatch,
57};
58pub use type_extractor::{
59    extract_type_literals_from_code, extract_type_literals_from_files, extract_types_from_code,
60    extract_types_from_files, PropertyDefinition, TypeDefinition, TypeKind, TypeLiteralContext,
61    TypeLiteralDefinition,
62};
63pub use type_normalizer::{
64    calculate_property_similarity, calculate_type_similarity, find_property_matches,
65    normalize_type, NormalizationOptions, NormalizedType, PropertyMatch,
66};
67pub use unified_type_comparator::{
68    find_similar_unified_types, find_similar_unified_types_structured, UnifiedType,
69    UnifiedTypeComparisonPair,
70};
71
72// Structure comparator exports
73pub use css_structure_adapter::{CssBatchComparator, CssStructDef, CssStructureComparator};
74pub use rust_structure_adapter::{
75    RustEnumDef, RustFieldDef, RustStructDef, RustStructureComparator, RustVariantDef,
76    RustVariantType,
77};
78pub use structure_comparator::{
79    compute_structure_fingerprint, should_compare_fingerprints, ComparisonOptions,
80    MemberComparisonStrategy, MemberMatch, SourceLocation, Structure, StructureComparator,
81    StructureComparisonResult, StructureDifferences, StructureIdentifier, StructureKind,
82    StructureMember, StructureMetadata,
83};
84pub use typescript_structure_adapter::{BatchComparator, TypeScriptStructureComparator};
85
86// Fast similarity exports
87pub use ast_fingerprint::AstFingerprint;
88pub use fast_similarity::{
89    find_similar_functions_across_files_fast, find_similar_functions_fast, FastSimilarityOptions,
90};
91
92// Subtree fingerprint exports
93pub use subtree_fingerprint::{
94    create_sliding_windows, detect_partial_overlaps, generate_subtree_fingerprints,
95    IndexedFunction, OverlapOptions, PartialOverlap, SubtreeFingerprint,
96};
97
98// Overlap detector exports
99pub use overlap_detector::{
100    find_function_overlaps, find_overlaps_across_files, find_overlaps_with_similarity,
101    DetailedOverlap, PartialOverlapWithFiles,
102};
103
104// Generic overlap detector exports
105pub use generic_overlap_detector::{
106    find_function_overlaps_generic, find_overlaps_across_files_generic,
107    find_overlaps_with_similarity_generic, DetailedOverlap as GenericDetailedOverlap,
108    PartialOverlapWithFiles as GenericPartialOverlapWithFiles,
109};
110
111// Class-related exports
112pub use class_comparator::{
113    compare_classes, find_similar_classes, find_similar_classes_across_files, normalize_class,
114    ClassComparisonResult, ClassDifferences, MethodMismatch, NormalizedClass, PropertyMismatch,
115    SimilarClassPair,
116};
117pub use class_extractor::{
118    extract_classes_from_code, extract_classes_from_files, ClassDefinition, ClassMethod,
119    ClassProperty, MethodKind,
120};
121pub use config_loader::ConfigLoader;
122
123#[cfg(test)]
124mod structure_comparator_tests;