微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用带有 git 补丁的缺陷查找器

如何解决如何使用带有 git 补丁的缺陷查找器

我想对我的合并请求使用缺陷查找器,因此只分析更改的代码。我看到缺陷查找器支持补丁,所以我认为它会很容易。

事情是:我无法让它与 git patch 一起工作。 Flawfinder 确实识别出它是一个 git 补丁,它只扫描需要的文件,但没有命中。如果我在没有补丁参数的情况下运行缺陷查找器并检查更改后的文件上的命中,我会在添加的新行中看到一些命中。 我尝试了 svn 的差异:就像一个魅力。完全没有区别:相同。与 git 不同:无法使其工作。

如果有人有想法,我很乐意采纳。或者举个例子。

重现的快速命令:

git diff --patch --output PATCH
flawfinder --patch PATCH <dir>

我得到了输出

Examining <dir>/<file.c>
                                     
FINAL RESULTS:                       
                                     
                                     
ANALYSIS SUMMARY:                    
                                     
No hits found.                       

解决方法

对于那些感兴趣的人:这确实是一个问题,因为 git diff 格式与统一的 diff / svn diff 格式略有不同。

diff --git a/file.c b/file.c
index 19651c89a3..c119389931 100644                                             
--- a/file.c
+++ b/file.c
@@ -5017,6 +5017,15 @@ static void foo()                         

svn/unified diff 在最后一个 @@ 之后没有函数名。 这是在缺陷查找器.py 中使用的正则表达式:

 diff_hunk = re.compile(r'^@@ -\d+(,\d+)?\s+\+(?P<linenumber>\d+)[,].*@@$')

只需删除正则表达式中的 $ 就足以使其适用于 git。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。