首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在忏悔规则中使用conftest

在忏悔规则中使用conftest
EN

Stack Overflow用户
提问于 2021-10-25 14:00:52
回答 1查看 104关注 0票数 0

我有以下XML (它是一个dotnet项目文件):

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <None Remove="appsettings.json" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="LoadA1Test" />
  </ItemGroup>
</Project>

和下列规则:

代码语言:javascript
复制
package main

project_reference = input.Project.ItemGroup[i].ProjectReference

deny[msg] {

    not project_reference[i]["-Include"] = "XYZ"
    msg = sprintf("in %s works \n", [project_reference[i]])
}

deny[msg] {
    
    not contains(project_reference[i]["-Include"],"XYZ")
    msg = sprintf("in %s doesn't work \n", [project_reference[i]])
}

当我尝试使用second验证时,第一条规则会如预期的那样失败,但是第二条规则会通过。我试了几个选择,但我不知道我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-25 14:50:29

有几件事看上去有点奇怪:

项组的

  • 迭代需要在规则中进行。
  • 使用!= x来检查字符串是否等于x.

而且我不认为您需要重用i迭代器,因为您正在项目引用中查找一个映射键。像这样的事情可能会起作用:

代码语言:javascript
复制
package main

deny[msg] {
    project_reference := input.Project.ItemGroup[_].ProjectReference
    project_reference["-Include"] != "XYZ"
    msg = sprintf("-Include (%v) != XYZ", [project_reference["-Include"]])
}

deny[msg] {
    project_reference := input.Project.ItemGroup[_].ProjectReference
    not contains(project_reference["-Include"], "XYZ")
    msg = sprintf("-Include: (%v) does not contain XYZ", [project_reference["-Include"]])
}

虽然我不确定逻辑,因为如果-Include值不是XYZ,那么第一个规则总是失败的,所以如果-Include不包含该值,那么添加另一个规则也没有多大意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69709393

复制
相关文章

相似问题

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