1

在将子模块发布集成到父项目中时,我经常遇到只有在集成时才可见和触发的错误。这个是正常的。错误是正常的。我们调试它们,修复它们并将它们提交到子模块中。

现在发生了好几次这样的修复被子模块开发人员覆盖,并在集成该子模块的项目中再次发生。

随着时间的推移,由于几乎没有对他们的行为和症状进行智能跟踪,它碰巧被遗忘了,然后又被修复了。这是非常耗时的,尤其是在棘手的情况下。

因此我的问题是:当我再次看到它的症状时,我如何在技术上存储一个错误的“行为”以被“提醒”?

有没有解决我的问题的工具。我可以用什么来按症状对已修复的错误进行分类?

我的一个想法是使用自定义模式扩展静态分析器(例如覆盖率或 clang-analyzer)。这不会解决行为/症状方法,但我可以在编译期间使用第一次修复期间创建的模式来分析代码:“如果这段代码是以某种方式编写的,那就不好了”。根据我的经验,我可以通过这种方式解决相当多的错误,但不是全部。

我添加了 C 和 C++ 标签,因为这些是我正在使用的语言。

更新:由于评论中有问题:我们正在使用 git。并且重新出现的错误是在第一次更正后数月甚至数年提交的。

更新:我们正在使用 Mantis 进行错误跟踪。

4

1 回答 1

0

这不是一个工具,而是一个过程。我已经使用 BFV(错误修复验证)测试来做到这一点。每次修复错误时,都会为其添加自动 BFV 测试。测试的名称将是 BFV#bugno - 这是错误数据库中的错误编号。作为提供给测试的所有构建的一部分,运行所有 BFV 测试作为回归测试的一部分。如果 BFV2042 失败,您可以在错误数据库中查找 Bug#2042 进行提醒。如果您在接受来自子模块分支的合并之前运行回归测试,那就更好了。

于 2012-10-24T14:42:27.890 回答