C语言函数体变化点抽出

前段时间出了几个坑人的bug(都不是我的)需要做Coverity检查,对同事引入的指摘进行修正.因为同事没有用VCS找出修改点变成了活生生的体力活.

正好今天想研究下Antlr,顺便做了个工具(golang),生成函数签名和函数体hash列表,这样不同版本的code就可以比较差分了.(即使函数位于不同文件,或注释不一致)

项目地址

https://github.com/feilongfl/CCodeHash

主要原理

代码十分少,只有几行,算是Antlr入门作了,利用FunctionDefinition定义对函数体进行分析,获得函数签名和实体,并对整个函数进行hash计算生成hash.

第一个是原文件,第二个只修改了注释,第三个对函数代码进行了修改.

配合Shell,以后再有这种坑人事也有对策了.

存在缺陷

对于#if还没做考虑