Skip to content

Commit 6d90624

Browse files
authored
Merge aws#5087 lint: disallow console.log
2 parents f4487ce + e2e0461 commit 6d90624

File tree

24 files changed

+185
-35
lines changed

24 files changed

+185
-35
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ module.exports = {
159159
'aws-toolkits/no-banned-usages': 'error',
160160
'aws-toolkits/no-incorrect-once-usage': 'error',
161161
'aws-toolkits/no-string-exec-for-child-process': 'error',
162+
'aws-toolkits/no-console-log': 'error',
162163

163164
'no-restricted-imports': [
164165
'error',

CONTRIBUTING.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,8 @@ The package.json 'devDependencies' includes `eslint-plugin-aws-toolkits`. This i
477477
3. Register your rule in `plugins/eslint-plugin-aws-toolkits/index.ts`.
478478
4. Enable your rule in `.eslintrc`.
479479

480+
Writing lint rules can be tricky if you are unfamiliar with the process. Use an AST viewer such as https://astexplorer.net/
481+
480482
### AWS SDK generator
481483

482484
When the AWS SDK does not (yet) support a service but you have an API

packages/core/src/lambda/vue/configEditor/samInvokeFrontend.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
// Disable because it is a front-end file.
7+
/* eslint-disable aws-toolkits/no-console-log */
8+
69
import { defineComponent } from 'vue'
710
import { AwsSamDebuggerConfiguration } from '../../../shared/sam/debugger/awsSamDebugConfiguration'
811
import { AwsSamDebuggerConfigurationLoose, SamInvokeWebview } from './samInvokeBackend'

packages/core/src/login/webview/vue/backend.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { AuthEnabledFeatures, AuthError, AuthFlowState, AuthUiClick, TelemetryMe
3333
import { AuthUtil } from '../../../codewhisperer/util/authUtil'
3434
import { DevSettings } from '../../../shared/settings'
3535
import { AuthSSOServer } from '../../../auth/sso/server'
36+
import { getLogger } from '../../../shared/logger/logger'
3637

3738
export abstract class CommonAuthWebview extends VueWebview {
3839
private metricMetadata: TelemetryMetadata = {}
@@ -75,7 +76,8 @@ export abstract class CommonAuthWebview extends VueWebview {
7576
await setupFunc()
7677
return
7778
} catch (e) {
78-
console.log(e)
79+
getLogger().error('ssoSetup encountered an error: %s', e)
80+
7981
if (e instanceof ToolkitError && e.code === 'NotOnboarded') {
8082
/**
8183
* Connection is fine, they just skipped onboarding so not an actual error.

packages/core/src/shared/clients/codecatalystClient.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const localize = nls.loadMessageBundle()
1111

1212
import * as AWS from 'aws-sdk'
1313
import * as logger from '../logger/logger'
14-
import { PerfLog } from '../logger/logger'
14+
import { PerfLog } from '../logger/perfLogger'
1515
import { ServiceConfigurationOptions } from 'aws-sdk/lib/service'
1616
import { CancellationError, Timeout, waitTimeout, waitUntil } from '../utilities/timeoutUtils'
1717
import { isUserCancelledError } from '../../shared/errors'

packages/core/src/shared/extensionGlobals.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { TelemetryService } from './telemetry/telemetryService'
1818
import { UriHandler } from './vscode/uriHandler'
1919
import { GlobalState } from './globalState'
2020
import { setContext } from './vscode/setContext'
21+
import { getLogger } from './logger/logger'
2122

2223
type Clock = Pick<
2324
typeof globalThis,
@@ -47,7 +48,7 @@ function copyClock(): Clock {
4748

4849
const browserAlternatives = getBrowserAlternatives()
4950
if (Object.keys(browserAlternatives).length > 0) {
50-
console.log('globals: Using browser alternatives for clock functions')
51+
getLogger().info('globals: Using browser alternatives for clock functions')
5152
Object.assign(clock, browserAlternatives)
5253
} else {
5354
// In node.js context

packages/core/src/shared/fs/templateRegistry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { getLogger } from '../logger'
1616
import globals from '../extensionGlobals'
1717
import { Timeout } from '../utilities/timeoutUtils'
1818
import { localize } from '../utilities/vsCodeUtils'
19-
import { PerfLog } from '../logger/logger'
19+
import { PerfLog } from '../logger/perfLogger'
2020
import { showMessageWithCancel } from '../utilities/messages'
2121

2222
export class CloudFormationTemplateRegistry extends WatchedFiles<CloudFormation.Template> {

packages/core/src/shared/languageServer/utils/runner.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
* Licensed under the MIT License. See License.txt in the project root for license information.
99
*--------------------------------------------------------------------------------------------*/
1010

11+
// Disable because this is a language server.
12+
/* eslint-disable aws-toolkits/no-console-log */
13+
1114
import { CancellationToken, ErrorCodes, ResponseError } from 'vscode-languageserver'
1215

1316
export function formatError(message: string, err: any): string {

packages/core/src/shared/logger/logger.ts

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -156,23 +156,28 @@ export class ConsoleLogger implements Logger {
156156
}
157157
}
158158
public debug(message: string | Error, ...meta: any[]): number {
159+
// eslint-disable-next-line aws-toolkits/no-console-log
159160
console.debug(message, ...meta)
160161
return 0
161162
}
162163
public verbose(message: string | Error, ...meta: any[]): number {
164+
// eslint-disable-next-line aws-toolkits/no-console-log
163165
console.debug(message, ...meta)
164166
return 0
165167
}
166168
public info(message: string | Error, ...meta: any[]): number {
169+
// eslint-disable-next-line aws-toolkits/no-console-log
167170
console.info(message, ...meta)
168171
return 0
169172
}
170173
public warn(message: string | Error, ...meta: any[]): number {
174+
// eslint-disable-next-line aws-toolkits/no-console-log
171175
console.warn(message, ...meta)
172176
return 0
173177
}
174178
/** Note: In nodejs this prints to `stderr` (see {@link Console.error}). */
175179
public error(message: string | Error, ...meta: any[]): number {
180+
// eslint-disable-next-line aws-toolkits/no-console-log
176181
console.error(message, ...meta)
177182
return 0
178183
}
@@ -193,26 +198,3 @@ export function getNullLogger(type?: 'channel' | 'debugConsole' | 'main'): Logge
193198
export function setLogger(logger: Logger | undefined, type?: 'channel' | 'debugConsole' | 'main') {
194199
toolkitLoggers[type ?? 'main'] = logger
195200
}
196-
197-
export class PerfLog {
198-
private readonly log
199-
public readonly start
200-
201-
public constructor(public readonly topic: string) {
202-
const log = getLogger()
203-
this.log = log
204-
this.start = performance.now()
205-
}
206-
207-
public elapsed(): number {
208-
return performance.now() - this.start
209-
}
210-
211-
public done(): void {
212-
if (!this.log.logLevelEnabled('verbose')) {
213-
return
214-
}
215-
const elapsed = this.elapsed()
216-
this.log.verbose('%s took %dms', this.topic, elapsed.toFixed(1))
217-
}
218-
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*!
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
import { getLogger } from './logger'
7+
8+
export class PerfLog {
9+
private readonly log
10+
public readonly start
11+
12+
public constructor(public readonly topic: string) {
13+
const log = getLogger()
14+
this.log = log
15+
this.start = performance.now()
16+
}
17+
18+
public elapsed(): number {
19+
return performance.now() - this.start
20+
}
21+
22+
public done(): void {
23+
if (!this.log.logLevelEnabled('verbose')) {
24+
return
25+
}
26+
const elapsed = this.elapsed()
27+
this.log.verbose('%s took %dms', this.topic, elapsed.toFixed(1))
28+
}
29+
}

0 commit comments

Comments
 (0)