diff options
author | Taku Amano <taku@taaas.jp> | 2024-10-31 23:20:26 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-31 23:20:26 +0900 |
commit | 50ea707b58dff85b479905ebbeef866c95bc3cad (patch) | |
tree | a894e383d41e55b1d32771baf9ea70f6a1111b9d /cli/tools/coverage/mod.rs | |
parent | 56f25af2c7b8b158ae21271c129ea0f0bf3c258f (diff) |
fix(coverage): exclude comment lines from coverage reports (#25939)
Diffstat (limited to 'cli/tools/coverage/mod.rs')
-rw-r--r-- | cli/tools/coverage/mod.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs index 3b08f2c77..48922f144 100644 --- a/cli/tools/coverage/mod.rs +++ b/cli/tools/coverage/mod.rs @@ -327,6 +327,7 @@ fn generate_coverage_report( coverage_report.found_lines = if let Some(source_map) = maybe_source_map.as_ref() { + let script_source_lines = script_source.lines().collect::<Vec<_>>(); let mut found_lines = line_counts .iter() .enumerate() @@ -334,7 +335,23 @@ fn generate_coverage_report( // get all the mappings from this destination line to a different src line let mut results = source_map .tokens() - .filter(move |token| token.get_dst_line() as usize == index) + .filter(|token| { + let dst_line = token.get_dst_line() as usize; + dst_line == index && { + let dst_col = token.get_dst_col() as usize; + let content = script_source_lines + .get(dst_line) + .and_then(|line| { + line.get(dst_col..std::cmp::min(dst_col + 2, line.len())) + }) + .unwrap_or(""); + + !content.is_empty() + && content != "/*" + && content != "*/" + && content != "//" + } + }) .map(move |token| (token.get_src_line() as usize, *count)) .collect::<Vec<_>>(); // only keep the results that point at different src lines |