Skip to content

sasjs/vscode-extension

Repository files navigation

Visual Studio Code Extension for SASjs

All Contributors

This project contains the source code for the SASjs VS Code extension, available in the following locations:

If you have questions or would like support on the extension, visit our support group at https://matrix.to/#/#sasjs:4gl.io.

Features

Code Documentation

Generate HTML docs from your SAS code! Requires a local installation of Doxygen. Video overview available here.

Configuration is identical to the SASjs CLI, documented at https://cli.sasjs.io/doc, driven by the docConfig object.

Given that projects may be new to SASjs (without a sasjs/sasjsconfig.json file) the following workflow takes place:

  1. If workspace contains a sasjs/sasjsconfig.json file, go to Step 3
  2. If any parent directories contain a sasjs/sasjsconfig.json file, use this target, and go to Step 4.
  3. Create a workspace-level sasjs/sasjsconfig.json file (and doxy files), and use this as the target.
  4. Generate docs using target docConfig.outDirectory property (sasjsbuild/docs by default)
  5. Put index.html in focus

To view the index.html as a web page, open in Firefox, or right click and view with the Live Server extension (if installed).

Code Execution

You can run code on SAS Viya, SAS 9 EBI or SASjs Server! Just set up the target, and click the running man to execute your SAS code.

snippet

You can also highlight a section of code and run that. Each log returned will be stored in a sasjsresults folder. You can also run the SASjs: Execute Code command from the command palette(Cmd+Shift+P).

The target 🎯 describes the server on which you intend to run the code. The attributes are added to a file in your home directory - ~/.sasjsrc. More info here).

The following attributes are needed for all server types:

  • Name. An alias to represent the target.
  • Server Url. The full URL (including port if needed) of your SAS server.
  • Server Type. Can be SASVIYA, SAS9 or SASJS.

Below are the setup steps specific to each server type

SAS Viya

Enter the following prompts:

  • CLIENT / SECRET. Relevant for SASVIYA - you will need to ask your administrator for these, and they should have the authorization_code grant type. More info here.
  • Follow the link to obtain your authorisation code

SAS9 EBI

For a SAS9 server type, you need to provide your user and passsword in the prompts. Before you can execute code, you will need a runner (an STP in your metadata home directory) - just follow the instructions here: https://cli.sasjs.io/auth/#sasjs-runner

vscodesas9.mp4

If you are using self-signed certificates and are unable to connect due to Error while handling error. Unable to verify the first certificate - but you ARE able to connect using the sasjs cli - then you may need to make the following adjustments:

  1. Set "http.proxySupport": "fallback" in VS Code settings (instead of the default "override")
  2. Set "rejectUnauthorized": false in the httpsAgentOptions object in the sasjsconfig file (sasjs/sasjsconfig.json or ~/.sasjsrc)

SASjs Server

In order to run on Foundation / Base / Desktop SAS you will need a running version of SASjs server (on the same machine where SAS is installed). You can download SASjs server here. Configuration instructions are here.

For local desktop instances of SASjs Server, the serverUrl is likely to be http://localhost:5000

If you are running SASjs Server in server mode, then you will need a client id - the default is clientID1

Directory Synchronisation

Sometimes when working with SAS, you would like to supply some physical content (eg macros, format definitions, Excel, images, etc) to the remote SAS server.

The syncDirectories feature lets you map one or more LOCAL (on your laptop) directories with one or more REMOTE (on the SAS server) directories.

It works by hashing the remote files, comparing the hashes with the local files, and deploying only the changed files. No SSH access needed, all files are deployed using 100% SAS Code.

More information is in the cli docs and this explanatory video.

To configure, just add the syncDirectories object to your local sasjs/sasjsconfig.json file. If this file does not exist, just click the Documentation icon to create one.

SAS Lint and Format

Spend less time on code reviews and more time pushing code! Select VIEW->PROBLEMS (or ctrl+shift+M) to examine the currently opened SAS program for issues.

image

Rules

Rules can be configured by creating a .sasjslint file in the root of your project as follows:

{
    "defaultHeader": "/**{lineEnding}  some custom header{lineEnding}**/",
    "noEncodedPasswords": true,
    "hasDoxygenHeader": true,
    "hasMacroNameInMend": true,
    "hasMacroParentheses": true,
    "ignoreList": [
      "sajsbuild/",
      "sasjsresults/"
    ],
    "indentationMultiple": 2,
    "lowerCaseFileNames": true,
    "maxLineLength": 80,
    "noNestedMacros": true,
    "noSpacesInFileNames": true,
    "noTabs": true,
    "noTrailingSpaces": true
}

Settings in the project (workspace) root (.sasjslint) take the highest precedence, followed by the following locations:

Formatting

SASjs lint can automatically fix certain problems within SAS files, such as trailing spaces, missing Doxygen header blocks and missing macro names in %mend statements. You can use this feature in two ways:

  1. On demand - by selecting 'Format Document' either from the right click menu or from the command palette. format

  2. By enabling automatic formatting of files on save/paste from the Settings menu. image

Compile, Build and Deploy

Single File

If a *.sas file is selected and a Compile, Build, Deploy icon is clicked, then a single file will be compiled, built and deployed. Compiled and built files will be located in sasjsbuild folder at the root of the project. If an error appeared during the process, log file should be created in sasjsresults folder. image

Project

if a sasjsconfig.json file is selected and a Compile, Build, Deploy icon is clicked, then an entire project will be compiled, built and deployed. Compiled and built files will be located in sasjsbuild folder at the root of the project. If an error appeared during the process, log file should be created in sasjsresults folder. image

Snippets

Snippets (code-completion) are provided both for Base SAS (using the official SAS VS Code Extension files) and SASjs Core (using the snippets generator of the SASjs CLI). To use snippets, just start typing SAS macro name, eg:

image

NOTE: If you don't see a snippet description, you might need to click the Read More icon, and snippet description will appear for all snippets, eg:

image

Contributions

SASjs is an open source project, and contributions are warmly welcomed!

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Allan Bowe
Allan Bowe

πŸ’» ⚠️ πŸ‘€ πŸ“Ή πŸ“–
Yury Shkoda
Yury Shkoda

πŸ’» ⚠️ πŸ“† πŸ“Ή πŸ“–
Krishna Acondy
Krishna Acondy

πŸ’» ⚠️ πŸ‘€ πŸš‡ πŸ“¦ 🚧 πŸ–‹
Muhammad Saad
Muhammad Saad

πŸ’» ⚠️ πŸ‘€ πŸ§‘β€πŸ« πŸ“–
Sabir Hassan
Sabir Hassan

πŸ’» ⚠️ πŸ‘€ πŸ€”
Mihajlo Medjedovic
Mihajlo Medjedovic

πŸ’» ⚠️ πŸ‘€ πŸš‡
Vladislav Parhomchik
Vladislav Parhomchik

⚠️ πŸ‘€
SamSvet
SamSvet

πŸ“– πŸ““

This project follows the all-contributors specification. Contributions of any kind welcome!