RFR 8221857: Collect code coverage for a subset of code
Alexandre (Shura) Iline
alexandre.iline at oracle.com
Wed Apr 10 21:25:54 UTC 2019
JCOV_FILTERS variable is also used while building an instrumented image - with "jcov-image” make target. To completely prevent make form complaining, it looks like the variable would need to be added it to MAKE_CONTROL_VARIABLES in make/InitSupport.gmk. Which we could do, but, judging by the look of it, only “very important” variables are listed as controlled.
At the same time, I predict that most of the use cases would be covered with just using the configuration option. In less common cases when direct usage of JCOV_FILTERS is used, user can survive with make complaining about it not been controlled.
So I suggest to push the change as is. Let me know if you are OK with that. We can reconsider later, if there would be a need for it.
> On Apr 9, 2019, at 6:31 AM, Erik Joelsson <erik.joelsson at oracle.com> wrote:
> Hello Shura,
> If JCOV_FILTERS is ever expected to be set on the make command line (typically when running make run-test-prebuilt), then it would be good if we could add a way to set it through TEST_OPTS=JCOV_FILTERS=... . Using the officially supported input variables like this avoids the warning about unsupported variables you otherwise get from our makefiles.
> To do that, you simply add JCOV_FILTERS to the ParseKeywordVariable call for TEST_OPTS further up in RunTests.gmk. Then you will receive the variable as TEST_OPTS_JCOV_FILTERS.
> Otherwise this looks good.
> On 2019-04-08 14:12, Alexandre (Shura) Iline wrote:
>> Could you please take a look on this enhancement which makes it easy to get code coverage for a part of JDK code.
>> This change introduces “JCOV_FILTERS” make variable and also "--with-jcov-filters” configuration option.
>> With that one is free to use any of JCov filtering options to limit the resulting report to only the desired code.
>> This is an excerpt from JCov usage output:
>> Filtering conditions.
>> -include(i) 'string value' (Option could be specified several times.)
>> -exclude(e) 'string value' (Option could be specified several times.)
>> -include_list 'string value'
>> -exclude_list 'string value'
>> -include_module_list 'string value'
>> -exclude_module_list 'string value'
>> Filtering conditions.
>> -include_module(im) 'string value' (Option could be specified several times.)
>> -exclude_module(em) 'string value' (Option could be specified several times.)
>> -fm 'string value' (Option could be specified several times.)
>> -fm_list 'string value'
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8221857
>> Webrev: http://cr.openjdk.java.net/~shurailine/JDK-8221857/webrev.00/
>> Thank you.
More information about the build-dev