Skip to content

Latest commit

 

History

History
178 lines (147 loc) · 4.87 KB

File metadata and controls

178 lines (147 loc) · 4.87 KB

VSCode

Integration with VSCode is accomplished using the task interface. This interface allows VSCode to run VSG in a shell and extract the results.

Configuring

The task interface uses the task.json file to tell VSCode how to execute a task. The file can be generated by choosing the menu option Terminal->Configure Tasks......

image

...then choosing Create tasks.json file from template...

image

...and finally choosing the Others option.

image

This will create a template task.json file:

image

Replace the contents of the template file with the following...

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "label": "vsg-check",
      "type": "shell",
      "command": "vsg -f ${relativeFile}",
      "problemMatcher": {
        "owner": "vsg",
        "fileLocation": ["autoDetect", "${workspaceFolder}"],
        "pattern": [
          {
            "regexp": "^File:  ([^\\s]*)\\s*$",
            "file": 1
          },
          { // match =======
            "regexp": "^.*$"
          },
          { // match Phase
            "regexp": "^.*$"
          },
          { // match Total Rules Checked
            "regexp": "^.*$"
          },
          { // match Total Violations
            "regexp": "^.*$"
          },
          { // match Error count
            "regexp": "^.*$"
          },
          { // match Warning count
            "regexp": "^.*$"
          },
          { // match ------
            "regexp": "^.*$"
          },
          { // match Rule/severity/line/solution header
            "regexp": "^.*$"
          },
          { // match ------
            "regexp": "^.*$"
          },
          {
            "regexp": "^  ([^\\s]*_\\d*)\\s*. ([^\\s]*)\\s*.\\s*([^\\s]*) . (.*)$",
            "code": 1,
            "severity": 2,
            "location": 3,
            "message": 4,
            "loop": true
          }
        ]
      }
    },
    {
      "label": "vsg-fix",
      "type": "shell",
      "command": "vsg -f ${relativeFile} --fix",
      "problemMatcher": {
        "owner": "vsg",
        "fileLocation": ["autodetect", "${workspaceFolder}"],
        "pattern": [
          {
            "regexp": "^File:  ([^\\s]*)\\s*$",
            "file": 1
          },
          { // match =======
            "regexp": "^.*$"
          },
          { // match Phase
            "regexp": "^.*$"
          },
          { // match Total Rules Checked
            "regexp": "^.*$"
          },
          { // match Total Violations
            "regexp": "^.*$"
          },
          { // match Error count
            "regexp": "^.*$"
          },
          { // match Warning count
            "regexp": "^.*$"
          },
          { // match ------
            "regexp": "^.*$"
          },
          { // match Rule/severity/line/solution header
            "regexp": "^.*$"
          },
          { // match ------
            "regexp": "^.*$"
          },
          {
            "regexp": "^  ([^\\s]*_\\d*)\\s*. ([^\\s]*)\\s*.\\s*([^\\s]*) . (.*)$",
            "code": 1,
            "severity": 2,
            "location": 3,
            "message": 4,
            "loop": true
          }
        ]
      }
    }
  ]
}

...and save the file:

Executing Task

The two tasks vsg-check and vsg-fix are available under the Terminal=>Run Task... menu option...

image

Keybindings

A keybinding can be created to make it easier to run the vsg-check and vsg-fix tasks. This involves creating a keybindings.json file. This file is located in the same directory as the tasks.json file.

Copy the following into the keybindings.json file...

[
    {"key": "ctrl+f", "command": "workbench.action.tasks.runTask", "args": "vsg-fix"},
    {"key": "ctrl+i", "command": "workbench.action.tasks.runTask", "args": "vsg-check"}
]

...and save it to the same directory as the task.json file.

Now the open file buffer can be checked for errors using ctrl+i.

image

The violations are shown in the Problems tab:

image

The violations can be fixed manually, or by using ctrl+f...

image