场景:我在我的源代码上运行了一个静态代码分析工具,这些工具在我的很多文件上发现了问题。如何在Vim的错误文件中包含的所有行上执行相同的命令?
的问题是,该声明
*retval = -1;
需要由
if(retval != NULL)
{
*retval = -1;
}
我已经成功地在一个errorfile所有相关的地方进行更换,并开始与循环
这个工作流程做,但我有400米的地方接触,所以这是一个有点无聊。
我可以指示Vim(类似于例如bufdo
)更正错误文件中存在的所有地方的语句吗?
不,只是打开所有的文件和bufdo
然后不是一个选项,因为构造*retval = -1;
发生多次,但只需要固定在错误文件中包含的行。
这里的问题和答案是非常相关的:http://stackoverflow.com/q/5686206 – glts
甚至有[补丁正在等待](https://groups.google.com/d/msg/vim_dev/dfyt- G6SMec/_6h8pDUpeZMJ)作为核心Vim中的':cdo',所以如果你觉得特别慈善,你可以在那里添加一个投票。 – glts
如果静态分析工具能够找到这些问题,您应该能够通过语义修补来自动修复它。例如。 coccinelle有几个修补'NULL'解除引用的示例补丁:[link](http://coccinelle.lip6.fr/rules/#null) – jtaylor