Tslint: Ignoriere eine Zeile mit einem einzelnen Kommentar

Erstellt am 2. Juni 2014  ·  31Kommentare  ·  Quelle: palantir/tslint

Gibt es eine Möglichkeit, eine einzelne Zeile zu ignorieren, wie in jshint?
Ich habe versucht, // tslint ignore:line zu verwenden, aber das scheint nicht zu funktionieren.

P2 Fixed Accepting PRs Feature Request

Hilfreichster Kommentar

Für alle, die hier eine Workaround-Lösung finden

/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file

z.B
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

Alle 31 Kommentare

leider haben wir so etwas noch nicht. Sie müssen die Leitung explizit aktivieren und deaktivieren.

Wie deaktiviert man eine Leitung?

Für alle, die hier eine Workaround-Lösung finden

/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file

z.B
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

Wurde die Implementierung einer Funktion ähnlich der oben beschriebenen untersucht?

@patsissons welche Funktion genau? Derzeit ist es möglich, eine einzelne Zeile mit zwei Kommentaren zu aktivieren/deaktivieren.

die Funktion wäre weniger ausführliche Zeilendeaktivierung. ESLint hat mehrere Methoden, um einzeilige Regeln zu deaktivieren.

Zum Beispiel,

// eslint-disable-next-line rule-name
var x; // eslint-disable-line rule1 rule2

Die Wrapping-Methode eignet sich hervorragend als Redundanz für komplexe Regeldeaktivierungen, aber Inline (oder Next-Line) neigt dazu, den Code weniger verschmutzt zu lassen (dies ist natürlich meine Meinung, aber wahrscheinlich nicht so unvernünftig).

Das ist laut:

/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

Das ist viel besser:

var x; // eslint-disable-line rule1 rule2

Oder auch nur:

var x; // tslint:disable

Die Tatsache, dass es ein Zeilenkommentar ist, würde bedeuten, dass es nur diese eine Zeile deaktivieren würde, denke ich.

Oder schlimmstenfalls:

var x; // tslint:disable-line

akzeptiere dafür PRs. Hier ist eine kürzlich erfolgte Änderung, die // anstelle von /* Kommentaren zum Deaktivieren erlaubte (zwei Kommentare sind jedoch immer noch erforderlich): https://github.com/palantir/tslint/pull/1134

Ich werde heute Abend versuchen, dazu zu kommen, wenn es nicht zu schwierig ist, hoffentlich heute Abend auch eine PR

👍 Folgen wir ESLint hier genau:

someCode(); // tslint:disable-line

// tslint:disable-next-line
someCode();

und

someCode(); // tslint:disable-line:rule1 rule2

// tslint:disable-next-line:rule1
someCode();

Genau das möchte ich erreichen :+1:

Obwohl ESLint aus Gründen der Übersichtlichkeit keine Doppelpunkte verwendet, ist ihr Stil wie folgt:

// eslint-disable-next-line rule1, rule2
someCode();

Ich gehe davon aus, dass Sie es vorziehen würden, den TSLint-Stil beizubehalten, den Sie oben angegeben haben (Doppelpunkte und keine Kommas-Trennungsregeln).

👍 Bleiben wir aus Gründen der Konsistenz beim TSLint-Stil

Ich habe dies jetzt funktioniert und ich gehe gerade durch einige Commit-Bereinigungen, bevor ich den PR erstelle. Die Strategie bestand darin, die Varianten -line und -next-line in ihre entsprechenden vollständig ausgedrückten Kommentarschalter umzuwandeln. Dies geschieht durch Verfolgen der Zeilenanfangsposition (für -line Schalter) und Durchführen einer Vorausschau für das Ende der folgenden Zeile (für -next-line Schalter). Diese scheinen recht gut zu funktionieren und haben minimale Nebenwirkungen, da sie einfach als Alias ​​für das ausführlichere Format dienen.

Nur eine Anmerkung, bevor ich meine PR in Ordnung bringe, aufgrund der Funktionsweise des deaktivierten Intervallcodes können Sie so etwas nicht tun

