New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 784464 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Feature


Sign in to add a comment

Add Clang based code coverage script for Chrome

Project Member Reported by liaoyuke@chromium.org, Nov 13 2017

Issue description

Add a script that can generate Clang based code coverage report locally on demand.
 
Blockedon: 786577
Blockedon: 789691
Blockedon: 789692
Blockedon: 789693
Project Member

Comment 5 by bugdroid1@chromium.org, Dec 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/506e8823c824de70a3315fade97e1b8ea2b733b5

commit 506e8823c824de70a3315fade97e1b8ea2b733b5
Author: Yuke Liao <liaoyuke@chromium.org>
Date: Mon Dec 04 16:52:54 2017

[Coverage] Create code coverage script.

This CL adds the first version of the code coverage script, which is
able to generate line by line code coverage report in html for files
involved when running test targets.

Bug:  784464 
Change-Id: I0b8f894ca424e02c3e8a3176d2988df0a2e9d239
Reviewed-on: https://chromium-review.googlesource.com/764949
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Commit-Queue: Yuke Liao <liaoyuke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521367}
[add] https://crrev.com/506e8823c824de70a3315fade97e1b8ea2b733b5/tools/code_coverage/OWNERS
[add] https://crrev.com/506e8823c824de70a3315fade97e1b8ea2b733b5/tools/code_coverage/coverage.py
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/croc.css
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/croc.py
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/croc_html.py
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/croc_scan.py
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/croc_scan_test.py
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/croc_test.py
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/example.croc
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/third_party/README.chromium
[delete] https://crrev.com/113e9e022f1cdb5fe2499bc8a71bedb5ff16ea40/tools/code_coverage/third_party/sorttable.js

Blockedon: 791735
Blockedon: 792142
Blockedon: 792147

Comment 9 by mmoroz@chromium.org, Dec 22 2017

Components: -Tools Tools>CodeCoverage
Blockedon: 799502
Blockedon: 799503
Blockedon: 799632
Blockedon: 800876
Blockedon: 801359
Project Member

Comment 15 by bugdroid1@chromium.org, Jan 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d4a986520bd5d86e41fc35d6ef8290b1b3ce231c

commit d4a986520bd5d86e41fc35d6ef8290b1b3ce231c
Author: Yuke Liao <liaoyuke@chromium.org>
Date: Fri Jan 12 23:17:52 2018

[Coverage] Update code coverage tool to use %Nm option.

Previously, the code coverage script uses "%p" option to run the
instrumented program, this won't work because this option generates
one profraw file per process, and Chrome's large unittest target always
run in hundreds of processes, which results in generating too many
profraw data files that take unreasonable amount of disk space.

This CL updates to use the "%Nm" option, "%Nm" generates the same data
as "%p" but only creates less than 10 profraw data files.

This CL also deletes generated profraw data files once it's merged to
save disk space.

Bug:  784464 
Change-Id: Id5516a4b3b7878c6290405259451641b93b1007f
Reviewed-on: https://chromium-review.googlesource.com/864893
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Reviewed-by: Abhishek Arya <inferno@chromium.org>
Commit-Queue: Yuke Liao <liaoyuke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#529100}
[modify] https://crrev.com/d4a986520bd5d86e41fc35d6ef8290b1b3ce231c/tools/code_coverage/coverage.py

Blockedon: 817798
Blockedon: 824532
Blockedon: 826349
Blockedon: 838997
Project Member

Comment 20 by bugdroid1@chromium.org, May 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7c5354fc882af70a4c9c9b0a20d01f8c42f2cb33

commit 7c5354fc882af70a4c9c9b0a20d01f8c42f2cb33
Author: Max Moroz <mmoroz@chromium.org>
Date: Sun May 06 00:03:48 2018

[Code Coverage] Update output dir structure for multi-platform support.

Also write output of llvm-cov export program on the disk (needed for the bot).

Plus some refactoring for logs from target programs:
- redirect stderr from targets into stdout to be written into a .log
- write logs into its own subdir for better output structure

Not output folder structure look as follows:

$ ls -l out/zreport15/
total 8
drwxr-x--- 5 mmoroz primarygroup 4096 May  4 10:53 linux
-rw-r--r-- 1 mmoroz primarygroup 2519 May  4 10:53 style.css

$ ls -l out/zreport15/linux/
total 48
drwxr-xr-x 2 mmoroz primarygroup 4096 May  4 10:53 components
-rw-r--r-- 1 mmoroz primarygroup 1627 May  4 10:53 component_view_index.html
-rw-r--r-- 1 mmoroz primarygroup 4672 May  4 10:53 coverage.profdata
-rw-r--r-- 1 mmoroz primarygroup  241 May  4 10:53 directory_view_index.html
-rw-r--r-- 1 mmoroz primarygroup 7416 May  4 10:53 file_view_index.html
-rw-r--r-- 1 mmoroz primarygroup  200 May  4 10:53 index.html
drwxr-xr-x 2 mmoroz primarygroup 4096 May  4 10:53 logs
-rw-r--r-- 1 mmoroz primarygroup 7483 May  4 10:53 summary.json
drwxr-x--- 3 mmoroz primarygroup 4096 May  4 10:53 usr


Bug:  784464 ,  836663 
Change-Id: I3283f16b62cfeb267bb2b3092fa469d5ff39ef14
Reviewed-on: https://chromium-review.googlesource.com/1044652
Commit-Queue: Abhishek Arya <inferno@chromium.org>
Reviewed-by: Abhishek Arya <inferno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556348}
[modify] https://crrev.com/7c5354fc882af70a4c9c9b0a20d01f8c42f2cb33/tools/code_coverage/coverage.py

Project Member

Comment 21 by bugdroid1@chromium.org, May 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fb70b53a802b1ae4b4df4b5d196f4413a28fc574

commit fb70b53a802b1ae4b4df4b5d196f4413a28fc574
Author: Abhishek Arya <inferno@chromium.org>
Date: Sun May 06 17:47:40 2018

Add assert to check coverage file path have source root.

TBR=mmoroz@chromium.org

Bug:  784464 ,  836663 
Change-Id: I09c05445b1a86de19ef41d40e7e6fa72ce361390
Reviewed-on: https://chromium-review.googlesource.com/1046151
Reviewed-by: Abhishek Arya <inferno@chromium.org>
Reviewed-by: Yuke Liao <liaoyuke@chromium.org>
Commit-Queue: Abhishek Arya <inferno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556357}
[modify] https://crrev.com/fb70b53a802b1ae4b4df4b5d196f4413a28fc574/tools/code_coverage/coverage.py

Project Member

Comment 22 by bugdroid1@chromium.org, May 7 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/78120bc8502390cfbf483f5c2f92dc5befb5e893

commit 78120bc8502390cfbf483f5c2f92dc5befb5e893
Author: Abhishek Arya <inferno@chromium.org>
Date: Mon May 07 20:53:54 2018

Add logging in coverage script to debug ldd execution time.

Also, avoid reading shared library content for ones that are
already processed.

R=mmoroz@chromium.org

Bug:  784464 ,  836663 
Change-Id: Iee42cbc71058457737f2ffaf4a5e22bfc85f7163
Reviewed-on: https://chromium-review.googlesource.com/1048305
Reviewed-by: Yuke Liao <liaoyuke@chromium.org>
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556563}
[modify] https://crrev.com/78120bc8502390cfbf483f5c2f92dc5befb5e893/tools/code_coverage/coverage.py

Status: Fixed (was: Started)
Project Member

Comment 24 by bugdroid1@chromium.org, May 10 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1c97ea548f8d4cb5cbb285353839ca5128b5af49

commit 1c97ea548f8d4cb5cbb285353839ca5128b5af49
Author: Abhishek Arya <inferno@chromium.org>
Date: Thu May 10 03:53:19 2018

Coverage: Add llvm-symbolizer to path for symbolized stacks

R=mmoroz@chromium.org,liaoyuke@chromium.org

Bug:  784464 ,  841513 
Change-Id: Ia592f2c0145d9117e6c59d14c6b1685d104429c0
Reviewed-on: https://chromium-review.googlesource.com/1053161
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Commit-Queue: Abhishek Arya <inferno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#557446}
[modify] https://crrev.com/1c97ea548f8d4cb5cbb285353839ca5128b5af49/tools/code_coverage/coverage.py

Sign in to add a comment