media/vulncheckView: use codicons to distinguish severity
We differentiate two classes of vulnerabilities and add Warning/Info
icons.
- Warning for affecting vulnerabilities (vulnerable symbols are being used).
- Info for unaffecting vulnerabilities (vulnerable symbols are not being used).
Change-Id: I76b5df80d24eccb38c5744ece8a49dae8de698b7
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/429238
Reviewed-by: Jamal Carvalho <jamal@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/media/vulncheckView.css b/media/vulncheckView.css
index 67035ab..4531979 100644
--- a/media/vulncheckView.css
+++ b/media/vulncheckView.css
@@ -15,6 +15,20 @@
padding-bottom: 1em;
}
+.vuln-icon-info, .vuln-icon-warning {
+ padding-right: 1em;
+ font-size: 14px;
+ display: inline;
+}
+
+.vuln-icon-info {
+ color: var(--vscode-list-warningForeground);
+}
+
+.vuln-icon-warning {
+ color: var(--vscode-list-errorForeground);
+}
+
.vuln-desc {
padding-top: 0.5em;
padding-bottom: 0.5em;
diff --git a/media/vulncheckView.js b/media/vulncheckView.js
index f03f61d..a435f74 100644
--- a/media/vulncheckView.js
+++ b/media/vulncheckView.js
@@ -114,7 +114,7 @@
// TITLE - Vuln ID
const title = document.createElement('h2');
- title.innerHTML = `<a href="${vuln.URL}">${vuln.ID}</a>`;
+ title.innerHTML = `<div class="vuln-icon-warning"><i class="codicon codicon-warning"></i></div><a href="${vuln.URL}">${vuln.ID}</a>`;
title.className = 'vuln-title';
element.appendChild(title);
@@ -191,7 +191,7 @@
// TITLE - Vuln ID
const title = document.createElement('h2');
- title.innerHTML = `<a href="${vuln.URL}">${vuln.ID}</a>`;
+ title.innerHTML = `<div class="vuln-icon-info"><i class="codicon codicon-info"></i></div><a href="${vuln.URL}">${vuln.ID}</a>`;
title.className = 'vuln-title';
element.appendChild(title);
diff --git a/package-lock.json b/package-lock.json
index 51247c4..5e786a3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"version": "0.36.0-dev",
"license": "MIT",
"dependencies": {
+ "@vscode/codicons": "0.0.32",
"diff": "4.0.2",
"glob": "7.1.7",
"json-rpc2": "2.0.0",
@@ -46,6 +47,7 @@
"yarn": "1.22.10"
},
"engines": {
+ "node": ">=12.0.0",
"vscode": "^1.67.0"
}
},
@@ -692,6 +694,11 @@
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
+ "node_modules/@vscode/codicons": {
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.32.tgz",
+ "integrity": "sha512-3lgSTWhAzzWN/EPURoY4ZDBEA80OPmnaknNujA3qnI4Iu7AONWd9xF3iE4L+4prIe8E3TUnLQ4pxoaFTEEZNwg=="
+ },
"node_modules/@vscode/test-electron": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.0.2.tgz",
@@ -5145,6 +5152,11 @@
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
+ "@vscode/codicons": {
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.32.tgz",
+ "integrity": "sha512-3lgSTWhAzzWN/EPURoY4ZDBEA80OPmnaknNujA3qnI4Iu7AONWd9xF3iE4L+4prIe8E3TUnLQ4pxoaFTEEZNwg=="
+ },
"@vscode/test-electron": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.0.2.tgz",
diff --git a/package.json b/package.json
index 929a72b..050fee5 100644
--- a/package.json
+++ b/package.json
@@ -49,6 +49,7 @@
},
"extensionDependencies": [],
"dependencies": {
+ "@vscode/codicons": "0.0.32",
"diff": "4.0.2",
"glob": "7.1.7",
"json-rpc2": "2.0.0",
diff --git a/src/goVulncheck.ts b/src/goVulncheck.ts
index 5e1e6e8..b41441f 100644
--- a/src/goVulncheck.ts
+++ b/src/goVulncheck.ts
@@ -81,6 +81,9 @@
const styleResetUri = webview.asWebviewUri(vscode.Uri.joinPath(mediaUri, 'reset.css'));
const styleVSCodeUri = webview.asWebviewUri(vscode.Uri.joinPath(mediaUri, 'vscode.css'));
const styleMainUri = webview.asWebviewUri(vscode.Uri.joinPath(mediaUri, 'vulncheckView.css'));
+ const codiconsUri = webview.asWebviewUri(
+ vscode.Uri.joinPath(this.extensionUri, 'node_modules', '@vscode/codicons', 'dist', 'codicon.css')
+ );
// Use a nonce to whitelist which scripts can be run
const nonce = getNonce();
@@ -94,11 +97,15 @@
Use a content security policy to only allow loading images from https or from our extension directory,
and only allow scripts that have a specific nonce.
-->
- <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${webview.cspSource}; style-src ${webview.cspSource}; script-src 'nonce-${nonce}';">
+ <!--
+ Use a content security policy to only allow loading specific resources in the webview
+ -->
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; font-src ${webview.cspSource}; style-src ${webview.cspSource}; script-src 'nonce-${nonce}';">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="${styleResetUri}" rel="stylesheet" />
<link href="${styleVSCodeUri}" rel="stylesheet" />
<link href="${styleMainUri}" rel="stylesheet" />
+ <link href="${codiconsUri}" rel="stylesheet" />
<title>Vulnerability Report - govulncheck</title>
</head>
<body>