如何使用带有 git 补丁的 flawfinder
How to use flawfinder with a git patch
我想对我的合并请求使用 flawfinder,从而只分析发生变化的代码。我看到 flawfinder 支持补丁,所以我认为它真的很容易。
问题是:我无法使用 git 补丁。 Flawfinder 确实识别出它是一个 git 补丁,它确实只扫描需要的文件,但没有命中。如果我 运行 没有补丁参数的 flawfinder 并检查已更改文件的命中,我确实在添加的新行中看到了一些命中。
我尝试了与 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 在最后一个 @@
之后没有函数名。
这是 flawfinder.py 中使用的正则表达式:
diff_hunk = re.compile(r'^@@ -\d+(,\d+)?\s+\+(?P<linenumber>\d+)[, ].*@@$')
只需删除正则表达式中的 $
就足以使其适用于 git。
我想对我的合并请求使用 flawfinder,从而只分析发生变化的代码。我看到 flawfinder 支持补丁,所以我认为它真的很容易。
问题是:我无法使用 git 补丁。 Flawfinder 确实识别出它是一个 git 补丁,它确实只扫描需要的文件,但没有命中。如果我 运行 没有补丁参数的 flawfinder 并检查已更改文件的命中,我确实在添加的新行中看到了一些命中。 我尝试了与 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 在最后一个 @@
之后没有函数名。
这是 flawfinder.py 中使用的正则表达式:
diff_hunk = re.compile(r'^@@ -\d+(,\d+)?\s+\+(?P<linenumber>\d+)[, ].*@@$')
只需删除正则表达式中的 $
就足以使其适用于 git。