我有个Semgrep规则:
rules:
- id: create-chat-client
patterns:
- pattern: var $X = GrpcChannel.ForAddress(...);
- pattern: var $Y = new ChatService.ChatServiceClient($X);
languages:
- csharp
message: <pass>
severity: INFO我正试着匹配这个代码:
using Grpc.Net.Client;
using GrpcChat.ProtoBuf;
var channel = GrpcChannel.ForAddress("https://localhost:8888");
var client = new ChatService.ChatServiceClient(channel);这些匹配分别,但‘模式’应该是一个“和”匹配,它失败。我肯定漏掉了一些明显的东西。有人看到什么了吗?
发布于 2022-03-26 02:37:45
使用pattern-inside工作:
rules:
- id: chat
patterns:
- pattern-inside: |
var $X = GrpcChannel.ForAddress(...);
...
- pattern: var $Y = new ChatService.ChatServiceClient($X);
languages:
- csharp
message: <pass>
severity: INFO对于这个测试用例:
using Grpc.Net.Client;
using GrpcChat.ProtoBuf;
var channel = GrpcChannel.ForAddress("https://localhost:8888");
// ruleid: chat
var client = new ChatService.ChatServiceClient(channel);当我运行测试时:
% semgrep --test rules/
✓ All tests passed!https://stackoverflow.com/questions/71459777
复制相似问题