// tslint:disable-next-line:quotemark variable-name
var AAAaA = 'test' // tslint:enable-line variable-name

Ich erwarte ehrlich gesagt nie, dass jemand so etwas tut, aber ich wollte es hier nur anmerken. Sie können immer noch so eine Standardverschachtelung durchführen

// tslint:disable
var AAAaA = 'test' // tslint:enable-line:quotemark
// tslint:enable-next-line:variable-name
var AAAaA = 'test'
// tslint:enable

Frage zur Umsetzung, funktioniert das?

/**
 * this is a very long line and violate max-line-length. // tslint:disable-line:max-line-length
 */

Nein, die Switch-Kommentare werden nicht so geparst, sie müssen richtig formatiert sein. Ich glaube, in Ihrem Beispiel würden Sie den einzeiligen Deaktivierungskommentar außerhalb des mehrzeiligen Kommentars platzieren und das sollte wie erwartet funktionieren.

Danke für die Aufklärung, habs verstanden.

@lijunle Ich

keines der oben genannten funktioniert
sprichst du über Feature-Vorschläge oder bereits implementierte?
schwer zu folgen

@phil123456 https://github.com/palantir/tslint#rule -flags

// tslint:disable-next-line <optional rule identifier>
var foo = 123;

Blutige Hölle. Weder die Wörter "unterdrücken" noch "ignorieren" kommen in dieser Dokumentation vor. Ich kann nicht glauben, wie viel Googeln nötig war, um zu diesem Problem zu gelangen. Lesen Sie alles oben, nur um festzustellen, dass es sich um eine unterstützte, dokumentierte Funktion handelt, aber die entsprechenden Schlüsselwörter sind nicht in den Dokumenten enthalten, also ist es unmöglich zu Google. Müssen Sie das gesamte Repository klonen und dafür eine PR einreichen, oder gibt es eine schnellere Möglichkeit, Korrekturen für .md-Dateien vorzuschlagen?

@pbarranis kannst du damit ein neues Ticket als Feature Request

Sie können es übrigens auch in der gleichen Zeile tun:

console.log("poop"); // tslint:disable-line no-console

Zumindest ab [email protected].

Das funktioniert nicht mit Regeln wie ordered-imports

//@ts-ignore
https://palantir.github.io/tslint/rules/

leider zeigt diese Seite nur, wie man dies verbietet. Es zeigt nicht, wie man es richtig verwendet, oder erklärt, wie viel tsLint ignoriert, wenn Sie es verwenden. Ich weiß nicht, warum es auf dieser Seite nicht erwähnt wird, die erklärt, wie man Regeln unterdrückt https://palantir.github.io/tslint/usage/rule-flags/
Und ich stimme dem obigen Kommentar zu, in dem gefragt wurde, WARUM auf dieser Seite die Wörter "unterdrücken" oder "ignorieren" nicht erwähnt werden, damit sie bei der Verwendung von Google leicht gefunden werden können.
FYI diese Seite sagt jetzt, dass TSLint dieses Jahr EOL ist: https://github.com/palantir/tslint#tslint -rule-flags

Ah, tslint wird irgendwann (noch) nicht mit eslint zusammengeführt, also ist das nett, nehme ich an.

Der Punkt ist, dass tslint jetzt die Funktion "Nächste Zeile ignorieren" unterstützt.

Beispiel:

// tslint:disable-next-line

Oder

// tslint:disable-next-line:rule1 rule2 rule3

Weitere Details und Beispiele finden Sie unter https://palantir.github.io/tslint/usage/rule-flags/

🤖 Beep boop! 👉 TSLint ist veraltet 👈 und Sie sollten zu typescript-eslint wechseln ! 🤖

🔒 Dieses Problem wird gesperrt, um weitere unnötige Diskussionen zu vermeiden. Dankeschön! 👋

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

avanderhoorn picture avanderhoorn  ·  3Kommentare

dashmug picture dashmug  ·  3Kommentare

denkomanceski picture denkomanceski  ·  3Kommentare

cateyes99 picture cateyes99  ·  3Kommentare

mrand01 picture mrand01  ·  3Kommentare