trailofbits / vscode-weaudit

Create code bookmarks and code highlights with a click.
https://marketplace.visualstudio.com/items?itemName=trailofbits.weaudit
GNU General Public License v3.0
175 stars 17 forks source link
weAudit banner

weAudit - A collaborative code review tool for VSCode

Release Blogpost | Installation | Features

WeAudit is an essential extension in the arsenal of any code auditor.

With weAudit, you can bookmark regions of code to highlight issues, add notes, mark files as reviewed, and collaborate with your fellow auditors. Enhance your reporting workflow by writing the findings directly in VSCode, creating prefilled GitHub issues, and copying links. For the stats lovers, analyze your audit progress with the daily log, showing the number of files and LOC audited per day.

Screenshot

Installation

Install weAudit directly from weAudit @ VSCode Marketplace.

See the Build and install section below for how to build and install from source.

Features


Findings and Notes

Findings and notes can be added to the current selection by calling the weAudit: New Finding from Selection or weAudit: New Note from Selection commands, or their respective keyboard shortcuts. The selected code will be highlighted in the editor, and an item added to the List of Findings view in the sidebar.

Create Finding

Clicking on a finding in the List of Findings view will navigate to the region of code previously marked.

A file with a finding will have a ! annotation that is visible both in the file tree, and in the file name above the editor.

File annotation

The highlighted colors can be customized in the settings.

Audited Files

After reviewing a file, you can mark it as audited by calling the weAudit: Mark File as Reviewed command, or its respective keyboard shortcut. The whole file will be highlighted and annotated with a in the file tree, and in the file name above the editor.

Mark File as Reviewed

The highlighted color can be customized in the settings.

Partially Audited Files

You can also partially mark a file as reviewed by selecting a region of code and calling the weAudit: Mark Region as Reviewed command. Partially reviewed regions can be merged together by calling the same command on a region containing. If called on a region:

Once a file is marked as audited with the weAudit: Mark File as Reviewed command, all partial regions will be discarded.

The following gif showcases all the scenarios described: Mark Region as Reviewed

The highlighted color can be customized in the settings.

Detailed Findings

You can fill detailed information about a finding by clicking on it in the List of Findings view in the sidebar. The respective Finding Details panel will open, where you can fill the information.

Finding Details

GitHub/Gitlab Issues

You can create a GitHub/Gitlab issue with the detailed findings information by clicking on the corresponding Open Remote Issue button in the List of Findings panel. A browser window in will open prompting you to open the issue with the prefilled information from the Finding Details panel.

Open Remote Issue

Multi-region Findings

You can add multiple regions to a single finding or note. Once you select the code region to be added, call the weAudit: Add Region to a Finding and select the finding to add the region to from the quick pick menu. The regions will be highlighted in the editor, and the finding will be updated in the List of Findings panel.

Add Region to a Finding

Resolve and Restore

You can resolve a finding by clicking on the corresponding Resolve button in the List of Findings panel. The finding will no longer be highlighted in the editor, but will still be visible in the Resolved Findings panel. You can restore a resolved finding by clicking on the corresponding Restore button in the Resolved Findings panel.

Resolve and Restore

Copy Permalinks

Copy the Audit permalink by clicking on the corresponding Copy Audit Permalink button in the List of Findings panel.

Copy Audit Permalink

Copy a permalink to any code region by right clicking and selecting one of the weAudit: Copy Permalink options in the context menu.

Copy Audit Permalink

Daily Log

You can view a daily log of all the marked files and LOC per day by clicking on the Daily Log button in the List of Findings panel.

Daily Log

You can also view the daily log by calling the weAudit: Show Daily Log command in the command pallette, or its respective keyboard shortcut.

View Mode

You can view findings in a list, or grouped by filename by clicking on the View Mode button in the List of Findings panel.

View Mode

View Mode

Multiple Users

You can share the weAudit file with you co-auditors to share findings. This file is located in the .vscode folder in your workspace named $USERNAME.weaudit.

In the weAudit Files panel, you can toggle to show or hide the findings from each user by clicking on the entries. There are color settings for other user's findings and notes, and for your own findings and notes.

Multiple Users

Hide Findings

You can hide all findings associated with a specific user by clicking on that user's name on the weAudit Files panel.

Hide Findings associated to a user

Search & Filter Findings

You can search for and filter the findings in the List of Findings panel by calling the weAudit: Search and Filter Findings command.

Filter Findings

Export Findings

You can export the findings to a markdown file by calling the weAudit: Export Findings as Markdown command.

Drag & Drop Findings and Locations

You can drag and drop findings and locations in the List of Findings panel to:

Drag & Drop Findings and Locations

Settings

Background colors

Each background color is customizable via the VSCode settings page. Write as #RGB, #RGBA, #RRGGBB or #RRGGBBAA:

Keybindings

You can configure the keybindings to any of the extension's commands in the VSCode settings. The default shortcuts are:

WeAudit Concepts

Development

Build and install

To build and install a new vsix file run the following script:

npm install
./install.sh

Linting and Formatting

We use ESLint and Prettier to enforce a consistent code style.

# run ESLint
npx eslint -c .eslintrc.json .

# run Prettier
npx prettier --write .