{"id":20910211,"url":"https://github.com/viperproject/gobra-ide","last_synced_at":"2026-04-26T09:05:41.250Z","repository":{"id":37868141,"uuid":"299527273","full_name":"viperproject/gobra-ide","owner":"viperproject","description":"VSCode Plugin for Gobra","archived":false,"fork":false,"pushed_at":"2026-03-22T07:26:21.000Z","size":3040,"stargazers_count":11,"open_issues_count":6,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-03-22T22:29:19.532Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gobra.ethz.ch","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viperproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-29T06:40:45.000Z","updated_at":"2026-03-15T07:37:02.000Z","dependencies_parsed_at":"2026-02-28T10:05:21.167Z","dependency_job_id":null,"html_url":"https://github.com/viperproject/gobra-ide","commit_stats":null,"previous_names":[],"tags_count":349,"template":false,"template_full_name":null,"purl":"pkg:github/viperproject/gobra-ide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fgobra-ide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fgobra-ide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fgobra-ide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fgobra-ide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viperproject","download_url":"https://codeload.github.com/viperproject/gobra-ide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fgobra-ide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T14:14:15.639Z","updated_at":"2026-04-01T17:12:16.571Z","avatar_url":"https://github.com/viperproject.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Visual Studio Code extension for Gobra\n\n[![Test Status](https://github.com/viperproject/gobra-ide/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/viperproject/gobra-ide/actions?query=workflow%3Atest+branch%3Amaster)\n[![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](./LICENSE)\n\nThis Visual Studio Code extension allows interactive verification using Gobra.  \nAdditionally, other visual features such as inspecting the intermediate\ntranslation of Gobra are available.\n\n\n## Installation Instructions\n\n1. Clone this repository\n2. Change directory to the gobra-ide directory created in the previous step.\n3. Initialize and fetch the submodules: `git submodule update --init --recursive`\n\n\n### Assemble the server:\n1. Navigate to the server folder: `cd server`\n2. Assemble the binary: `sbt assembly` (or `sbt -java-home \u003cpath to java home\u003e assembly` to provide a particular JDK)\n\nNote: `sbt` has to be installed, which in turn requires a JDK.\n`adoptopenjdk13` is known to *not* be compatible with the currently used sbt version.\nJDK version 11 is working (assuming [Homebrew](https://brew.sh) is used):\n\n`brew tap AdoptOpenJDK/openjdk`\n\n`brew cask install adoptopenjdk11`\n\n\n### Running the Client\n1. Install dependencies: `cd client; npm install; cd ..`\n2. Open VSCode on the `client` folder.\n3. Press Ctrl+Shift+B resp. Cmd+Shift+B to compile the client.\n4. Open the 'Run and Debug' view container and run the 'Launch Client' task.\n   This will automatically start the server according to the Gobra-IDE settings.\n   To use the server that has been assembled in the [previous step](#assemble-the-server), configure Gobra-IDE as explained in [Configuring Gobra Tools](#configuring-gobra-tools).\n\nNote: `npm` / node has to be installed.\n\n\n## Configuring Gobra Tools\nGobra Tools collectively represent the client's dependecies.\nIn particular, Gobra Tools consist of the server (called Gobra Server), Z3, and Boogie.\nGobra-IDE supports three modes to fetch the Gobra Tools, which can be configured by setting `gobraSettings.buildVersion` in the extension's settings to `Stable` (default), `Nightly` or `Local`.\n\n### Build versions `Stable` and `Nightly`\n`Stable` and `Nightly` use the latest non-prerelease and latest release, resp., of [Gobra-IDE on GitHub](https://github.com/viperproject/gobra-ide/releases).\nMore specifically, the platform-specific `GobraTools\u003cLinux|Mac|Win\u003e.zip` is downloaded, unzipped, and stored in the following directory in the case of `Stable` (otherwise, replace `Stable` by `Nightly` in the following paths).\n- Linux: `$HOME/.config/Code/User/globalStorage/viper-admin.gobra-ide/Stable/GobraTools`\n- macOS: `$HOME/Library/Application Support/Code/User/globalStorage/viper-admin.gobra-ide/Stable/GobraTools`\n- Windows: `%APPDATA%\\Roaming\\Code\\User\\globalStorage\\viper-admin.gobra-ide\\Stable\\GobraTools`\n\nNote that Gobra-IDE tries to download the Gobra Tools only if no Gobra Tools can be found locally in the respective folder and only after asking the user to download them.\nThis ensures that the Gobra Tools are not unknowingly replaced by a newer version.\nTo update the Gobra Tools for the currently configured build version, press Ctrl+Shift+P resp. Cmd+Shift+P and select \"Gobra: Update Gobra Tools\".\n\n\n### Build version `Local`\nAlternatively, `Local` allows you to fully customize which dependencies the IDE is using.\nThe following settings (and default values) are taken into account when using build version `Local`:\n```\n\"gobraDependencies.gobraToolsPaths\": {\n   \"gobraToolsBasePath\": {\n      \"windows\": \"%APPDATA%\\\\Roaming\\\\Code\\\\User\\\\globalStorage\\\\viper-admin.gobra-ide\\\\Local\\\\GobraTools\",\n      \"linux\": \"$HOME/.config/Code/User/globalStorage/viper-admin.gobra-ide/Local/GobraTools\",\n      \"mac\": \"$HOME/Library/Application Support/Code/User/globalStorage/viper-admin.gobra-ide/Local/GobraTools\"\n   },\n   \"z3Executable\": {\n      \"windows\": \"$gobraTools$\\\\z3\\\\bin\\\\z3.exe\",\n      \"linux\": \"$gobraTools$/z3/bin/z3\",\n      \"mac\": \"$gobraTools$/z3/bin/z3\"\n   },\n   \"boogieExecutable\": {\n      \"windows\": \"$gobraTools$\\\\boogie\\\\Binaries\\\\Boogie.exe\",\n      \"linux\": \"$gobraTools$/boogie/Binaries/Boogie\",\n      \"mac\": \"$gobraTools$/boogie/Binaries/Boogie\"\n   },\n   \"serverJar\": {\n      \"windows\": \"$gobraTools$\\\\server\\\\server.jar\",\n      \"linux\": \"$gobraTools$/server/server.jar\",\n      \"mac\": \"$gobraTools$/server/server.jar\"\n   }\n}\n```\n`gobraDependencies.gobraToolsPaths.gobraToolsBasePath` configures the path that the IDE is using to locate the Gobra Tools. This path is used to substitute `$gobraTools$` in `gobraDependencies.gobraToolsPaths.z3Executable`, `gobraDependencies.gobraToolsPaths.boogieExecutable`, and `gobraDependencies.gobraToolsPaths.serverJar`.\n\nFor example, if you want to use Boogie and Z3 from the latest `Nightly` release but use your own built server, you may use the following configuration.\nThis configures Gobra-IDE to use the nightly GobraTools but overwrites the path to the server's JAR file.\n```\n\"gobraDependencies.gobraToolsPaths\": {\n   \"gobraToolsBasePath\": {\n      \"windows\": \"%APPDATA%\\\\Roaming\\\\Code\\\\User\\\\globalStorage\\\\viper-admin.gobra-ide\\\\Nightly\\\\GobraTools\",\n      \"linux\": \"$HOME/.config/Code/User/globalStorage/viper-admin.gobra-ide/Nightly/GobraTools\",\n      \"mac\": \"$HOME/Library/Application Support/Code/User/globalStorage/viper-admin.gobra-ide/Nightly/GobraTools\"\n   },\n   \"serverJar\": {\n      \"windows\": \u003cpath to JAR\u003e,\n      \"linux\": \u003cpath to JAR\u003e,\n      \"mac\": \u003cpath to JAR\u003e\n   }\n}\n```\n\n\n#### Debugging paths used by Gobra-IDE\nIn case it is unclear which paths Gobra-IDE is using to locate the server, Z3 or Boogie, Gobra-IDE provides useful output in Visual Studio Code \u003e View \u003e Output \u003e Gobra-IDE (in the dropdown menu).\nBefore launching the server, Gobra-IDE first locates your Java installation, tries to run `\u003cpath to java\u003e -version` followed by running `\u003cpath to z3\u003e --version`.\nTypical output (shortened) looks as follows, where `\u003c ... \u003e` is used to annotate or omit parts of the output.\n\n```\nEnsuring dependencies for build channel Stable \u003c indicates which build version Gobra-IDE is using \u003e\nChecking Java...\nSearching for Java home...\nUsing Java home {\n  \"path\": \"/opt/homebrew/Cellar/openjdk/23.0.1/libexec/openjdk.jdk/Contents/Home\",\n  \u003c further details about the located Java home \u003e\n  }\n}\nGobra IDE: Running '/opt/homebrew/Cellar/openjdk/23.0.1/libexec/openjdk.jdk/Contents/Home/bin/java -version'\n┌──── Begin stdout ────┐\n\n└──── End stdout ──────┘\n┌──── Begin stderr ────┐\nopenjdk version \"23.0.1\" 2024-10-15\n\u003c further version information \u003e\n\n└──── End stderr ──────┘\nChecking Z3...\nGobra IDE: Running '/Users/arquintlinard/Library/Application Support/Code/User/globalStorage/viper-admin.gobra-ide/Stable/GobraTools/z3/bin/z3 --version'\n┌──── Begin stdout ────┐\nZ3 version 4.8.6 - 64 bit\n\n└──── End stdout ──────┘\n┌──── Begin stderr ────┐\n\n└──── End stderr ──────┘\nGobra IDE: Running '\"/opt/homebrew/Cellar/openjdk/23.0.1/libexec/openjdk.jdk/Contents/Home/bin/java\" -Xss128m -jar \u003c omitted path to the server JAR\u003e --logLevel TRACE' (relative to \u003c omitted path used as working directory \u003e)\n```\n\n\n## Locally checking license headers:\nRun `npx github:viperproject/check-license-header#v1 check --config .github/license-check/config.json --strict` in the repository's root directory to check whether all files adhere to the license configuration\n\n\n## Release Management\nA nightly release is created daily at 7:00 UTC.\nStable releases should be created as follows (manually triggered nightly releases can be created similarly as well):\n1. Open [test workflow on GitHub.com](https://github.com/viperproject/gobra-ide/actions?query=workflow%3Atest)\n2. Click on \"Run workflow\"\n3. Choose `master` branch, type `stable` (`nightly` for manually creating a nightly release), a tag name (e.g. `v1.0-beta.1`), and a release name (this will become the release's title).\n\nType `stable` will create a draft release with the chosen tag name (the tag itself will be created when publishing the release) and release name.\nThe release body will consist of the commit hashes of the depending repositories.\nIn addition, the release assets will be created and attached to the release.\nPlease wait until the workflow has completed before publishing the release because Gobra IDE will use the assets of the latest published release.\n\nIn case the type `nightly` was selected, the same steps will be performed as done for the periodic nightly releases.\nNote that in this case the tag name and release name will be ignored.\n\nAlternatively, the manual triggering of the workflow can be done via command line:\n```\ncurl -X POST -u \u003cusername\u003e:\u003ctoken\u003e -H \"Accept: application/vnd.github.v3+json\" \"https://api.github.com/repos/viperproject/gobra-ide/actions/workflows/test.yml/dispatches\" -d '{\"ref\":\"\u003cbranch name\u003e\", \"type\":\"stable\", \"tag_name\": \"v1.0-beta.1\", \"release_name\": \"1.0 Beta 1\"}'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fgobra-ide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviperproject%2Fgobra-ide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fgobra-ide/lists"}