Home

测试覆盖率统计

###什么是代码覆盖率(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

post-review在svn和git共同存在下的冲突问题

有时候我们会同时用多种版本管理工具进行管理,或许这听着很eggache,但是有时候确实会发生,比如 不习惯某种版本管理工具,希望通过另一种熟悉的版本管理工具进行管理 有些特性是其他的版本管理工具所没有的 开发的版本管理和自己的分支管理策略之间有冲突,开发的版本库不允许随便建立测试分支 具体到一种情况下,比如我们有一个svn的版本库,版本管理策略比较严格,而我们需要做一些有风险的本地开发的时候,都原意建立一个test分支,开发确定没有问题之后再合并到master分支,但是现实的情况不允许我们随便建立丢弃分支。这样就可以通过加入一个git的版本管理来实现。 比如我们建立了一个新的版本库(repository) mkdir repository.git &a...

Read more

霸气风骚的系统监视器htop

做测试和运维的同学都比较熟悉top工具,top工具提供了强大的系统性能监视能力,但是top毕竟比较简陋,而服务器端又不能运行需要X的程序,所以需要一款更人性更强大的系统监视器。HTOP就是一个很好的选择。 ###介绍 htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。 与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。 与top相比,htop有以下优点: 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。 在启动上,比top 更快。 杀进程时不需要输入进...

Read more