Home

通过脚本统计代码覆盖率

只是记录一下工作里面的一些trick。我发现我对这些trick的兴趣无比的高。 我们有时候需要在开发机上统计代码覆盖率,这可能是做测试的同学经常的工作,做开发的同学也难免会遇到。对于某些分支复杂的逻辑,代码覆盖工具是极大的助力。 关于gcc coverage选项和gcov/lcov工具的使用已经在 上篇文章里面说过了,我们这里说的是如何实现方便的统计和拉取数据并显示。 首先,测试目录和代码目录是分开的,我们在测试目录运行的时候会生成测试文件的代码覆盖率统计,但是实际上被测试的文件的代码覆盖率是在源码目录生成的。这是需要注意的一点,之前我考虑过合并两处的代码覆盖率统计文件,后来发现没有必要,毕竟你关注的是源码目录的统计文件。这样我们通过如下脚本实现代码覆盖率的生成和拉取。 #...

Read more

测试覆盖率统计

###什么是代码覆盖率(code coverage) 代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。 代码覆盖主要包括如下四个方面: 语句覆盖(StatementCoverage) 判定覆盖(DecisionCoverage) 条件覆盖(ConditionCoverage) 路径覆盖(PathCoverage) 或者叫条件/判断覆盖率 具体的参见参考文献1 2. ###怎么得到覆盖率数据 这里我们主要说测试工具的使用的问题。c++的项目测试里面我们用gcc产生测试数据,用gcov和lcov生成测试结果的报表。 gcc这里需要做的工作是编译的时候打...

Read more

git reset和git revert

git reset 作用 git reset 主要完成到版本库某个特定版本的回退,分为如下三种方式 git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息 git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可 git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容 git revert 作用 git revert从字面的理解上跟git reset是一样的,不同之处在于git revert生成一个反向的差异(特...

Read more

svn vim 整合方案

这也是实际工作中遇到的问题,所以还是分类到了oceabase分类里面。 遇到的情况是这样的,有可能同时做多个任务的修改,或者说上一个任务的修改并未提交(尚未ship不能提交),但是下一个已经修改了,这样的话,post-review的时候是需要管理post列表的,而不能把所有的修改一起post。之前应该写过一篇文章说一个post-review插件的实现,但是实际上颇为不便,最好的办法是直接在vim里面操作一个修改列表。这里我们首先通过如下方式生成修改列表。 alias sta='st|grep ^A ' alias stm='st|grep ^M ' alias std='st|grep ^D ' alias po='echo "#!/bin/sh" >post-review...

Read more

关于svn commit fail的问题

svn commit失败的时候会产生一个svn-commit.tmp 文件, 打开之后发现里面是commit-message,难道下次提交的时候还需要把消息复制进去么? 看看 svn help commit, 发现有 -F 可以用, 平常都只有用 -m ‘message’ 而已。定义如下: -F: 会把档案内容读进来, 然后直接 commit, 想当然就用 -F 直接取 svn-commit.tmp 来 commit. 例: svn ci -F svn-commit.tmp PS: commit 完后, 还是要手动 rm svn-commit.tmp. 另一个关于commit的问题是,如果 svn ci 进入填充commit-log的交互界面的时候,突然发现提交文件列表...

Read more

几个svn的问题

误用rm删除了未提交文件 经常会遇到这种情况:本地修改了一部分东西,增增改改删删,后来发现已经用svn add过的的文件被删除了,但是这个文件只是加入了版本控制,而并不再版本库里,这时候post-review就会有各种问题。如图(前面有感叹号的文件): 解决办法也很简单,我们直接: svn revert ob_alive_table_tablet_iter.h 这时候文件并不会被恢复,但是svn status上已经显示删除了,post-review不会再报错,如下图所示: 版本控制中移除文件 经常会遇到错误的把文件加入了版本控制的情况,比如我加了一个Makefile.in到版本控制里(如图),但是svn rm 会同时从版本库和本地删除这个文件,这是我所不希望的...

Read more

记几个诡异的bug

ERROR: mutli target patterns 这个莫名其妙啊,不知道在Makefile.am里改了什么,然后就这样,网上的解释大部分是说target里面有多余的冒号,但是我发现问题啊。最后该来该去bug没了,但是也复现不出来,只是在这里记一下,如果有复现的时候再说。 后来 聿明 解决了这个问题,原来是编译的线程开太多了,而开发机性能又不好,争用然后冲突。 alias make='make -s -j 4' #这里开到4-5就不要更多了 ob集群无法启动 怀疑是机器的问题,但是如果大部分机器我都无法启动这算怎么一回事, rs的日志如下: [2013-10-12 14:41:56.484203] WARN create_first_table (ob_ro...

Read more