Implement 'no Unused Parameters' typescript compilation rule (#518)
* Implement rule * Based on Stephen's feedback.
This commit is contained in:
Родитель
d8c851b002
Коммит
1653ace5ae
|
@ -112,7 +112,7 @@ export class CosmosEditorManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async onDidSaveTextDocument(context: IActionContext, globalState: vscode.Memento, doc: vscode.TextDocument, tree: AzureTreeDataProvider): Promise<void> {
|
public async onDidSaveTextDocument(context: IActionContext, doc: vscode.TextDocument, tree: AzureTreeDataProvider): Promise<void> {
|
||||||
context.suppressTelemetry = true;
|
context.suppressTelemetry = true;
|
||||||
let filePath = Object.keys(this.fileMap).find((filePath) => path.relative(doc.uri.fsPath, filePath) === '');
|
let filePath = Object.keys(this.fileMap).find((filePath) => path.relative(doc.uri.fsPath, filePath) === '');
|
||||||
if (!filePath) {
|
if (!filePath) {
|
||||||
|
|
|
@ -115,7 +115,7 @@ export function activate(context: vscode.ExtensionContext) {
|
||||||
actionHandler.registerCommand('cosmosDB.update', (filePath: vscode.Uri) => editorManager.updateMatchingNode(filePath, tree));
|
actionHandler.registerCommand('cosmosDB.update', (filePath: vscode.Uri) => editorManager.updateMatchingNode(filePath, tree));
|
||||||
actionHandler.registerCommand('cosmosDB.loadMore', (node?: IAzureNode) => tree.loadMore(node));
|
actionHandler.registerCommand('cosmosDB.loadMore', (node?: IAzureNode) => tree.loadMore(node));
|
||||||
actionHandler.registerEvent('cosmosDB.CosmosEditorManager.onDidSaveTextDocument', vscode.workspace.onDidSaveTextDocument, async function
|
actionHandler.registerEvent('cosmosDB.CosmosEditorManager.onDidSaveTextDocument', vscode.workspace.onDidSaveTextDocument, async function
|
||||||
(this: IActionContext, doc: vscode.TextDocument): Promise<void> { await editorManager.onDidSaveTextDocument(this, context.globalState, doc, tree) });
|
(this: IActionContext, doc: vscode.TextDocument): Promise<void> { await editorManager.onDidSaveTextDocument(this, doc, tree) });
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getAttachedNode(tree: AzureTreeDataProvider): Promise<IAzureParentNode<AttachedAccountsTreeItem>> {
|
async function getAttachedNode(tree: AzureTreeDataProvider): Promise<IAzureParentNode<AttachedAccountsTreeItem>> {
|
||||||
|
|
|
@ -92,7 +92,7 @@ export class GraphViewServer extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
// how know resolve/reject?
|
// how know resolve/reject?
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, _reject) => {
|
||||||
this._httpServer = http.createServer()
|
this._httpServer = http.createServer()
|
||||||
this._httpServer.listen(
|
this._httpServer.listen(
|
||||||
0, // dynamnically pick an unused port
|
0, // dynamnically pick an unused port
|
||||||
|
@ -109,7 +109,7 @@ export class GraphViewServer extends EventEmitter {
|
||||||
this.setUpSocket();
|
this.setUpSocket();
|
||||||
});
|
});
|
||||||
|
|
||||||
this._server.on('error', socket => {
|
this._server.on('error', _socket => {
|
||||||
console.error("Error from server");
|
console.error("Error from server");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -468,7 +468,7 @@ export class GraphViewServer extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
// tslint:disable-next-line:no-any
|
// tslint:disable-next-line:no-any
|
||||||
private log(message, ...args: any[]) {
|
private log(_message, ..._args: any[]) {
|
||||||
// console.log(message, ...args);
|
// console.log(message, ...args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ export interface IGremlinEndpoint {
|
||||||
export async function TryGetGremlinEndpointFromAzure(client: CosmosDBManagementClient, resourceGroup: string, account: string): Promise<IGremlinEndpoint | undefined> {
|
export async function TryGetGremlinEndpointFromAzure(client: CosmosDBManagementClient, resourceGroup: string, account: string): Promise<IGremlinEndpoint | undefined> {
|
||||||
return new Promise<IGremlinEndpoint>((resolve, reject) => {
|
return new Promise<IGremlinEndpoint>((resolve, reject) => {
|
||||||
// Use the callback version of get because the Promise one currently doesn't expose gremlinEndpoint (https://github.com/Azure/azure-documentdb-node/issues/227)
|
// Use the callback version of get because the Promise one currently doesn't expose gremlinEndpoint (https://github.com/Azure/azure-documentdb-node/issues/227)
|
||||||
client.databaseAccounts.get(resourceGroup, account, (error, result, httpRequest, response) => {
|
client.databaseAccounts.get(resourceGroup, account, (error, _result, _httpRequest, response) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
reject(error);
|
reject(error);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -123,7 +123,7 @@ export class MongoScriptDocumentVisitor extends MongoVisitor<MongoCommand[]> {
|
||||||
return super.visitArgumentList(ctx);
|
return super.visitArgumentList(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected defaultResult(node: ParseTree): MongoCommand[] {
|
protected defaultResult(_node: ParseTree): MongoCommand[] {
|
||||||
return this.commands;
|
return this.commands;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ export class MongoVisitor<T> implements mongoVisitor<T> {
|
||||||
throw new Error(`Error near line ${node._symbol.line}, column ${node.symbol.charPositionInLine + 1}, text '${node.text}'. Please check syntax.`);
|
throw new Error(`Error near line ${node._symbol.line}, column ${node.symbol.charPositionInLine + 1}, text '${node.text}'. Please check syntax.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected defaultResult(node: ParseTree): T {
|
protected defaultResult(_node: ParseTree): T {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ export class MongoVisitor<T> implements mongoVisitor<T> {
|
||||||
return nextResult === null ? aggregate : nextResult;
|
return nextResult === null ? aggregate : nextResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldVisitNextChild(node, currentResult: T): boolean {
|
shouldVisitNextChild(_node, _currentResult: T): boolean {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ export class CompletionItemsVisitor extends MongoVisitor<Promise<CompletionItem[
|
||||||
return ctx.parent.accept(this);
|
return ctx.parent.accept(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private getArgumentCompletionItems(documentUri: string, collectionName: string, ctx: ParserRuleContext): Thenable<CompletionItem[]> {
|
private getArgumentCompletionItems(documentUri: string, _collectionName: string, ctx: ParserRuleContext): Thenable<CompletionItem[]> {
|
||||||
const text = this.textDocument.getText();
|
const text = this.textDocument.getText();
|
||||||
const document = TextDocument.create(documentUri, 'json', 1, text.substring(ctx.start.startIndex, ctx.stop.stopIndex + 1));
|
const document = TextDocument.create(documentUri, 'json', 1, text.substring(ctx.start.startIndex, ctx.stop.stopIndex + 1));
|
||||||
const positionOffset = this.textDocument.offsetAt(this.at);
|
const positionOffset = this.textDocument.offsetAt(this.at);
|
||||||
|
|
|
@ -25,7 +25,7 @@ export class LanguageService {
|
||||||
this.textDocuments.listen(connection);
|
this.textDocuments.listen(connection);
|
||||||
// After the server has started the client sends an initilize request. The server receives
|
// After the server has started the client sends an initilize request. The server receives
|
||||||
// in the passed params the rootPath of the workspace plus the client capabilities.
|
// in the passed params the rootPath of the workspace plus the client capabilities.
|
||||||
connection.onInitialize((params: InitializeParams): InitializeResult => {
|
connection.onInitialize((_params: InitializeParams): InitializeResult => {
|
||||||
return {
|
return {
|
||||||
capabilities: {
|
capabilities: {
|
||||||
textDocumentSync: this.textDocuments.syncKind, // Tell the client that the server works in FULL text document sync mode
|
textDocumentSync: this.textDocuments.syncKind, // Tell the client that the server works in FULL text document sync mode
|
||||||
|
|
|
@ -74,7 +74,7 @@ export default class SchemaService {
|
||||||
private _resolveQueryCollectionSchema(collectionName: string, schemaUri: string): Thenable<string> {
|
private _resolveQueryCollectionSchema(collectionName: string, schemaUri: string): Thenable<string> {
|
||||||
const collection = this._db.collection(collectionName)
|
const collection = this._db.collection(collectionName)
|
||||||
const cursor = collection.find();
|
const cursor = collection.find();
|
||||||
return new Promise((c, e) => {
|
return new Promise((resolve, _reject) => {
|
||||||
this.readNext([], cursor, 10, (result) => {
|
this.readNext([], cursor, 10, (result) => {
|
||||||
const schema: JSONSchema = {
|
const schema: JSONSchema = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
|
@ -85,7 +85,7 @@ export default class SchemaService {
|
||||||
}
|
}
|
||||||
this.setGlobalOperatorProperties(schema);
|
this.setGlobalOperatorProperties(schema);
|
||||||
this.setLogicalOperatorProperties(schema, schemaUri);
|
this.setLogicalOperatorProperties(schema, schemaUri);
|
||||||
c(JSON.stringify(schema));
|
resolve(JSON.stringify(schema));
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -93,13 +93,13 @@ export default class SchemaService {
|
||||||
private _resolveAggregateCollectionSchema(collectionName: string): Thenable<string> {
|
private _resolveAggregateCollectionSchema(collectionName: string): Thenable<string> {
|
||||||
const collection = this._db.collection(collectionName)
|
const collection = this._db.collection(collectionName)
|
||||||
const cursor = collection.find();
|
const cursor = collection.find();
|
||||||
return new Promise((c, e) => {
|
return new Promise((resolve, _reject) => {
|
||||||
this.readNext([], cursor, 10, (result) => {
|
this.readNext([], cursor, 10, (_result) => {
|
||||||
const schema: JSONSchema = {
|
const schema: JSONSchema = {
|
||||||
type: 'array',
|
type: 'array',
|
||||||
items: this.getAggregateStagePropertiesSchema(this.queryCollectionSchema(collectionName)),
|
items: this.getAggregateStagePropertiesSchema(this.queryCollectionSchema(collectionName)),
|
||||||
}
|
}
|
||||||
c(JSON.stringify(schema));
|
resolve(JSON.stringify(schema));
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,7 +251,7 @@ function reportProgress<T>(promise: Thenable<T>, title: string): Thenable<T> {
|
||||||
location: vscode.ProgressLocation.Window,
|
location: vscode.ProgressLocation.Window,
|
||||||
title
|
title
|
||||||
},
|
},
|
||||||
(progress) => {
|
(_progress) => {
|
||||||
return promise;
|
return promise;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,7 +183,7 @@ function reportProgress<T>(promise: Thenable<T>, title: string): Thenable<T> {
|
||||||
location: vscode.ProgressLocation.Window,
|
location: vscode.ProgressLocation.Window,
|
||||||
title
|
title
|
||||||
},
|
},
|
||||||
(progress) => {
|
(_progress) => {
|
||||||
return promise;
|
return promise;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ export class AttachedAccountsTreeItem implements IAzureParentTreeItem {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async loadMoreChildren(_node: IAzureNode, clearCache: boolean): Promise<IAzureTreeItem[]> {
|
public async loadMoreChildren(_node: IAzureNode, _clearCache: boolean): Promise<IAzureTreeItem[]> {
|
||||||
const attachedAccounts: IAzureTreeItem[] = await this.getAttachedAccounts();
|
const attachedAccounts: IAzureTreeItem[] = await this.getAttachedAccounts();
|
||||||
|
|
||||||
return attachedAccounts.length > 0 ? attachedAccounts : [{
|
return attachedAccounts.length > 0 ? attachedAccounts : [{
|
||||||
|
|
|
@ -8,7 +8,7 @@ import * as cp from 'child_process';
|
||||||
export async function commandSucceeds(command: string, ...args: string[]): Promise<boolean> {
|
export async function commandSucceeds(command: string, ...args: string[]): Promise<boolean> {
|
||||||
return await new Promise<boolean>(resolve => {
|
return await new Promise<boolean>(resolve => {
|
||||||
cp.spawn(command, args)
|
cp.spawn(command, args)
|
||||||
.on('error', err => resolve(false))
|
.on('error', _error => resolve(false))
|
||||||
.on('exit', code => resolve(code === 0));
|
.on('exit', code => resolve(code === 0));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ suite("inputValidation Tests", () => {
|
||||||
|
|
||||||
test("executed", async () => {
|
test("executed", async () => {
|
||||||
let value = await validOnTimeoutOrException(async () => {
|
let value = await validOnTimeoutOrException(async () => {
|
||||||
return await new Promise<string | undefined>((resolve, reject) => {
|
return await new Promise<string | undefined>((resolve, _reject) => {
|
||||||
setTimeout(() => { resolve("invalid input"); }, 1);
|
setTimeout(() => { resolve("invalid input"); }, 1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -24,7 +24,7 @@ suite("inputValidation Tests", () => {
|
||||||
test("timed out",
|
test("timed out",
|
||||||
async () => {
|
async () => {
|
||||||
let value = await validOnTimeoutOrException(async () => {
|
let value = await validOnTimeoutOrException(async () => {
|
||||||
return await new Promise<string | undefined>((resolve, reject) => {
|
return await new Promise<string | undefined>((resolve, _reject) => {
|
||||||
setTimeout(() => { resolve("invalid input"); }, 1000);
|
setTimeout(() => { resolve("invalid input"); }, 1000);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -35,7 +35,7 @@ suite("inputValidation Tests", () => {
|
||||||
|
|
||||||
test("exception", async () => {
|
test("exception", async () => {
|
||||||
let value = await validOnTimeoutOrException(async () => {
|
let value = await validOnTimeoutOrException(async () => {
|
||||||
return await new Promise<string | undefined>((resolve, reject) => {
|
return await new Promise<string | undefined>((_resolve, reject) => {
|
||||||
setTimeout(() => { reject(new Error("Oh, boy")); }, 1);
|
setTimeout(() => { reject(new Error("Oh, boy")); }, 1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,7 +24,7 @@ suite("timeout Tests", () => {
|
||||||
let executed = false;
|
let executed = false;
|
||||||
|
|
||||||
await rejectOnTimeout(1, () => {
|
await rejectOnTimeout(1, () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, _reject) => {
|
||||||
executed = true;
|
executed = true;
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
|
@ -37,7 +37,7 @@ suite("timeout Tests", () => {
|
||||||
let executed = false;
|
let executed = false;
|
||||||
|
|
||||||
await rejectOnTimeout(1000, () => {
|
await rejectOnTimeout(1000, () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, _reject) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
executed = true;
|
executed = true;
|
||||||
resolve();
|
resolve();
|
||||||
|
@ -52,7 +52,7 @@ suite("timeout Tests", () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await rejectOnTimeout(1, async () => {
|
await rejectOnTimeout(1, async () => {
|
||||||
await new Promise((resolve, reject) => {
|
await new Promise((resolve, _reject) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
executed = true;
|
executed = true;
|
||||||
resolve();
|
resolve();
|
||||||
|
@ -73,7 +73,7 @@ suite("timeout Tests", () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await rejectOnTimeout(1000, async () => {
|
await rejectOnTimeout(1000, async () => {
|
||||||
await new Promise((resolve, reject) => {
|
await new Promise((_resolve, _reject) => {
|
||||||
throw new Error("I threw up");
|
throw new Error("I threw up");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
@ -90,7 +90,7 @@ suite("timeout Tests", () => {
|
||||||
|
|
||||||
test("executed", async () => {
|
test("executed", async () => {
|
||||||
let value = await valueOnTimeout(1000, 123, async () => {
|
let value = await valueOnTimeout(1000, 123, async () => {
|
||||||
return await new Promise<number>((resolve, reject) => {
|
return await new Promise<number>((resolve, _reject) => {
|
||||||
setTimeout(() => { resolve(-123); }, 1);
|
setTimeout(() => { resolve(-123); }, 1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -100,7 +100,7 @@ suite("timeout Tests", () => {
|
||||||
|
|
||||||
test("timed out", async () => {
|
test("timed out", async () => {
|
||||||
let value = await valueOnTimeout(1, 123, async () => {
|
let value = await valueOnTimeout(1, 123, async () => {
|
||||||
return await new Promise<number>((resolve, reject) => {
|
return await new Promise<number>((resolve, _reject) => {
|
||||||
setTimeout(() => { resolve(-123); }, 1000);
|
setTimeout(() => { resolve(-123); }, 1000);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -112,7 +112,7 @@ suite("timeout Tests", () => {
|
||||||
let error;
|
let error;
|
||||||
try {
|
try {
|
||||||
await valueOnTimeout(1000, 123, async () => {
|
await valueOnTimeout(1000, 123, async () => {
|
||||||
return await new Promise<number>((resolve, reject) => {
|
return await new Promise<number>((_resolve, reject) => {
|
||||||
setTimeout(() => { reject(new Error("rejected")); }, 1);
|
setTimeout(() => { reject(new Error("rejected")); }, 1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"noImplicitThis": true,
|
"noImplicitThis": true,
|
||||||
"noImplicitReturns": true,
|
"noImplicitReturns": true,
|
||||||
"noUnusedLocals": true,
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
"rootDir": ".",
|
"rootDir": ".",
|
||||||
"experimentalDecorators": true
|
"experimentalDecorators": true
|
||||||
},
|
},
|
||||||
|
|
Загрузка…
Ссылка в новой задаче