From eea138793ca9894280e96874402cdbd6bede9d7c Mon Sep 17 00:00:00 2001 From: Devon Burriss Date: Tue, 12 Apr 2022 20:34:50 +0200 Subject: [PATCH 1/3] Adds exit metrics --- src/metrics/exit.rs | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/metrics/exit.rs b/src/metrics/exit.rs index 554ce6147..bbf4e5199 100644 --- a/src/metrics/exit.rs +++ b/src/metrics/exit.rs @@ -172,9 +172,16 @@ impl Exit for CppCode { } } +impl Exit for JavaCode { + fn compute(node: &Node, stats: &mut Stats) { + if matches!(node.object().kind_id().into(), Java::ReturnStatement) { + stats.exit += 1; + } + } +} + impl Exit for PreprocCode {} impl Exit for CcommentCode {} -impl Exit for JavaCode {} #[cfg(test)] mod tests { @@ -305,4 +312,38 @@ mod tests { [(exit_average, 0.5)] // 2 functions + 2 lambdas = 4 ); } + + #[test] + fn java_no_exit() { + check_metrics!( + "int a = 42;", + "foo.java", + CppParser, + nexits, + [ + (exit_sum, 0, usize), + (exit_min, 0, usize), + (exit_max, 0, usize) + ], + [(exit_average, f64::NAN)] // 0 functions + ); + } + + #[test] + fn java_simple_function() { + check_metrics!( + "public int sum(int x, int y) { + return x + y; + }", + "foo.java", + CppParser, + nexits, + [ + (exit_sum, 1, usize), + (exit_min, 0, usize), + (exit_max, 1, usize) + ], + [(exit_average, 1.0)] // 1 function + ); + } } From c94f8ba024b5b3f8e9bdea0a11ebde40603e1e4e Mon Sep 17 00:00:00 2001 From: Devon Burriss Date: Tue, 12 Apr 2022 21:13:59 +0200 Subject: [PATCH 2/3] WIP tests --- src/metrics/exit.rs | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/metrics/exit.rs b/src/metrics/exit.rs index bbf4e5199..d88b4461b 100644 --- a/src/metrics/exit.rs +++ b/src/metrics/exit.rs @@ -175,6 +175,7 @@ impl Exit for CppCode { impl Exit for JavaCode { fn compute(node: &Node, stats: &mut Stats) { if matches!(node.object().kind_id().into(), Java::ReturnStatement) { + println!("{}", node.object().kind()); stats.exit += 1; } } @@ -318,7 +319,7 @@ mod tests { check_metrics!( "int a = 42;", "foo.java", - CppParser, + JavaParser, nexits, [ (exit_sum, 0, usize), @@ -333,16 +334,37 @@ mod tests { fn java_simple_function() { check_metrics!( "public int sum(int x, int y) { - return x + y; + return x + y; }", "foo.java", - CppParser, + JavaParser, nexits, [ (exit_sum, 1, usize), (exit_min, 0, usize), (exit_max, 1, usize) ], + [(exit_average, f64::NAN)] // 1 function + ); + } + + #[test] + fn java_split_function() { + check_metrics!( + "public int multiply(int x, int y) { + if(x == 0 || y == 0){ + return 0; + } + return x * y; + }", + "foo.java", + JavaParser, + nexits, + [ + (exit_sum, 2, usize), + (exit_min, 0, usize), + (exit_max, 1, usize) + ], [(exit_average, 1.0)] // 1 function ); } From a2fec869ec0ccc5afd66c114655c3d5aa338001d Mon Sep 17 00:00:00 2001 From: Devon Burriss Date: Fri, 15 Apr 2022 07:47:15 +0200 Subject: [PATCH 3/3] Finalizes tests --- src/metrics/exit.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/metrics/exit.rs b/src/metrics/exit.rs index d88b4461b..83b3030b3 100644 --- a/src/metrics/exit.rs +++ b/src/metrics/exit.rs @@ -175,7 +175,6 @@ impl Exit for CppCode { impl Exit for JavaCode { fn compute(node: &Node, stats: &mut Stats) { if matches!(node.object().kind_id().into(), Java::ReturnStatement) { - println!("{}", node.object().kind()); stats.exit += 1; } } @@ -333,8 +332,10 @@ mod tests { #[test] fn java_simple_function() { check_metrics!( - "public int sum(int x, int y) { + "class A { + public int sum(int x, int y) { return x + y; + } }", "foo.java", JavaParser, @@ -344,18 +345,20 @@ mod tests { (exit_min, 0, usize), (exit_max, 1, usize) ], - [(exit_average, f64::NAN)] // 1 function + [(exit_average, 1.0)] // 1 exit / 1 space ); } #[test] fn java_split_function() { check_metrics!( - "public int multiply(int x, int y) { + "class A { + public int multiply(int x, int y) { if(x == 0 || y == 0){ return 0; } return x * y; + } }", "foo.java", JavaParser, @@ -363,9 +366,9 @@ mod tests { [ (exit_sum, 2, usize), (exit_min, 0, usize), - (exit_max, 1, usize) + (exit_max, 2, usize) ], - [(exit_average, 1.0)] // 1 function + [(exit_average, 2.0)] // 2 exit / space 1 ); } }