@@ -54,6 +54,27 @@ Advanced semantic analysis engine that provides comprehensive symbol resolution,
5454 - Dependency hotspot identification
5555- ** Cross-file dependency tracking** with import graph construction
5656
57+ ### 🔍 ** Function Signature Extraction and Analysis**
58+ - ** Comprehensive signature extraction** :
59+ - Enhanced function signatures with detailed metadata
60+ - Parameter analysis with type information and annotations
61+ - Generic parameter extraction with bounds and variance
62+ - Return type analysis with complex type support
63+ - ** Function classification and analysis** :
64+ - Function type detection (method, constructor, getter/setter, etc.)
65+ - Visibility and modifier extraction
66+ - Complexity metrics calculation (cyclomatic, cognitive, nesting depth)
67+ - Dependency tracking (function calls, variable access)
68+ - ** Advanced similarity comparison** :
69+ - Weighted similarity scoring (name 40%, parameters 30%, return type 20%, modifiers 10%)
70+ - Exact match detection via signature hashing
71+ - Normalized matching for refactoring detection
72+ - Cross-language signature normalization
73+ - ** Overload detection and analysis** :
74+ - Function overload grouping and analysis
75+ - Parameter variation tracking
76+ - API evolution support
77+
5778### 🎯 ** Scope Management**
5879- ** Hierarchical scope resolution** (global → file → class → function → block)
5980- ** Symbol shadowing detection** and resolution
@@ -268,6 +289,99 @@ for hotspot in &analysis.hotspots {
268289}
269290```
270291
292+ ### Function Signature Extraction and Analysis
293+
294+ ``` rust
295+ use smart_diff_semantic :: {
296+ FunctionSignatureExtractor , FunctionSignatureConfig ,
297+ FunctionType , Visibility
298+ };
299+
300+ // Create function signature extractor
301+ let config = FunctionSignatureConfig {
302+ include_private : true ,
303+ include_static : true ,
304+ include_abstract : true ,
305+ include_constructors : true ,
306+ include_accessors : true ,
307+ normalize_parameter_names : false ,
308+ extract_complexity_metrics : true ,
309+ max_parameter_count : 20 ,
310+ };
311+
312+ let mut extractor = FunctionSignatureExtractor :: new (Language :: Java , config );
313+
314+ // Extract function signatures
315+ let extraction_result = extractor . extract_signatures (" MyClass.java" , & parse_result )? ;
316+
317+ // Analyze extracted signatures
318+ for signature in & extraction_result . signatures {
319+ println! (" Function: {} ({})" , signature . name, format! (" {:?}" , signature . function_type));
320+ println! (" Qualified name: {}" , signature . qualified_name);
321+ println! (" Visibility: {:?}" , signature . visibility);
322+ println! (" Parameters: {}" , signature . parameters. len ());
323+ println! (" Return type: {}" , signature . return_type. to_string ());
324+
325+ if let Some (metrics ) = & signature . complexity_metrics {
326+ println! (" Complexity: cyclomatic={}, cognitive={}, loc={}" ,
327+ metrics . cyclomatic_complexity,
328+ metrics . cognitive_complexity,
329+ metrics . lines_of_code);
330+ }
331+ }
332+
333+ // Compare function signatures
334+ let similarity = extractor . calculate_similarity (& signature1 , & signature2 );
335+ println! (" Overall similarity: {:.3}" , similarity . overall_similarity);
336+ println! (" Name similarity: {:.3}" , similarity . name_similarity);
337+ println! (" Parameter similarity: {:.3}" , similarity . parameter_similarity);
338+ println! (" Is potential match: {}" , similarity . is_potential_match);
339+
340+ // Find similar functions
341+ let similar_functions = extractor . find_similar_functions (
342+ & target_signature ,
343+ & all_signatures ,
344+ 0.7 // minimum similarity threshold
345+ );
346+
347+ for (similar_func , similarity ) in similar_functions {
348+ println! (" Similar function: {} (similarity: {:.3})" ,
349+ similar_func . name,
350+ similarity . overall_similarity);
351+ }
352+
353+ // Detect exact matches and potential renames
354+ let exact_matches = extractor . find_exact_matches (& target_signature , & all_signatures );
355+ let potential_renames = extractor . find_potential_renames (& target_signature , & all_signatures );
356+ ```
357+
358+ ### Function Signature Statistics
359+
360+ ``` rust
361+ // Get extraction statistics
362+ let stats = & extraction_result . extraction_stats;
363+ println! (" Extraction Statistics:" );
364+ println! (" Total functions: {}" , stats . total_functions);
365+ println! (" Public functions: {}" , stats . public_functions);
366+ println! (" Private functions: {}" , stats . private_functions);
367+ println! (" Static functions: {}" , stats . static_functions);
368+ println! (" Abstract functions: {}" , stats . abstract_functions);
369+ println! (" Constructors: {}" , stats . constructors);
370+ println! (" Overloaded functions: {}" , stats . overloaded_functions);
371+ println! (" Generic functions: {}" , stats . generic_functions);
372+ println! (" Complex functions: {}" , stats . complex_functions);
373+
374+ // Analyze overloaded functions
375+ for (name , overloads ) in & extraction_result . overloaded_functions {
376+ if overloads . len () > 1 {
377+ println! (" Overloaded function '{}' has {} variants:" , name , overloads . len ());
378+ for (i , overload ) in overloads . iter (). enumerate () {
379+ println! (" {}. {} parameters" , i + 1 , overload . parameters. len ());
380+ }
381+ }
382+ }
383+ ```
384+
271385## Configuration
272386
273387### SymbolResolverConfig
@@ -412,6 +526,23 @@ This demonstrates:
412526- Dependency hotspot identification
413527- Cross-file dependency tracking
414528
529+ ### Function Signature Demo
530+
531+ Run the comprehensive function signature extraction demo:
532+
533+ ``` bash
534+ cargo run --example function_signature_demo
535+ ```
536+
537+ This demonstrates:
538+ - Enhanced function signature extraction with metadata
539+ - Parameter analysis with type information and annotations
540+ - Generic parameter extraction with bounds and variance
541+ - Function complexity metrics calculation
542+ - Advanced similarity comparison algorithms
543+ - Overload detection and analysis
544+ - Cross-language signature normalization
545+
415546## Testing
416547
417548Run the test suite:
0 commit comments