semgrep - Semgrep 如何处理两个冲突的类型化元变量类?

标签 semgrep

Semgrep 允许您 specify types在你的模式中,但是如果我碰巧有两个不同的类,它们具有相同的简单类型,但具有不同的完全限定名称,那么在编写我只想针对其中一种类型的规则时,如何消除两者之间的歧义?

我将通过示例解释我的问题。假设您有两个不同的库,它们都具有相同的类名 Foo。 在我自己的代码的一个文件中,我导入一个库,并使用 Foo 类:

import lib1.* // has Foo class

f = Foo()
f.bar()

在我自己的代码的另一个文件中,我导入另一个库并使用它的 Foo 类:

import lib2.* // has different Foo class

f2 = Foo()
f2.baz()

在我的 Semgrep 规则中,我想从 lib1 中检测 Foo 类型的内容。

pattern: (Foo $F)

由于我的模式对导入一无所知,它是否只返回两个文件的结果?

最佳答案

是的,由于您的模式仅指定类型 Foo,Semgrep 将返回 f1f2 作为匹配项。如果您只想匹配其中之一,您可以指定要匹配的类型的完全限定名称:

pattern: (lib1.Foo $F)

关于semgrep - Semgrep 如何处理两个冲突的类型化元变量类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72624591/

相关文章:

python - Semgrep:寻找错误的导入

javascript - 需要帮助修复 'ensure that user-controlled variables in file paths are validated' semgrep 扫描问题

command-line-interface - 如何从 Semgrep 保存或导出报告/发现/结果?