@aws/lsp-codewhisperer 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/out/language-server/codeWhispererSecurityScanServer.d.ts +1 -2
- package/out/language-server/codeWhispererSecurityScanServer.js +137 -25
- package/out/language-server/codeWhispererSecurityScanServer.js.map +1 -1
- package/out/language-server/codeWhispererServer.d.ts +1 -2
- package/out/language-server/codeWhispererServer.js +2 -2
- package/out/language-server/codeWhispererServer.js.map +1 -1
- package/out/language-server/codeWhispererServer.test.js +100 -101
- package/out/language-server/codeWhispererServer.test.js.map +1 -1
- package/out/language-server/codeWhispererService.d.ts +1 -1
- package/out/language-server/codeWhispererService.js.map +1 -1
- package/out/language-server/dependencyGraph/csharpDependencyGraph.d.ts +3 -3
- package/out/language-server/dependencyGraph/csharpDependencyGraph.js +40 -37
- package/out/language-server/dependencyGraph/csharpDependencyGraph.js.map +1 -1
- package/out/language-server/dependencyGraph/csharpDependencyGraph.test.js +106 -78
- package/out/language-server/dependencyGraph/csharpDependencyGraph.test.js.map +1 -1
- package/out/language-server/dependencyGraph/dependencyGraph.d.ts +12 -4
- package/out/language-server/dependencyGraph/dependencyGraph.js +24 -6
- package/out/language-server/dependencyGraph/dependencyGraph.js.map +1 -1
- package/out/language-server/dependencyGraph/dependencyGraphFactory.d.ts +2 -3
- package/out/language-server/dependencyGraph/dependencyGraphFactory.js +2 -2
- package/out/language-server/dependencyGraph/dependencyGraphFactory.js.map +1 -1
- package/out/language-server/languageDetection.d.ts +2 -1
- package/out/language-server/languageDetection.js +2 -1
- package/out/language-server/languageDetection.js.map +1 -1
- package/out/language-server/netTransformServer.d.ts +12 -0
- package/out/language-server/netTransformServer.js +27 -0
- package/out/language-server/netTransformServer.js.map +1 -0
- package/out/language-server/proxy-server.d.ts +2 -2
- package/out/language-server/securityScan/securityScanDiagnosticsProvider.d.ts +29 -0
- package/out/language-server/securityScan/securityScanDiagnosticsProvider.js +129 -0
- package/out/language-server/securityScan/securityScanDiagnosticsProvider.js.map +1 -0
- package/out/language-server/securityScan/securityScanHandler.d.ts +12 -5
- package/out/language-server/securityScan/securityScanHandler.js +69 -19
- package/out/language-server/securityScan/securityScanHandler.js.map +1 -1
- package/out/language-server/securityScan/securityScanHandler.test.js +3 -2
- package/out/language-server/securityScan/securityScanHandler.test.js.map +1 -1
- package/out/language-server/securityScan/types.d.ts +13 -0
- package/out/language-server/session/sessionManager.d.ts +1 -2
- package/out/language-server/session/sessionManager.js.map +1 -1
- package/out/language-server/telemetry/codePercentage.d.ts +1 -1
- package/out/language-server/telemetry/types.d.ts +20 -0
- package/out/language-server/telemetry/userTriggerDecision.test.js +8 -8
- package/out/language-server/telemetry/userTriggerDecision.test.js.map +1 -1
- package/out/language-server/telemetry.test.js +4 -4
- package/out/language-server/telemetry.test.js.map +1 -1
- package/package.json +5 -5
- package/script/generateServiceClient.ts +0 -242
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetTransformServer = exports.NetTransformServerFactory = void 0;
|
|
4
|
+
const codeWhispererService_1 = require("./codeWhispererService");
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param createService Inject service instance based on credentials provider.
|
|
8
|
+
* @returns NetTransform server
|
|
9
|
+
*/
|
|
10
|
+
const NetTransformServerFactory = createService => ({ credentialsProvider, lsp, workspace, telemetry, logging }) => {
|
|
11
|
+
const service = createService(credentialsProvider);
|
|
12
|
+
const onExecuteCommandHandler = async (params, _token) => {
|
|
13
|
+
//Placeholder for logic
|
|
14
|
+
};
|
|
15
|
+
// Do the thing
|
|
16
|
+
lsp.onExecuteCommand(onExecuteCommandHandler);
|
|
17
|
+
// Disposable
|
|
18
|
+
return () => {
|
|
19
|
+
// Do nothing
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.NetTransformServerFactory = NetTransformServerFactory;
|
|
23
|
+
/**
|
|
24
|
+
* Default NetTransformServer using Token authentication.
|
|
25
|
+
*/
|
|
26
|
+
exports.NetTransformServer = (0, exports.NetTransformServerFactory)(credentialsProvider => new codeWhispererService_1.CodeWhispererServiceToken(credentialsProvider, {}));
|
|
27
|
+
//# sourceMappingURL=netTransformServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netTransformServer.js","sourceRoot":"","sources":["../../src/language-server/netTransformServer.ts"],"names":[],"mappings":";;;AAMA,iEAAkE;AAElE;;;;GAIG;AACI,MAAM,yBAAyB,GAGlC,aAAa,CAAC,EAAE,CAChB,CAAC,EAAE,mBAAmB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;IAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAClD,MAAM,uBAAuB,GAAG,KAAK,EACjC,MAA4B,EAC5B,MAAyB,EACb,EAAE;QACd,uBAAuB;IAC3B,CAAC,CAAA;IAED,eAAe;IACf,GAAG,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAA;IAE7C,aAAa;IACb,OAAO,GAAG,EAAE;QACR,aAAa;IACjB,CAAC,CAAA;AACL,CAAC,CAAA;AApBQ,QAAA,yBAAyB,6BAoBjC;AAEL;;GAEG;AACU,QAAA,kBAAkB,GAAG,IAAA,iCAAyB,EACvD,mBAAmB,CAAC,EAAE,CAAC,IAAI,gDAAyB,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAChF,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CodeWhispererServerTokenProxy: import("@aws/language-server-runtimes").Server;
|
|
2
|
-
export declare const CodeWhispererSecurityScanServerTokenProxy: import("@aws/language-server-runtimes").Server;
|
|
1
|
+
export declare const CodeWhispererServerTokenProxy: import("@aws/language-server-runtimes/server-interface").Server;
|
|
2
|
+
export declare const CodeWhispererSecurityScanServerTokenProxy: import("@aws/language-server-runtimes/server-interface").Server;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Logging, Lsp, Diagnostic, Position, Range, TextDocumentContentChangeEvent } from '@aws/language-server-runtimes/server-interface';
|
|
2
|
+
import { AggregatedCodeScanIssue, CodeScanIssue } from './types';
|
|
3
|
+
declare class SecurityScanDiagnosticsProvider {
|
|
4
|
+
private diagnostics;
|
|
5
|
+
private lsp;
|
|
6
|
+
private logging;
|
|
7
|
+
private findings;
|
|
8
|
+
constructor(lsp: Lsp, logging: Logging);
|
|
9
|
+
resetDiagnostics(): void;
|
|
10
|
+
createDiagnostics(findings: AggregatedCodeScanIssue[]): Promise<void>;
|
|
11
|
+
mapScanIssueToDiagnostics(issue: CodeScanIssue): Diagnostic;
|
|
12
|
+
validateDiagnostics(uri: string, e: TextDocumentContentChangeEvent): Promise<void>;
|
|
13
|
+
getChangedDiagnosticRange(diagnosticRange: Range, documentChangeRange?: Range): Range;
|
|
14
|
+
isPositionInRange: (position: Position, range: Range) => boolean;
|
|
15
|
+
handleHover: () => void;
|
|
16
|
+
getLineOffset(range: Range, text: string): number;
|
|
17
|
+
createDiagnosticsRange(startLine: number, endLine: number): {
|
|
18
|
+
start: {
|
|
19
|
+
line: number;
|
|
20
|
+
character: number;
|
|
21
|
+
};
|
|
22
|
+
end: {
|
|
23
|
+
line: number;
|
|
24
|
+
character: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
publishDiagnostics(uri: string, diagnostics: Diagnostic[]): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export default SecurityScanDiagnosticsProvider;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const server_interface_1 = require("@aws/language-server-runtimes/server-interface");
|
|
4
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
5
|
+
class SecurityScanDiagnosticsProvider {
|
|
6
|
+
constructor(lsp, logging) {
|
|
7
|
+
this.isPositionInRange = (position, range) => {
|
|
8
|
+
if (position.line < range.start.line || position.line > range.end.line) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return true;
|
|
12
|
+
};
|
|
13
|
+
this.handleHover = () => {
|
|
14
|
+
this.lsp.onHover(({ position, textDocument }) => {
|
|
15
|
+
for (let [uri, diagnostics] of this.diagnostics) {
|
|
16
|
+
if (uri !== vscode_uri_1.URI.parse(textDocument.uri).path) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
for (const diagnostic of diagnostics) {
|
|
20
|
+
if (this.isPositionInRange(position, diagnostic.range)) {
|
|
21
|
+
const hover = {
|
|
22
|
+
contents: diagnostic.message,
|
|
23
|
+
range: diagnostic.range,
|
|
24
|
+
};
|
|
25
|
+
return hover;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
this.diagnostics = new Map();
|
|
32
|
+
this.lsp = lsp;
|
|
33
|
+
this.logging = logging;
|
|
34
|
+
this.findings = [];
|
|
35
|
+
}
|
|
36
|
+
resetDiagnostics() {
|
|
37
|
+
this.findings.forEach(finding => {
|
|
38
|
+
this.logging.log(finding.filePath);
|
|
39
|
+
this.publishDiagnostics(finding.filePath, []);
|
|
40
|
+
});
|
|
41
|
+
this.diagnostics = new Map();
|
|
42
|
+
}
|
|
43
|
+
async createDiagnostics(findings) {
|
|
44
|
+
this.findings = findings;
|
|
45
|
+
for (const finding of findings) {
|
|
46
|
+
const path = vscode_uri_1.URI.file(finding.filePath).path;
|
|
47
|
+
const diagnostics = finding.issues.map(issue => this.mapScanIssueToDiagnostics(issue));
|
|
48
|
+
if (!this.diagnostics.has(path)) {
|
|
49
|
+
this.diagnostics.set(path, diagnostics);
|
|
50
|
+
}
|
|
51
|
+
this.diagnostics.set(path, [...(this.diagnostics.get(finding.filePath) || []), ...diagnostics]);
|
|
52
|
+
await this.publishDiagnostics(finding.filePath, diagnostics);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
mapScanIssueToDiagnostics(issue) {
|
|
56
|
+
return server_interface_1.Diagnostic.create(this.createDiagnosticsRange(issue.startLine, issue.endLine), `${issue.title} - ${issue.description.text}`, 2, issue.relatedVulnerabilities.join(','), 'Detected by CodeWhisperer');
|
|
57
|
+
}
|
|
58
|
+
async validateDiagnostics(uri, e) {
|
|
59
|
+
const path = vscode_uri_1.URI.parse(uri).path;
|
|
60
|
+
const currentDiagnostics = this.diagnostics.get(path);
|
|
61
|
+
if (!currentDiagnostics) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// range will be omitted if the change is for entire document
|
|
65
|
+
const changeStartLine = e.range?.start?.line;
|
|
66
|
+
const changeEndLine = e.range?.end?.line;
|
|
67
|
+
const nextDiagnostics = currentDiagnostics.map(diagnostic => {
|
|
68
|
+
if (changeStartLine && changeStartLine > diagnostic.range.end.line) {
|
|
69
|
+
// change has no overlap with diagnostic
|
|
70
|
+
return diagnostic;
|
|
71
|
+
}
|
|
72
|
+
else if (changeEndLine && changeEndLine < diagnostic.range.start.line) {
|
|
73
|
+
// change is before diagnostic range, update diagnostic range
|
|
74
|
+
const lineOffset = this.getLineOffset(e.range, e.text);
|
|
75
|
+
return {
|
|
76
|
+
...diagnostic,
|
|
77
|
+
range: this.createDiagnosticsRange(diagnostic.range.start.line + lineOffset, diagnostic.range.end.line + lineOffset),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// change is within diagnostic range, update range and messaging to re-scan
|
|
82
|
+
const newRange = this.getChangedDiagnosticRange(diagnostic.range, e.range);
|
|
83
|
+
return diagnostic.severity === 2
|
|
84
|
+
? {
|
|
85
|
+
...diagnostic,
|
|
86
|
+
severity: 3,
|
|
87
|
+
message: `Re-scan to validate the fix: ${diagnostic.message}`,
|
|
88
|
+
range: newRange,
|
|
89
|
+
}
|
|
90
|
+
: diagnostic;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
this.diagnostics.set(path, nextDiagnostics);
|
|
94
|
+
await this.publishDiagnostics(uri, nextDiagnostics);
|
|
95
|
+
}
|
|
96
|
+
getChangedDiagnosticRange(diagnosticRange, documentChangeRange) {
|
|
97
|
+
if (!documentChangeRange) {
|
|
98
|
+
return diagnosticRange;
|
|
99
|
+
}
|
|
100
|
+
const start = Math.max(diagnosticRange.start.line, documentChangeRange.start.line);
|
|
101
|
+
const end = Math.min(diagnosticRange.end.line, documentChangeRange.end.line);
|
|
102
|
+
return this.createDiagnosticsRange(start, end === start ? start + 1 : end);
|
|
103
|
+
}
|
|
104
|
+
getLineOffset(range, text) {
|
|
105
|
+
const originLines = range.end.line - range.start.line + 1;
|
|
106
|
+
const changedLines = text.split('\n').length;
|
|
107
|
+
return changedLines - originLines;
|
|
108
|
+
}
|
|
109
|
+
createDiagnosticsRange(startLine, endLine) {
|
|
110
|
+
return {
|
|
111
|
+
start: {
|
|
112
|
+
line: startLine,
|
|
113
|
+
character: 0,
|
|
114
|
+
},
|
|
115
|
+
end: {
|
|
116
|
+
line: endLine,
|
|
117
|
+
character: 0,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
async publishDiagnostics(uri, diagnostics) {
|
|
122
|
+
await this.lsp.publishDiagnostics({
|
|
123
|
+
uri,
|
|
124
|
+
diagnostics: diagnostics,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.default = SecurityScanDiagnosticsProvider;
|
|
129
|
+
//# sourceMappingURL=securityScanDiagnosticsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"securityScanDiagnosticsProvider.js","sourceRoot":"","sources":["../../../src/language-server/securityScan/securityScanDiagnosticsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Workspace } from '@aws/language-server-runtimes/
|
|
2
|
+
import { Logging, Workspace, CancellationToken, CancellationTokenSource } from '@aws/language-server-runtimes/server-interface';
|
|
3
3
|
import { ArtifactMap, CreateUploadUrlResponse } from '../../client/token/codewhispererbearertokenclient';
|
|
4
4
|
import { CodeWhispererServiceToken } from '../codeWhispererService';
|
|
5
|
-
import { AggregatedCodeScanIssue
|
|
5
|
+
import { AggregatedCodeScanIssue } from './types';
|
|
6
6
|
export declare class SecurityScanHandler {
|
|
7
7
|
private client;
|
|
8
8
|
private workspace;
|
|
9
|
-
|
|
9
|
+
private logging;
|
|
10
|
+
tokenSource: CancellationTokenSource;
|
|
11
|
+
constructor(client: CodeWhispererServiceToken, workspace: Workspace, logging: Logging);
|
|
10
12
|
getMd5(content: Buffer): string;
|
|
13
|
+
throwIfCancelled(token: CancellationToken): void;
|
|
14
|
+
cancelSecurityScan(): void;
|
|
11
15
|
createCodeResourcePresignedUrlHandler(zipContent: Buffer): Promise<ArtifactMap>;
|
|
12
|
-
uploadArtifactToS3(zipBuffer: Buffer, resp: CreateUploadUrlResponse): Promise<
|
|
16
|
+
uploadArtifactToS3(zipBuffer: Buffer, resp: CreateUploadUrlResponse): Promise<void>;
|
|
13
17
|
createScanJob(artifactMap: ArtifactMap, languageName: string): Promise<import("aws-sdk/lib/request").PromiseResult<import("../../client/token/codewhispererbearertokenclient").StartCodeAnalysisResponse, import("aws-sdk").AWSError>>;
|
|
14
18
|
pollScanJobStatus(jobId: string): Promise<string>;
|
|
15
19
|
listScanResults(jobId: string, projectPath: string): Promise<AggregatedCodeScanIssue[]>;
|
|
16
|
-
mapToAggregatedList(
|
|
20
|
+
mapToAggregatedList(json: string, projectPath: string): Promise<AggregatedCodeScanIssue[]>;
|
|
21
|
+
}
|
|
22
|
+
export declare class SecurityScanCancelledError extends Error {
|
|
23
|
+
constructor(message?: string);
|
|
17
24
|
}
|
|
@@ -1,29 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SecurityScanHandler = void 0;
|
|
3
|
+
exports.SecurityScanCancelledError = exports.SecurityScanHandler = void 0;
|
|
4
|
+
const server_interface_1 = require("@aws/language-server-runtimes/server-interface");
|
|
4
5
|
const got_1 = require("got");
|
|
5
6
|
const js_md5_1 = require("js-md5");
|
|
6
7
|
const path = require("path");
|
|
7
8
|
const commonUtil_1 = require("../dependencyGraph/commonUtil");
|
|
8
9
|
class SecurityScanHandler {
|
|
9
|
-
constructor(client, workspace) {
|
|
10
|
+
constructor(client, workspace, logging) {
|
|
10
11
|
this.client = client;
|
|
11
12
|
this.workspace = workspace;
|
|
13
|
+
this.logging = logging;
|
|
14
|
+
this.tokenSource = new server_interface_1.CancellationTokenSource();
|
|
12
15
|
}
|
|
13
16
|
getMd5(content) {
|
|
14
17
|
return js_md5_1.md5.base64(content);
|
|
15
18
|
}
|
|
19
|
+
throwIfCancelled(token) {
|
|
20
|
+
if (token.isCancellationRequested) {
|
|
21
|
+
this.tokenSource.dispose();
|
|
22
|
+
this.tokenSource = new server_interface_1.CancellationTokenSource();
|
|
23
|
+
throw new SecurityScanCancelledError('Security Scan has been cancelled');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
cancelSecurityScan() {
|
|
27
|
+
this.tokenSource.cancel();
|
|
28
|
+
}
|
|
16
29
|
async createCodeResourcePresignedUrlHandler(zipContent) {
|
|
17
30
|
const request = {
|
|
18
31
|
contentMd5: this.getMd5(zipContent),
|
|
19
32
|
artifactType: 'SourceCode',
|
|
20
33
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
34
|
+
try {
|
|
35
|
+
this.logging.log('Prepare for uploading src context...');
|
|
36
|
+
const response = await this.client.createUploadUrl(request);
|
|
37
|
+
this.logging.log(`Request id: ${response.$response.requestId}`);
|
|
38
|
+
this.logging.log(`Complete Getting presigned Url for uploading src context.`);
|
|
39
|
+
this.logging.log(`Uploading src context...`);
|
|
40
|
+
await this.uploadArtifactToS3(zipContent, response);
|
|
41
|
+
this.logging.log(`Complete uploading src context.`);
|
|
42
|
+
const artifactMap = {
|
|
43
|
+
SourceCode: response.uploadId,
|
|
44
|
+
};
|
|
45
|
+
return artifactMap;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
this.logging.log(`Error creating upload artifacts url: ${error}`);
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
27
51
|
}
|
|
28
52
|
async uploadArtifactToS3(zipBuffer, resp) {
|
|
29
53
|
const encryptionContext = `{"uploadId":"${resp.uploadId}"}`;
|
|
@@ -42,8 +66,11 @@ class SecurityScanHandler {
|
|
|
42
66
|
'Content-Type': 'application/zip',
|
|
43
67
|
'x-amz-server-side-encryption-context': Buffer.from(encryptionContext, 'utf8').toString('base64'),
|
|
44
68
|
};
|
|
45
|
-
const response = await got_1.default.put(resp.uploadUrl, {
|
|
46
|
-
|
|
69
|
+
const response = await got_1.default.put(resp.uploadUrl, {
|
|
70
|
+
body: zipBuffer,
|
|
71
|
+
headers: headersObj,
|
|
72
|
+
});
|
|
73
|
+
this.logging.log(`StatusCode: ${response.statusCode}`);
|
|
47
74
|
}
|
|
48
75
|
async createScanJob(artifactMap, languageName) {
|
|
49
76
|
const req = {
|
|
@@ -52,10 +79,19 @@ class SecurityScanHandler {
|
|
|
52
79
|
languageName,
|
|
53
80
|
},
|
|
54
81
|
};
|
|
55
|
-
|
|
56
|
-
|
|
82
|
+
this.logging.log(`Creating scan job...`);
|
|
83
|
+
try {
|
|
84
|
+
const resp = await this.client.startCodeAnalysis(req);
|
|
85
|
+
this.logging.log(`Request id: ${resp.$response.requestId}`);
|
|
86
|
+
return resp;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
this.logging.log(`Error while creating scan job: ${error}`);
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
57
92
|
}
|
|
58
93
|
async pollScanJobStatus(jobId) {
|
|
94
|
+
this.logging.log(`Polling scan job status...`);
|
|
59
95
|
let status = 'Pending';
|
|
60
96
|
let timer = 0;
|
|
61
97
|
const codeScanJobPollingIntervalSeconds = 1;
|
|
@@ -66,30 +102,36 @@ class SecurityScanHandler {
|
|
|
66
102
|
jobId: jobId,
|
|
67
103
|
};
|
|
68
104
|
const resp = await this.client.getCodeAnalysis(req);
|
|
105
|
+
this.logging.log(`Request id: ${resp.$response.requestId}`);
|
|
69
106
|
if (resp.status !== 'Pending') {
|
|
70
107
|
status = resp.status;
|
|
108
|
+
this.logging.log(`Scan job status: ${status}`);
|
|
109
|
+
this.logging.log(`Complete Polling scan job status.`);
|
|
71
110
|
break;
|
|
72
111
|
}
|
|
73
112
|
await (0, commonUtil_1.sleep)(codeScanJobPollingIntervalSeconds * 1000);
|
|
74
113
|
timer += codeScanJobPollingIntervalSeconds;
|
|
75
114
|
if (timer > codeScanJobTimeoutSeconds) {
|
|
115
|
+
this.logging.log(`Scan job status: ${status}`);
|
|
116
|
+
this.logging.log(`Scan job timeout.`);
|
|
76
117
|
throw new Error('Scan job timeout.');
|
|
77
118
|
}
|
|
78
119
|
}
|
|
79
120
|
return status;
|
|
80
121
|
}
|
|
81
122
|
async listScanResults(jobId, projectPath) {
|
|
82
|
-
const codeScanIssueMap = new Map();
|
|
83
|
-
const aggregatedCodeScanIssueList = [];
|
|
84
123
|
const request = {
|
|
85
124
|
jobId,
|
|
86
125
|
codeAnalysisFindingsSchema: 'codeanalysis/findings/1.0',
|
|
87
126
|
};
|
|
88
127
|
const response = await this.client.listCodeAnalysisFindings(request);
|
|
89
|
-
this.
|
|
128
|
+
this.logging.log(`Request id: ${response.$response.requestId}`);
|
|
129
|
+
const aggregatedCodeScanIssueList = await this.mapToAggregatedList(response.codeAnalysisFindings, projectPath);
|
|
90
130
|
return aggregatedCodeScanIssueList;
|
|
91
131
|
}
|
|
92
|
-
mapToAggregatedList(
|
|
132
|
+
async mapToAggregatedList(json, projectPath) {
|
|
133
|
+
const codeScanIssueMap = new Map();
|
|
134
|
+
const aggregatedCodeScanIssueList = [];
|
|
93
135
|
const codeScanIssues = JSON.parse(json);
|
|
94
136
|
codeScanIssues.forEach(issue => {
|
|
95
137
|
if (codeScanIssueMap.has(issue.filePath)) {
|
|
@@ -106,8 +148,8 @@ class SecurityScanHandler {
|
|
|
106
148
|
codeScanIssueMap.set(issue.filePath, [issue]);
|
|
107
149
|
}
|
|
108
150
|
});
|
|
109
|
-
|
|
110
|
-
const filePath = path.join(projectPath,
|
|
151
|
+
for (const [relFilePath, issues] of codeScanIssueMap) {
|
|
152
|
+
const filePath = path.join(projectPath, relFilePath);
|
|
111
153
|
const fileExists = await this.workspace.fs.exists(filePath);
|
|
112
154
|
if (fileExists) {
|
|
113
155
|
const aggregatedCodeScanIssue = {
|
|
@@ -132,8 +174,16 @@ class SecurityScanHandler {
|
|
|
132
174
|
};
|
|
133
175
|
aggregatedCodeScanIssueList.push(aggregatedCodeScanIssue);
|
|
134
176
|
}
|
|
135
|
-
}
|
|
177
|
+
}
|
|
178
|
+
return aggregatedCodeScanIssueList;
|
|
136
179
|
}
|
|
137
180
|
}
|
|
138
181
|
exports.SecurityScanHandler = SecurityScanHandler;
|
|
182
|
+
class SecurityScanCancelledError extends Error {
|
|
183
|
+
constructor(message) {
|
|
184
|
+
super(message);
|
|
185
|
+
this.name = 'SecurityScanCancelledError';
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.SecurityScanCancelledError = SecurityScanCancelledError;
|
|
139
189
|
//# sourceMappingURL=securityScanHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityScanHandler.js","sourceRoot":"","sources":["../../../src/language-server/securityScan/securityScanHandler.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"securityScanHandler.js","sourceRoot":"","sources":["../../../src/language-server/securityScan/securityScanHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,11 +46,12 @@ describe('securityScanHandler', () => {
|
|
|
46
46
|
let client;
|
|
47
47
|
let workspace;
|
|
48
48
|
let securityScanhandler;
|
|
49
|
+
const mockedLogging = (0, ts_sinon_1.stubInterface)();
|
|
49
50
|
beforeEach(async () => {
|
|
50
51
|
// Set up the server with a mock service
|
|
51
52
|
client = (0, ts_sinon_1.stubInterface)();
|
|
52
53
|
workspace = (0, ts_sinon_1.stubInterface)();
|
|
53
|
-
securityScanhandler = new securityScanHandler_1.SecurityScanHandler(client, workspace);
|
|
54
|
+
securityScanhandler = new securityScanHandler_1.SecurityScanHandler(client, workspace, mockedLogging);
|
|
54
55
|
});
|
|
55
56
|
describe('Test createCodeResourcePresignedUrlHandler', () => {
|
|
56
57
|
let putStub;
|
|
@@ -62,7 +63,7 @@ describe('securityScanHandler', () => {
|
|
|
62
63
|
kmsKeyArn: 'ResourceArn',
|
|
63
64
|
...mocked$Response,
|
|
64
65
|
});
|
|
65
|
-
putStub = Sinon.stub(got_1.default, 'put');
|
|
66
|
+
putStub = Sinon.stub(got_1.default, 'put').resolves({ statusCode: 'Success' });
|
|
66
67
|
});
|
|
67
68
|
it('returns correct source code', async () => {
|
|
68
69
|
const expectedSourceCode = 'dummy-upload-id';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityScanHandler.test.js","sourceRoot":"","sources":["../../../src/language-server/securityScan/securityScanHandler.test.ts"],"names":[],"mappings":";;AACA,iCAAgC;AAChC,qCAAsC;AACtC,6BAAqB;AACrB,+BAA8B;AAC9B,uCAA2E;AAG3E,+DAA2D;AAG3D,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC;IACxC;QACI,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,OAAO;QACd,WAAW,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,UAAU;SACvB;QACD,UAAU,EAAE,YAAY;QACxB,YAAY,EAAE,cAAc;QAC5B,SAAS,EAAE,WAAW;QACtB,sBAAsB,EAAE,EAAE;QAC1B,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE;YACT,cAAc,EAAE;gBACZ,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,KAAK;aACb;YACD,cAAc,EAAE,EAAE;SACrB;KACuB;CAC/B,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG;IACpB,SAAS,EAAE;QACP,WAAW,EAAE,kBAAK,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,kBAAK,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,IAAI,sBAAY,EAAE;KACnC;CACJ,CAAA;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,IAAI,MAAkD,CAAA;IACtD,IAAI,SAAqC,CAAA;IACzC,IAAI,mBAAwC,CAAA;IAC5C,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,wCAAwC;QACxC,MAAM,GAAG,IAAA,wBAAa,GAA6B,CAAA;QACnD,SAAS,GAAG,IAAA,wBAAa,GAAa,CAAA;QACtC,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"securityScanHandler.test.js","sourceRoot":"","sources":["../../../src/language-server/securityScan/securityScanHandler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ExecuteCommandParams } from '@aws/language-server-runtimes/server-interface';
|
|
1
2
|
export interface RecommendationDescription {
|
|
2
3
|
text: string;
|
|
3
4
|
markdown: string;
|
|
@@ -47,3 +48,15 @@ export interface AggregatedCodeScanIssue {
|
|
|
47
48
|
filePath: string;
|
|
48
49
|
issues: CodeScanIssue[];
|
|
49
50
|
}
|
|
51
|
+
export type SecurityScanStatus = 'Succeeded' | 'Failed' | 'InProgress' | 'Cancelled';
|
|
52
|
+
export interface SecurityScanRequestParams extends ExecuteCommandParams {
|
|
53
|
+
command: 'aws/codewhisperer/runSecurityScan';
|
|
54
|
+
}
|
|
55
|
+
export interface SecurityScanResponseParams {
|
|
56
|
+
result: SecurityScanResult;
|
|
57
|
+
error?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface SecurityScanResult {
|
|
60
|
+
status: SecurityScanStatus;
|
|
61
|
+
scannedFiles?: string;
|
|
62
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { InlineCompletionStates } from '@aws/language-server-runtimes/
|
|
2
|
-
import { Position } from 'vscode-languageserver';
|
|
1
|
+
import { InlineCompletionStates, Position } from '@aws/language-server-runtimes/server-interface';
|
|
3
2
|
import { CodewhispererAutomatedTriggerType, CodewhispererTriggerType } from '../auto-trigger/autoTrigger';
|
|
4
3
|
import { GenerateSuggestionsRequest, ResponseContext, Suggestion } from '../codeWhispererService';
|
|
5
4
|
import { CodewhispererLanguage } from '../languageDetection';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../src/language-server/session/sessionManager.ts"],"names":[],"mappings":";;;AACA,+BAAmC;
|
|
1
|
+
{"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../../src/language-server/session/sessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,3 +66,23 @@ export interface CodeWhispererUserDecisionEvent {
|
|
|
66
66
|
codewhispererSuggestionReferences?: string[];
|
|
67
67
|
codewhispererSuggestionReferenceCount: number;
|
|
68
68
|
}
|
|
69
|
+
export type Result = 'Succeeded' | 'Failed' | 'Cancelled';
|
|
70
|
+
export interface SecurityScanEvent {
|
|
71
|
+
codewhispererCodeScanJobId?: string;
|
|
72
|
+
codewhispererLanguage: CodewhispererLanguage;
|
|
73
|
+
codewhispererCodeScanProjectBytes?: number;
|
|
74
|
+
codewhispererCodeScanSrcPayloadBytes: number;
|
|
75
|
+
codewhispererCodeScanBuildPayloadBytes?: number;
|
|
76
|
+
codewhispererCodeScanSrcZipFileBytes: number;
|
|
77
|
+
codewhispererCodeScanBuildZipFileBytes?: number;
|
|
78
|
+
codewhispererCodeScanLines: number;
|
|
79
|
+
duration: number;
|
|
80
|
+
contextTruncationDuration: number;
|
|
81
|
+
artifactsUploadDuration: number;
|
|
82
|
+
codeScanServiceInvocationsDuration: number;
|
|
83
|
+
result: Result;
|
|
84
|
+
reason?: string;
|
|
85
|
+
codewhispererCodeScanTotalIssues: number;
|
|
86
|
+
codewhispererCodeScanIssuesWithFixes: number;
|
|
87
|
+
credentialStartUrl: string | undefined;
|
|
88
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const server_interface_1 = require("@aws/language-server-runtimes/server-interface");
|
|
4
|
+
const testing_1 = require("@aws/language-server-runtimes/testing");
|
|
4
5
|
const assert = require("assert");
|
|
5
6
|
const ts_sinon_1 = require("ts-sinon");
|
|
6
|
-
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
7
7
|
const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
|
|
8
8
|
const codeWhispererServer_1 = require("../codeWhispererServer");
|
|
9
9
|
const sessionManager_1 = require("../session/sessionManager");
|
|
@@ -127,13 +127,13 @@ describe('Telemetry', () => {
|
|
|
127
127
|
const autoTriggerInlineCompletionWithReferences = async () => await features.doInlineCompletionWithReferences({
|
|
128
128
|
textDocument: { uri: SOME_FILE.uri },
|
|
129
129
|
position: AUTO_TRIGGER_POSITION,
|
|
130
|
-
context: { triggerKind:
|
|
131
|
-
},
|
|
130
|
+
context: { triggerKind: server_interface_1.InlineCompletionTriggerKind.Automatic },
|
|
131
|
+
}, server_interface_1.CancellationToken.None);
|
|
132
132
|
const manualTriggerInlineCompletionWithReferences = async () => await features.doInlineCompletionWithReferences({
|
|
133
133
|
textDocument: { uri: SOME_FILE.uri },
|
|
134
134
|
position: { line: 0, character: 0 },
|
|
135
|
-
context: { triggerKind:
|
|
136
|
-
},
|
|
135
|
+
context: { triggerKind: server_interface_1.InlineCompletionTriggerKind.Invoked },
|
|
136
|
+
}, server_interface_1.CancellationToken.None);
|
|
137
137
|
beforeEach(async () => {
|
|
138
138
|
// Set up the server with a mock service, returning predefined recommendations
|
|
139
139
|
service = (0, ts_sinon_1.stubInterface)();
|
|
@@ -749,8 +749,8 @@ describe('Telemetry', () => {
|
|
|
749
749
|
const autoTriggerInlineCompletionWithReferences = async () => await features.doInlineCompletionWithReferences({
|
|
750
750
|
textDocument: { uri: SOME_FILE.uri },
|
|
751
751
|
position: AUTO_TRIGGER_POSITION,
|
|
752
|
-
context: { triggerKind:
|
|
753
|
-
},
|
|
752
|
+
context: { triggerKind: server_interface_1.InlineCompletionTriggerKind.Automatic },
|
|
753
|
+
}, server_interface_1.CancellationToken.None);
|
|
754
754
|
beforeEach(async () => {
|
|
755
755
|
// Set up the server with a mock service, returning predefined recommendations
|
|
756
756
|
service = (0, ts_sinon_1.stubInterface)();
|