You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何抑制Pact verify执行时产生的:OutputWarning:警告

问题说明

自有模块内置了属性测试、不变量等形式化验证模型,需要借助Pact的形式化验证能力完成校验。执行(verify 'my-module)命令时,由于my-module依赖coin-v4合约,控制台输出如下警告:

:OutputWarning: Unsupported operation: validate-principal: substituting True
:OutputWarning: Unsupported operation: is-charset: substituting True

以上警告由依赖的coin合约触发,并非自有合约抛出,需要确认可行的警告抑制方案。

可行处理方案
  • 方案一:启动验证时添加依赖警告过滤参数
    执行Pact验证命令时追加--omit-deps-warn启动参数,完整命令参考:
    pact --omit-deps-warn -e "(verify 'my-module)"
    
    该参数会自动过滤所有非当前待验证模块(包括第三方依赖、系统内置依赖合约)抛出的未支持操作替换警告,不会屏蔽自有模块触发的校验警告,也不会影响自有模块的验证结果准确性。
  • 方案二:本地验证环节为依赖合约补充验证桩
    针对警告中提到的validate-principal、is-charset两个暂未被Pact验证器原生支持的函数,可以在本地测试用的coin-v4副本中补充形式化验证桩代码,示例如下:
    (defun validate-principal:bool (p:principal)
      @model [(property (principal-format-valid p))]
      true)
    
    (defun is-charset:bool (input:string target-charset:charset)
      @model [(property (string-conforms-to-charset input target-charset))]
      true)
    
    补充桩代码后,验证器不会再对这两个函数执行默认的True替换逻辑,对应警告会直接消失。注意该操作仅修改本地验证环境的合约副本,不会影响链上正式部署的coin-v4合约逻辑。

注意:不要直接使用全局关闭所有验证警告的参数处理该问题,全局关闭会同时屏蔽自有模块触发的未支持操作警告,可能遗漏自有代码中的验证逻辑漏洞,导致形式化校验结果不可靠。

内容的提问来源于stack exchange,提问作者trh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:36:26