mirror of
https://github.com/Microsoft/vscode
synced 2024-10-02 09:18:59 +00:00
Warn about star activation (#173112)
* star activation bad * better message * info level
This commit is contained in:
parent
1108c31f0d
commit
262ab0e7bf
|
@ -33,6 +33,7 @@ const relativeBadgeUrlRequiresHttpsRepository = l10n.t("Relative badge URLs requ
|
|||
const apiProposalNotListed = l10n.t("This proposal cannot be used because for this extension the product defines a fixed set of API proposals. You can test your extension but before publishing you MUST reach out to the VS Code team.");
|
||||
const implicitActivationEvent = l10n.t("This activation event cannot be explicitly listed by your extension.");
|
||||
const redundantImplicitActivationEvent = l10n.t("This activation event can be removed as VS Code generates these automatically from your package.json contribution declarations.");
|
||||
const starActivation = l10n.t("Using '*' activation is usually a bad idea as it impacts performance.");
|
||||
|
||||
enum Context {
|
||||
ICON,
|
||||
|
@ -155,19 +156,33 @@ export class ExtensionLinter {
|
|||
if (activationEventsNode?.type === 'array' && activationEventsNode.children) {
|
||||
for (const activationEventNode of activationEventsNode.children) {
|
||||
const activationEvent = getNodeValue(activationEventNode);
|
||||
// Redundant Implicit Activation
|
||||
if (info.implicitActivationEvents?.has(activationEvent) && redundantImplicitActivationEventPrefixes.some((prefix) => activationEvent.startsWith(prefix))) {
|
||||
const start = document.positionAt(activationEventNode.offset);
|
||||
const end = document.positionAt(activationEventNode.offset + activationEventNode.length);
|
||||
diagnostics.push(new Diagnostic(new Range(start, end), redundantImplicitActivationEvent, DiagnosticSeverity.Warning));
|
||||
} else {
|
||||
for (const implicitActivationEventPrefix of reservedImplicitActivationEventPrefixes) {
|
||||
if (activationEvent.startsWith(implicitActivationEventPrefix)) {
|
||||
const start = document.positionAt(activationEventNode.offset);
|
||||
const end = document.positionAt(activationEventNode.offset + activationEventNode.length);
|
||||
diagnostics.push(new Diagnostic(new Range(start, end), implicitActivationEvent, DiagnosticSeverity.Error));
|
||||
}
|
||||
}
|
||||
|
||||
// Reserved Implicit Activation
|
||||
for (const implicitActivationEventPrefix of reservedImplicitActivationEventPrefixes) {
|
||||
if (activationEvent.startsWith(implicitActivationEventPrefix)) {
|
||||
const start = document.positionAt(activationEventNode.offset);
|
||||
const end = document.positionAt(activationEventNode.offset + activationEventNode.length);
|
||||
diagnostics.push(new Diagnostic(new Range(start, end), implicitActivationEvent, DiagnosticSeverity.Error));
|
||||
}
|
||||
}
|
||||
|
||||
// Star activation
|
||||
if (activationEvent === '*') {
|
||||
const start = document.positionAt(activationEventNode.offset);
|
||||
const end = document.positionAt(activationEventNode.offset + activationEventNode.length);
|
||||
const diagnostic = new Diagnostic(new Range(start, end), starActivation, DiagnosticSeverity.Information);
|
||||
diagnostic.code = {
|
||||
value: 'star-activation',
|
||||
target: Uri.parse('https://code.visualstudio.com/api/references/activation-events#Start-up'),
|
||||
};
|
||||
diagnostics.push(diagnostic);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue