[coverage] Filter some files from instrumentation.

This filters test and third_party files to get a speed-up
when running tests and when collecting profile data.

BUG=chromium:568949
LOG=n

Committed: https://crrev.com/761ee31be5ab4fde05c294e5d632608fbaea8ad4
Cr-Commit-Position: refs/heads/master@{#34216}

Committed: https://crrev.com/906db7448702a6ac9fab2a445c57cc85f6dd1b1a
Cr-Commit-Position: refs/heads/master@{#34253}

Committed: https://crrev.com/fe38ad573ee737e06a74b7fcd73f557ac0f1135a
Cr-Commit-Position: refs/heads/master@{#34272}

Review URL: https://codereview.chromium.org/1730543002

Cr-Commit-Position: refs/heads/master@{#34276}
This commit is contained in:
machenbach 2016-02-25 01:19:32 -08:00 committed by Commit bot
parent 5683974925
commit e55c5c06e2
2 changed files with 58 additions and 5 deletions

28
build/coverage_wrapper.py Executable file
View File

@ -0,0 +1,28 @@
#!/usr/bin/env python
# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# CC/CXX wrapper script that excludes certain file patterns from coverage
# instrumentation.
import re
import subprocess
import sys
exclusions = [
'src/third_party',
'third_party',
'test',
'testing',
]
args = sys.argv[1:]
text = ' '.join(sys.argv[2:])
for exclusion in exclusions:
if re.search(r'\-o obj/%s[^ ]*\.o' % exclusion, text):
args.remove('-fprofile-arcs')
args.remove('-ftest-coverage')
break
sys.exit(subprocess.check_call(args))

View File

@ -1262,11 +1262,36 @@
# make generator doesn't support CC_wrapper without CC
# in make_global_settings yet.
['use_goma==1 and ("<(GENERATOR)"=="ninja" or clang==1)', {
'make_global_settings': [
['CC_wrapper', '<(gomadir)/gomacc'],
['CXX_wrapper', '<(gomadir)/gomacc'],
['CC.host_wrapper', '<(gomadir)/gomacc'],
['CXX.host_wrapper', '<(gomadir)/gomacc'],
'conditions': [
['coverage==1', {
# Wrap goma with coverage wrapper.
'make_global_settings': [
['CC_wrapper', '<(base_dir)/build/coverage_wrapper.py <(gomadir)/gomacc'],
['CXX_wrapper', '<(base_dir)/build/coverage_wrapper.py <(gomadir)/gomacc'],
['CC.host_wrapper', '<(base_dir)/build/coverage_wrapper.py <(gomadir)/gomacc'],
['CXX.host_wrapper', '<(base_dir)/build/coverage_wrapper.py <(gomadir)/gomacc'],
],
}, {
# Use only goma wrapper.
'make_global_settings': [
['CC_wrapper', '<(gomadir)/gomacc'],
['CXX_wrapper', '<(gomadir)/gomacc'],
['CC.host_wrapper', '<(gomadir)/gomacc'],
['CXX.host_wrapper', '<(gomadir)/gomacc'],
],
}],
],
}, {
'conditions': [
['coverage==1', {
# Use only coverage wrapper.
'make_global_settings': [
['CC_wrapper', '<(base_dir)/build/coverage_wrapper.py'],
['CXX_wrapper', '<(base_dir)/build/coverage_wrapper.py'],
['CC.host_wrapper', '<(base_dir)/build/coverage_wrapper.py'],
['CXX.host_wrapper', '<(base_dir)/build/coverage_wrapper.py'],
],
}],
],
}],
['use_lto==1', {