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

已按文档配置{:autocontracts}但Dafny未生成自动合约,该如何处理?

解决Dafny自动生成autocontracts无反应的问题
  • 确认Dafny版本兼容性
    autocontracts是Dafny 3.10及以后版本才支持的功能,先在终端执行dafny --version查看当前版本,低于3.10的话需要升级到最新稳定版。

  • 规范代码结构
    必须保证代码符合要求的格式:

    • 类的{:autocontracts}标记要放在类定义的上方,不能嵌套在类内部
    • Valid谓词必须声明为predicate Valid(),且如果类包含字段,必须加上reads this子句,示例代码如下:
      {:autocontracts}
      class BankAccount {
        var balance: int
        predicate Valid()
          reads this
        {
          balance >= 0
        }
      }
      
  • 主动触发生成操作
    VSCode中没有默认的按钮,需要手动触发命令:

    1. 打开命令面板(快捷键Ctrl+Shift+P或Cmd+Shift+P)
    2. 输入并执行Dafny: Generate Auto-Contracts命令
      也可以用终端命令行直接处理文件:dafny generate-autocontracts your-dafny-file.dfy,生成的合约代码会保存为your-dafny-file_autocontracts.dfy
  • 同步更新VSCode插件
    确保VSCode里的Dafny插件是最新版,插件版本需要和本地Dafny版本匹配,否则可能找不到生成命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:22:44