首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Semgrep如何处理两个相互冲突的类型元类?

Semgrep如何处理两个相互冲突的类型元类?
EN

Stack Overflow用户
提问于 2022-06-15 00:04:50
回答 1查看 48关注 0票数 2

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

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

代码语言:javascript
复制
import lib1.* // has Foo class

f = Foo()
f.bar()

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

代码语言:javascript
复制
import lib2.* // has different Foo class

f2 = Foo()
f2.baz()

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

代码语言:javascript
复制
pattern: (Foo $F)

因为我的模式对导入一无所知,所以它只是返回两个文件的结果吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-15 00:04:50

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

代码语言:javascript
复制
pattern: (lib1.Foo $F)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72624591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档