Message ID | 20180620132032.12952-5-alex.bennee@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Tweak code coverage reporting | expand |
Hi Alex, On 06/20/2018 10:20 AM, Alex Bennée wrote: > This can be used to remove any stale coverage data before any > particular test run. This is useful for analysing individual tests. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > Makefile | 11 +++++++++++ > docs/devel/testing.rst | 11 ++++++++--- > 2 files changed, 19 insertions(+), 3 deletions(-) > > diff --git a/Makefile b/Makefile > index e46f2b625a..cb4af8bf80 100644 > --- a/Makefile > +++ b/Makefile > @@ -725,6 +725,14 @@ module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak > $(addprefix $(SRC_PATH)/,$(patsubst %.mo,%.c,$(block-obj-m))), \ > "GEN","$@") > > +ifdef CONFIG_GCOV > +.PHONY: clean-coverage > +clean-coverage: > + $(call quiet-command, \ > + find . \( -name '*.gcda' -o -name '*.gcov' \) -type f -exec rm {} +, \ > + "CLEAN", "coverage files") I also see ".gcno" files. From GCC man page: -ftest-coverage Produce a notes file that the gcov code-coverage utility can use to show program coverage. Each source file's note file is called auxname.gcno. Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Adding gcno: Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > +endif > + > clean: > # avoid old build problems by removing potentially incorrect old files > rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h > @@ -1075,6 +1083,9 @@ endif > echo '') > @echo 'Cleaning targets:' > @echo ' clean - Remove most generated files but keep the config' > +ifdef CONFIG_GCOV > + @echo ' clean-coverage - Remove coverage files' > +endif > @echo ' distclean - Remove all generated files' > @echo ' dist - Build a distributable tarball' > @echo '' > diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst > index 66ef219f69..a3652aea14 100644 > --- a/docs/devel/testing.rst > +++ b/docs/devel/testing.rst > @@ -161,9 +161,14 @@ GCC gcov support > ``gcov`` is a GCC tool to analyze the testing coverage by > instrumenting the tested code. To use it, configure QEMU with > ``--enable-gcov`` option and build. Then run ``make check`` as usual. > -Reports can be obtained by running ``gcov`` command on the output > -files under ``$build_dir/tests/``, please read the ``gcov`` > -documentation for more information. > + > +If you want to gather coverage information on a single test the ``make > +clean-coverage`` target can be used to any existing coverage > +information before running a single test. > + > +Reports can be obtained by running ``gcov`` command > +on the output files under ``$build_dir/tests/``, please read the > +``gcov`` documentation for more information. > > QEMU iotests > ============ >
Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > Hi Alex, > > On 06/20/2018 10:20 AM, Alex Bennée wrote: >> This can be used to remove any stale coverage data before any >> particular test run. This is useful for analysing individual tests. >> >> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> >> --- >> Makefile | 11 +++++++++++ >> docs/devel/testing.rst | 11 ++++++++--- >> 2 files changed, 19 insertions(+), 3 deletions(-) >> >> diff --git a/Makefile b/Makefile >> index e46f2b625a..cb4af8bf80 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -725,6 +725,14 @@ module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak >> $(addprefix $(SRC_PATH)/,$(patsubst %.mo,%.c,$(block-obj-m))), \ >> "GEN","$@") >> >> +ifdef CONFIG_GCOV >> +.PHONY: clean-coverage >> +clean-coverage: >> + $(call quiet-command, \ >> + find . \( -name '*.gcda' -o -name '*.gcov' \) -type f -exec rm {} +, \ >> + "CLEAN", "coverage files") > > I also see ".gcno" files. > From GCC man page: > > -ftest-coverage > Produce a notes file that the gcov code-coverage > utility can use to show program coverage. Each > source file's note file is called auxname.gcno. I explicitly left that out - the gcno file is regenerated by the build. There is no reason to wipe it between coverage runs. A full clean should remove them however. > > Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > Adding gcno: > Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > >> +endif >> + >> clean: >> # avoid old build problems by removing potentially incorrect old files >> rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h >> @@ -1075,6 +1083,9 @@ endif >> echo '') >> @echo 'Cleaning targets:' >> @echo ' clean - Remove most generated files but keep the config' >> +ifdef CONFIG_GCOV >> + @echo ' clean-coverage - Remove coverage files' >> +endif >> @echo ' distclean - Remove all generated files' >> @echo ' dist - Build a distributable tarball' >> @echo '' >> diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst >> index 66ef219f69..a3652aea14 100644 >> --- a/docs/devel/testing.rst >> +++ b/docs/devel/testing.rst >> @@ -161,9 +161,14 @@ GCC gcov support >> ``gcov`` is a GCC tool to analyze the testing coverage by >> instrumenting the tested code. To use it, configure QEMU with >> ``--enable-gcov`` option and build. Then run ``make check`` as usual. >> -Reports can be obtained by running ``gcov`` command on the output >> -files under ``$build_dir/tests/``, please read the ``gcov`` >> -documentation for more information. >> + >> +If you want to gather coverage information on a single test the ``make >> +clean-coverage`` target can be used to any existing coverage >> +information before running a single test. >> + >> +Reports can be obtained by running ``gcov`` command >> +on the output files under ``$build_dir/tests/``, please read the >> +``gcov`` documentation for more information. >> >> QEMU iotests >> ============ >> -- Alex Bennée
On 06/20/2018 06:06 PM, Alex Bennée wrote: > > Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > >> Hi Alex, >> >> On 06/20/2018 10:20 AM, Alex Bennée wrote: >>> This can be used to remove any stale coverage data before any >>> particular test run. This is useful for analysing individual tests. >>> >>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> >>> --- >>> Makefile | 11 +++++++++++ >>> docs/devel/testing.rst | 11 ++++++++--- >>> 2 files changed, 19 insertions(+), 3 deletions(-) >>> >>> diff --git a/Makefile b/Makefile >>> index e46f2b625a..cb4af8bf80 100644 >>> --- a/Makefile >>> +++ b/Makefile >>> @@ -725,6 +725,14 @@ module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak >>> $(addprefix $(SRC_PATH)/,$(patsubst %.mo,%.c,$(block-obj-m))), \ >>> "GEN","$@") >>> >>> +ifdef CONFIG_GCOV >>> +.PHONY: clean-coverage >>> +clean-coverage: >>> + $(call quiet-command, \ >>> + find . \( -name '*.gcda' -o -name '*.gcov' \) -type f -exec rm {} +, \ >>> + "CLEAN", "coverage files") >> >> I also see ".gcno" files. >> From GCC man page: >> >> -ftest-coverage >> Produce a notes file that the gcov code-coverage >> utility can use to show program coverage. Each >> source file's note file is called auxname.gcno. > > I explicitly left that out - the gcno file is regenerated by the build. > There is no reason to wipe it between coverage runs. A full clean should > remove them however. Oh OK, fine then. > >> >> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> Adding gcno: >> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> >>> +endif >>> + >>> clean: >>> # avoid old build problems by removing potentially incorrect old files >>> rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h >>> @@ -1075,6 +1083,9 @@ endif >>> echo '') >>> @echo 'Cleaning targets:' >>> @echo ' clean - Remove most generated files but keep the config' >>> +ifdef CONFIG_GCOV >>> + @echo ' clean-coverage - Remove coverage files' >>> +endif >>> @echo ' distclean - Remove all generated files' >>> @echo ' dist - Build a distributable tarball' >>> @echo '' >>> diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst >>> index 66ef219f69..a3652aea14 100644 >>> --- a/docs/devel/testing.rst >>> +++ b/docs/devel/testing.rst >>> @@ -161,9 +161,14 @@ GCC gcov support >>> ``gcov`` is a GCC tool to analyze the testing coverage by >>> instrumenting the tested code. To use it, configure QEMU with >>> ``--enable-gcov`` option and build. Then run ``make check`` as usual. >>> -Reports can be obtained by running ``gcov`` command on the output >>> -files under ``$build_dir/tests/``, please read the ``gcov`` >>> -documentation for more information. >>> + >>> +If you want to gather coverage information on a single test the ``make >>> +clean-coverage`` target can be used to any existing coverage >>> +information before running a single test. >>> + >>> +Reports can be obtained by running ``gcov`` command >>> +on the output files under ``$build_dir/tests/``, please read the >>> +``gcov`` documentation for more information. >>> >>> QEMU iotests >>> ============ >>> > > > -- > Alex Bennée >
diff --git a/Makefile b/Makefile index e46f2b625a..cb4af8bf80 100644 --- a/Makefile +++ b/Makefile @@ -725,6 +725,14 @@ module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak $(addprefix $(SRC_PATH)/,$(patsubst %.mo,%.c,$(block-obj-m))), \ "GEN","$@") +ifdef CONFIG_GCOV +.PHONY: clean-coverage +clean-coverage: + $(call quiet-command, \ + find . \( -name '*.gcda' -o -name '*.gcov' \) -type f -exec rm {} +, \ + "CLEAN", "coverage files") +endif + clean: # avoid old build problems by removing potentially incorrect old files rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h @@ -1075,6 +1083,9 @@ endif echo '') @echo 'Cleaning targets:' @echo ' clean - Remove most generated files but keep the config' +ifdef CONFIG_GCOV + @echo ' clean-coverage - Remove coverage files' +endif @echo ' distclean - Remove all generated files' @echo ' dist - Build a distributable tarball' @echo '' diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst index 66ef219f69..a3652aea14 100644 --- a/docs/devel/testing.rst +++ b/docs/devel/testing.rst @@ -161,9 +161,14 @@ GCC gcov support ``gcov`` is a GCC tool to analyze the testing coverage by instrumenting the tested code. To use it, configure QEMU with ``--enable-gcov`` option and build. Then run ``make check`` as usual. -Reports can be obtained by running ``gcov`` command on the output -files under ``$build_dir/tests/``, please read the ``gcov`` -documentation for more information. + +If you want to gather coverage information on a single test the ``make +clean-coverage`` target can be used to any existing coverage +information before running a single test. + +Reports can be obtained by running ``gcov`` command +on the output files under ``$build_dir/tests/``, please read the +``gcov`` documentation for more information. QEMU iotests ============
This can be used to remove any stale coverage data before any particular test run. This is useful for analysing individual tests. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> --- Makefile | 11 +++++++++++ docs/devel/testing.rst | 11 ++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) -- 2.17.1