{"id":48497613,"url":"https://github.com/flowr-analysis/vscode-flowr","last_synced_at":"2026-04-07T13:02:32.702Z","repository":{"id":225997963,"uuid":"762283966","full_name":"flowr-analysis/vscode-flowr","owner":"flowr-analysis","description":"flowR Extension for Visual Studio Code and Positron","archived":false,"fork":false,"pushed_at":"2026-03-26T17:43:44.000Z","size":4514,"stargazers_count":8,"open_issues_count":49,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-27T06:08:48.919Z","etag":null,"topics":["code-comprehension","extension","positron","program-comprehension","r","static-analysis","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flowr-analysis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","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":"2024-02-23T13:10:16.000Z","updated_at":"2026-03-26T17:43:44.000Z","dependencies_parsed_at":"2025-12-11T01:07:34.158Z","dependency_job_id":null,"html_url":"https://github.com/flowr-analysis/vscode-flowr","commit_stats":null,"previous_names":["code-inspect/vscode-flowr","flowr-analysis/vscode-flowr"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/flowr-analysis/vscode-flowr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowr-analysis%2Fvscode-flowr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowr-analysis%2Fvscode-flowr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowr-analysis%2Fvscode-flowr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowr-analysis%2Fvscode-flowr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flowr-analysis","download_url":"https://codeload.github.com/flowr-analysis/vscode-flowr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowr-analysis%2Fvscode-flowr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31511795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["code-comprehension","extension","positron","program-comprehension","r","static-analysis","vscode-extension"],"created_at":"2026-04-07T13:02:32.069Z","updated_at":"2026-04-07T13:02:32.689Z","avatar_url":"https://github.com/flowr-analysis.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![vscode-flowR logo](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/flowR-vscode-positron-logo.png)](https://github.com/flowr-analysis/flowr)\n\n\u003cdiv align=\"center\"\u003e\n\n[![Marketplace](https://badgen.net/vs-marketplace/v/code-inspect.vscode-flowr?color=green)](https://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr)\n[![Marketplace](https://badgen.net/open-vsx/version/code-inspect/vscode-flowr?label=Positron/Open%20VSX\u0026color=18a066)](https://open-vsx.org/extension/code-inspect/vscode-flowr)\n[![flowR Badge](https://badgen.net/badge/icon/flowr/cyan?icon=github\u0026label)](https://github.com/flowr-analysis/flowr)\n[![vscode.dev Badge](https://badgen.net/badge/icon/vscode.dev/blue?icon=visualstudio\u0026label)](https://vscode.dev)\n\n\u003c/div\u003e\n\nThis extension brings [_flowR_](https://github.com/flowr-analysis/flowr) to Visual Studio Code and Positron. See the [installation instructions](#installing) to get started!\nWith this extension, you gain access to the following features (as the extension is under active development, many more features are [planned](https://github.com/flowr-analysis/vscode-flowr/issues?q=is%3Aissue%20state%3Aopen%20type%3AFeature)):\n\n1. 🐞 [**Linting**](#linting): Analyze your R scripts for common issues and potential bugs and apply quick fixes for issues that can be fixed automatically.\n\n2. 🍕 [**Slicing**](#slicing): Reduce the Program to just the parts relevant to a specific variable or figure or see what influence a loaded dataset has on the program.\n   This is useful, when you want to reuse code for a figure or statistical analysis in another context or if you just want to understand the code better.\n\n   \u003cdetails\u003e\u003csummary\u003eSlicing Example\u003c/summary\u003e\n\n      ![Slicing with flowR](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/gif/slice-with-clear-opt.gif)\n\n   \u003c/details\u003e\n\n3. 📚 [**Inspect Dependencies**](#dependency-view): View the library a given script loads, the files it reads and writes, as well as the sourced scripts.\n   This helps you understanding what is required to run a script, where it reads data from, and where it writes data to.\n\n   \u003cdetails\u003e\u003csummary\u003eExample of the Dependency View\u003c/summary\u003e\n\n      ![Dependency View with flowR](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/gif/show-dependencies-opt.gif)\n\n   \u003c/details\u003e\n\n4. 🔎 [**Resolve Values**](#dataflow): Get information on the values inferred by flowR.\n\n   \u003cdetails\u003e\u003csummary\u003eExample of the inferred values\u003c/summary\u003e\n\n      ![Inferring Values with flowR](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/gif/value-info.gif)\n\n   \u003c/details\u003e\n\n5. 🕸️ [**Dataflow Graph**](#dataflow): Visualize the dataflow in a script.\n   This helps you understand how data is transformed in a script and where it is used.\n\n   \u003cdetails\u003e\u003csummary\u003eExample of the Dataflow Graph\u003c/summary\u003e\n\n      ![Dataflow Graph with flowR](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/gif/show-df-graph-opt.gif)\n\n   \u003c/details\u003e\n\n6. 🧑‍💻 [**flowR REPL Access**](#repl): Explore flowR's capabilities in a REPL (not available in the browser).\n   This allows you to interactively explore the features of flowR and understand how it can help you in your daily work.\n\n   \u003cdetails\u003e\u003csummary\u003eExample of the flowR REPL\u003c/summary\u003e\n\n      ![The flowR REPL](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/gif/use-repl-opt.gif)\n\n   \u003c/details\u003e\n\nIf you notice anything that could be improved, have a feature request, or notice a bug, please [open an issue](#issues-and-feature-requests)!\n\n\u003cdetails\u003e\u003csummary\u003eReporting an Issue\u003c/summary\u003e\n\n   Using the bug icon opens the issue form in your default browser:\n\n   ![How to report an issue](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/gif/report-issue-opt.gif)\n\n\u003c/details\u003e\n\nSo far, the extension appeared in the following publications:\n\n* [Tool Demonstration at ASE '24](https://doi.org/10.1145/3691620.3695359)\n  \u003cdetails\u003e\u003csummary\u003eReference\u003c/summary\u003e\n\n   ```bibtex\n   @inproceedings{DBLP:conf/kbse/SihlerT24,\n      author       = {Florian Sihler and\n                        Matthias Tichy},\n      editor       = {Vladimir Filkov and\n                        Baishakhi Ray and\n                        Minghui Zhou},\n      title        = {flowR: {A} Static Program Slicer for {R}},\n      booktitle    = {Proceedings of the 39th {IEEE/ACM} International Conference on Automated\n                        Software Engineering, {ASE} 2024, Sacramento, CA, USA, October 27\n                        - November 1, 2024},\n      pages        = {2390--2393},\n      publisher    = {{ACM}},\n      year         = {2024},\n      url          = {https://doi.org/10.1145/3691620.3695359},\n      doi          = {10.1145/3691620.3695359},\n      timestamp    = {Mon, 03 Mar 2025 21:16:51 +0100},\n      biburl       = {https://dblp.org/rec/conf/kbse/SihlerT24.bib},\n      bibsource    = {dblp computer science bibliography, https://dblp.org}\n   }\n   ```\n\n   \u003c/details\u003e\n\nFor general publications on flowR, please check the [main flowR Repository](https://github.com/flowr-analysis/flowr?tab=readme-ov-file#-publications-on-flowr).\n\n\n## Use\n\nThis section provides a brief overview of the features provided by this extension and how to use them. See [below](#installing) for instructions on how to install the extension.\n\n### Prerequisites\n\nInstalling the extension is sufficient for all features!\nYet, flowR may benefit from a local R installation (which has to be available on your `PATH`) so it can incorporate your local R setup into its analysis.\n\nAdditionally, we recommend using the [R extension](https://marketplace.visualstudio.com/items?itemName=REditorSupport.r) for Visual Studio Code or the [R extension](https://open-vsx.org/vscode/item/?itemName=REditorSupport.r) for Positron along with this extension. For more information on R development in Visual Studio Code, you can also check out [this helpful article](https://code.visualstudio.com/docs/languages/r). In case of migration from RStudio to Positron you can also check out [this article](https://positron.posit.co/rstudio-keybindings.html).\n\n### Linting\n\nBy default, the extension ships with all linting rules that are available in *flowR*, extensive information about which can be found on the [wiki page](https://github.com/flowr-analysis/flowr/wiki/Linter). Some linters additionally ship with code actions in the form of quick fixes which, once invoked, automatically edit or remove the relevant code snippet.\n\nTo manually invoke the linter, you can use the \"Code Quality Analysis (Linter)\" command. Additionally, you can modify under what conditions the linter automatically refreshes its results in the extension's settings.\n\n![A screenshot of a deprecated function linting result](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/lint-match.png)\n\nLinting results found in the code will be highlighted with a squiggly line underneath them, and will additionally appear in VS Code's Problems view. Hovering over a linting results also provides a link to the relevant wiki page, where you can find more information about the rule and potential fixes.\n\n![A screenshot of a set of linting results in the Problems view](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/lint-problems-view.png)\n\nFor issues that have quick fixes available, you can use the lightbulb icon in your code window, hover over the ⚠️ icon in VS Code's Problems view, or use the builtin Quick Fix command.\n\n![A screenshot of a quick fix suggestion for a naming convention mismatch](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/lint-quick-fix.png)\n\n### Slicing\n\nSlicing describes the process of reducing a program to just the parts relevant to a specific variable or figure. A backward slice includes all parts of the program that a variable or figure depends on (the *relevant code*), while a forward slice includes all parts of the program that a variable has an *influence* on.\n\nWith the extension loaded, select a variable you are interested in and either press \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eS\u003c/kbd\u003e to highlight a backward slice for it once or \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e to mark the position and continuously update the backward slice as you edit the file. With the command palette (\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e), you can additionally highlight forward slices.\n\nThe editor will gray out all code that is not part of the generated slice.\nBy default, the editor will also show you a reconstruction of any backward slices in a separate view (this can be changed in the settings).\n\nIf you want to clear the slice highlight, press \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eC\u003c/kbd\u003e or use the icon in the upper right of your editor:\n\n![Clear Slice](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/clear-slice.png)\n\nNote, that there are other ways to slice, for example with the [Dependency View](#dependency-view).\n\n#### Detailed Explanation\n\nYou can generate a [backward slice](https://github.com/flowr-analysis/flowr/wiki/Terminology#program-slice) of the currently highlighted variable in any R code by using the \"Show Relevant Code for Cursor Position Once (Backward Slice)\" command. All code that is not part of the generated slice will then be grayed out. To generate a forward slice, use the \"Show Influence for Cursor Position Once (Forward Slice)\" command.\n\nOptionally, you can also use one of the two \"Toggle Slice\" options, which will automatically cause the slice to be updated when code changes occur or when the cursor is moved.\n\nYou can also view the reconstruction of a piece of code based on the current backward slice. The \"Show Current Backward Slice in Editor (Reconstruct)\" command opens a view next to the current editor that will automatically update the reconstruction as you slice. By default, this should be shown to you automatically whenever you create a backward slice (but this can be changed in the settings).\n\nTo clear the slice highlighting, use the \"Clear Current Slice Presentation\" command or the crossed out eye icon in the upper right of the editor.\n\n![A screenshot of the extension being used to reconstruct a slice](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/reconstruct.png)\n\n### Dependency View\n\n![A screenshot of a dependency diagram for a piece of code](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/dependencies.png)\n\nUsing the extension, the sidebar should contain a flowR icon which holds more information on the current file, listing the libraries loaded, the files read and written, and the sourced scripts. If you expand the respective sections, clicking on the found entries should open them in the editor. The context menu (available with a right click) allows you to [slice](#slicing) for the selected entry.\n\n### Value Resolution\n\nYou can get information on the values inferred by flowR by hovering over variables in R source files. This will show you a summary of the inferred values, including types and possible values.\n\n### Dataflow\n\nYou can generate and view the dataflow graph for any R source file by using the \"Show Dataflow Graph\" command while the file is open in the active editor (open the command palette with \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e and search for the command). The dataflow graph will then be displayed in an interactive tab on the side, where you can pan and zoom to inspect it. There is also a simplified version that contains less details!\n\nIn the future, we plan on including the ability to select nodes in the dataflow graph and have relevant code sections highlighted, and vice versa.\n\n![A screenshot of a dataflow diagram for a piece of code](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/dataflow.png)\n\n### REPL\n\nflowR offers a [REPL](https://github.com/flowr-analysis/flowr/wiki/Interface#using-the-repl), a \"read-eval-print loop\", which allows you to interactively explore the features of flowR. You can open a new REPL either with the \"Launch a new flowR REPL\" command (in the command palette which you can open with \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eP\u003c/kbd\u003e) or by clicking on the shell icon of the flowR sidebar:\n\n![How to open the flowR REPL](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/repl.png)\n\nThis opens a new terminal in which you can interact with the (local) flowR installation:\n\n![A screenshot of the flowR REPL](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/repl-sample.png)\n\n## Installing\n\n### From Visual Studio Marketplace\n\nYou can get the extension here: \u003chttps://marketplace.visualstudio.com/items?itemName=code-inspect.vscode-flowr\u003e.\n\n\u003cdetails\u003e\u003csummary\u003eExample Installation\u003c/summary\u003e\n\n   ![How to install the extension](https://raw.githubusercontent.com/flowr-analysis/vscode-flowr/refs/heads/main/media/gif/install-extension-opt.gif)\n\n\u003c/details\u003e\n\n### From Open VSX\nYou can get the extension here: \u003chttps://open-vsx.org/extension/code-inspect/vscode-flowr\u003e.\n\n\n### From GitHub Release\n\nYou can find official releases of the extension in the [Releases](https://github.com/flowr-analysis/vscode-flowr/releases) section of the repository. Simply select the version you would like to download, open up the asset's section at the bottom, and download the `vscode-flowr-[version].vsix` contained in it.\n\nFrom Visual Studio Code, open the Extensions tab and click on the three dots in the top right to select \"Install from VSIX...\" Alternatively, you can use the Command Palette to select the option directly. Then, you can select the `vsix` file you downloaded to install it.\n\nThis works the same way in Positron. The repository for Visual Studio Code is the same as the one for Positron, so you can use the same `vsix` file.\n\n### From Build Artifact\n\nYou can easily download the most recent build of the extension by heading to the [Actions tab](https://github.com/flowr-analysis/vscode-flowr/actions/workflows/package.yml), where you will find a list of runs. Selecting the most recent run will display a summary of it, at the bottom of which you can find the Artifacts section and the `Extension vsix` artifact. Download it and unzip it.\n\nThen, you can install it the same way as you would the `vsix` downloaded [from GitHub Releases](#from-github-release).\n\n## Issues and Feature Requests\n\nIf you have an issue with the extension, or you have a good idea for a new feature, you can create a new issue from within the extension, and it will automatically be populated with some information about your setup.\n\nTo do so, simply press the bug-shaped button in the [dependency view](#dependency-view) or use the \"Report Issue or Request Feature\" command.\n\n## Development\n\n### Building and Running from Source\n\nAfter cloning the repository, required dependencies can be installed using [npm](https://www.npmjs.com/):\n\n```shell\nnpm ci\n```\n\nNote that this does not install [R](https://www.r-project.org/), which is also not strictly required for development, but (obviously) highly encouraged.\n\nOpening the cloned repository in Visual Studio Code allows using the [existing launch configurations](https://github.com/flowr-analysis/vscode-flowr/blob/main/.vscode/launch.json) which can launch Visual Studio Code with the extension enabled. To use them, open the Run and Debug view and press the Run button at the top, or use the \u003ckbd\u003eF5\u003c/kbd\u003e shortcut to start debugging.\n\nYou can then open the [example folder](https://github.com/flowr-analysis/vscode-flowr/tree/main/example) contained in this repository to try out the extension for yourself.\n\nTo build the extension into a `vsix` file, see [this documentation article](https://code.visualstudio.com/api/working-with-extensions/publishing-extension).\n\nThis will also work for Positron, as the extension is the same for both Visual Studio Code and Positron.\n\n### Git Hooks\n\nThis repository contains some git hooks to ensure that linting and other actions happen. Register these hooks by running:\n\n```shell\ngit config core.hooksPath .githooks\n```\n\n### Contributors\n\n\u003ca href=\"https://github.com/flowr-analysis/vscode-flowr/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=flowr-analysis/vscode-flowr\"  alt=\"vscode-flowR Contributors\"/\u003e\n\u003c/a\u003e\n\n----\n\n_vscode-flowr_ is part of _flowr_, which is actively developed by [Florian Sihler](https://eagleoutice.github.io/portfolio/) under the\n[GPLv3 License](LICENSE).\\\nIt is partially supported by the German Research Foundation (DFG) under the grant [504226141](https://gepris.dfg.de/gepris/projekt/504226141) (\"CodeInspector\").\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowr-analysis%2Fvscode-flowr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowr-analysis%2Fvscode-flowr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowr-analysis%2Fvscode-flowr/lists"}