diff --git "a/content/zh/post/totaj/\345\246\202\344\275\225\350\267\221\345\242\236\351\207\217\344\273\243\347\240\201\350\246\206\347\233\226\347\216\207.md" "b/content/zh/post/totaj/\345\246\202\344\275\225\350\267\221\345\242\236\351\207\217\344\273\243\347\240\201\350\246\206\347\233\226\347\216\207.md"
index 0e08319e080f1a7922d54fa391b8334cea8523ab..7bd703451235a58e3235c2cbdac488f1834ca175 100644
--- "a/content/zh/post/totaj/\345\246\202\344\275\225\350\267\221\345\242\236\351\207\217\344\273\243\347\240\201\350\246\206\347\233\226\347\216\207.md"
+++ "b/content/zh/post/totaj/\345\246\202\344\275\225\350\267\221\345\242\236\351\207\217\344\273\243\347\240\201\350\246\206\347\233\226\347\216\207.md"
@@ -15,7 +15,7 @@ times = "17:30"
[pengjiong@localhost ~]$ lcov -v
lcov: LCOV version 1.14
```
-2. 增加插桩函数用于收集结果:在代码根目录下执行:
+2. 增加插桩函数用于收集结果:在代码根目录下执行, 假设此代码根目录为 /home/test/openGauss-server
```shell
sed -i '/NotifyProcessActive();/i __gcov_flush();' src/gausskernel/process/postmaster/postmaster.cpp
sed -i 'N;256 i extern "C" void __gcov_flush();' src/gausskernel/process/postmaster/postmaster.cpp
@@ -76,9 +76,9 @@ Overall coverage rate:
增量代码覆盖率统计:
在全量代码覆盖率结果的基础上,通过增量代码的diff文件,生成增量代码覆盖率。
-1. 得到基线代码和修改后的新代码的diff文件,建议拉取两份完全干净的代码进行比较,以免其他文件影响最终结果。
+1. 得到基线代码和修改后的新代码的diff文件,注意拉取两份完全干净的代码进行比较获取diff结果,以免其他文件影响最终结果。同时注意两份代码的路径深度要一致,如下面的例子所示,基线代码和修改后的新代码,都在 /home/base/xx/ 路径下,深度一致。
```
-diff -r -N -x ".git" -x "*.gcov" -u /home/workspace/openGauss-server_base /home/workspace/openGauss-serveer_increment >> diff.txt
+diff -r -N -x ".git" -x "*.gcov" -u /home/workspace/base/openGauss-server /home/workspace/increment/openGauss-server>> diff.txt
```
-r 表示递归,子目录也产生输出
-N 文件不存在当做空文件,比如新版本增加了一个文件,此选项会将每一行都输出
@@ -90,12 +90,14 @@ addlcov --rc lcov_branch_coverage=1 --diff coverage.info diff.txt -o increment.
```
coverage.info:前面得到的全量覆盖率文件路径
increment.info:输出的增量覆盖率文件路径
-$new_Addr: 新代码路径
-$dep:$new_Addr代码路径深度,即分隔符”/”的个数(包括结尾的),可通过以下命令获取
-```shell
-dep=`echo $new_Addr |sed -e 's/\/*$//g' | awk -F"/" '{print NF}'`
+$new_Addr: 原始代码路径
+$dep:diff文件中的代码路径深度,即分隔符”/”的个数(包括结尾的)
+以前面的代码路径为例,原始代码路径为 /home/test/openGauss-server。用来生成diff.txt文件的干净基线代码路径为 /home/workspace/base/openGauss-server。用来生成diff.txt文件的干净增量代码路径为 /home/workspace/increment/openGauss-server。那么 $new_Addr 应该为原始代码路径即 /home/test/openGauss-server。 $dep 应该为 5,即 /home/workspace/base/openGauss-server 的路径深度,这也是为何生成diff.txt时,要求基线代码和修改后的新代码保持深度一致。
+同时命令中所有文件路径全部使用绝对路径,如果coverage.info文件中部分文件在增量修改后被删除了,在coverage.info里面把那一行删除
+可以得出命令为:
+```
+addlcov --rc lcov_branch_coverage=1 --diff /home/test/openGauss-server/coverage.info /home/test/openGauss-server/diff.txt -o /home/test/openGauss-server/increment.info --strip 5 --path /home/test/openGauss-server
```
-注意,所有文件路径全部使用绝对路径,如果coverage.info文件中部分文件在增量修改后被删除了,在coverage.info里面把那一行删除
3. 收集增量覆盖率结果,同全量的操作一样:
```shell
genhtml --rc lcov_branch_coverage=1 --no-prefix --no-sort increment.info -o incremen_results