Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e2e1437

Browse files
committed
Updated html reporter to show a information about the partially covered lines by displaying a covered not covered blocks.
1 parent d19f941 commit e2e1437

3 files changed

Lines changed: 49 additions & 4 deletions

File tree

docs/userguide/coverage.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,26 @@ end;
6767

6868
In this mode html reporter will show additionally number of lines that been partially covered and highlight them in orange. Number of blocks in code, blocks covered and missed.
6969

70+
#### Oracle 12.2 extended coverage with profiler and block coverage
71+
Using data collected from profiler and block coverage running parallel we are able to enrich information about coverage.
72+
For every line recorded by profiler if we have a partially covered same line in block coverage we will display that information
73+
presenting line as partially covered and displaying number of block and how many blocks been covered in that line.
74+
75+
Example:
76+
```sql
77+
begin
78+
ut.run(ut_coverage_html_reporter(),a_coverage_type => 'extended');
79+
end;
80+
/
81+
```
82+
83+
Sample output:
84+
![Package Coverage Summary](../images/extended_coverage_html_summary.png)
85+
86+
![Line Coverage Details](../images/extended_coverage_html_line.png)
87+
88+
89+
7090
### Coverage reporting options
7191

7292
There are two distinct ways to gather code coverage:

source/core/coverage/ut_coverage_extended.pkb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ create or replace package body ut_coverage_extended is
4242
if l_result_block.objects(l_object).lines.exists(l_line_no) then
4343
-- enrich line level stats
4444
l_result_profiler_enrich.objects(l_object).lines(l_line_no).partcove := l_result_block.objects(l_object).lines(l_line_no).partcove;
45+
l_result_profiler_enrich.objects(l_object).lines(l_line_no).covered_blocks := l_result_block.objects(l_object).lines(l_line_no).covered_blocks;
46+
l_result_profiler_enrich.objects(l_object).lines(l_line_no).no_blocks := l_result_block.objects(l_object).lines(l_line_no).no_blocks;
4547
-- enrich object level stats
4648
l_result_profiler_enrich.objects(l_object).partcovered_lines := nvl(l_result_profiler_enrich.objects(l_object).partcovered_lines,0) + l_result_block.objects(l_object).lines(l_line_no).partcove;
4749
end if;

source/reporters/ut_extended_report_html_helper.pkb

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ create or replace package body ut_extended_report_html_helper is
2828
l_coverage_pct number(5, 2);
2929
l_coverage_block_pct number(5, 2);
3030
l_hits varchar2(30);
31+
l_blocks varchar2(30);
3132
begin
3233
dbms_lob.createtemporary(l_result, true);
3334

@@ -52,14 +53,36 @@ create or replace package body ut_extended_report_html_helper is
5253
<code class="sql">' || (dbms_xmlgen.convert(a_source_code(line_no))) ||
5354
'</code></li>';
5455
else
55-
l_hits := to_char(a_coverage_unit.lines(line_no).executions);
56-
56+
l_hits := to_char(a_coverage_unit.lines(line_no).executions);
57+
if nvl(a_coverage_unit.lines(line_no).covered_blocks,0) < nvl(a_coverage_unit.lines(line_no).no_blocks,0)
58+
and nvl(a_coverage_unit.lines(line_no).partcove,0) = 1 then
59+
l_blocks := to_char(a_coverage_unit.lines(line_no).covered_blocks) || chr(47)||
60+
to_char(a_coverage_unit.lines(line_no).no_blocks);
61+
else
62+
l_blocks := null;
63+
end if;
64+
5765
l_file_part := '
5866
<li class="' || ut_coverage_report_html_helper.line_status(a_coverage_unit.lines(line_no)) || '" data-hits="' ||
59-
dbms_xmlgen.convert(l_hits)|| '" data-linenumber="' || (line_no) || '">';
67+
dbms_xmlgen.convert(l_hits)|| '"'||
68+
case
69+
when l_blocks is not null
70+
then ' data-blocks="'||dbms_xmlgen.convert(l_blocks)||'"'
71+
else
72+
null
73+
end
74+
||' data-linenumber="' || (line_no) || '">';
6075
if a_coverage_unit.lines(line_no).executions > 0 then
6176

62-
l_file_part := l_file_part || '
77+
l_file_part := l_file_part ||
78+
case when l_blocks is not null
79+
then '
80+
<span class="blocks">' ||dbms_xmlgen.convert(l_blocks) ||
81+
'</span>'
82+
else
83+
null
84+
end
85+
|| '
6386
<span class="hits">' || dbms_xmlgen.convert(l_hits) ||
6487
'</span>';
6588
end if;

0 commit comments

Comments
 (0)