Tslint: Ignorar una línea con un solo comentario

Creado en 2 jun. 2014  ·  31Comentarios  ·  Fuente: palantir/tslint

¿Hay alguna forma de ignorar una sola línea, como en jshint?
He intentado // tslint ignore: line pero parece que no funciona.

P2 Fixed Accepting PRs Feature Request

Comentario más útil

Para que cualquiera que esté aquí encuentre una solución alternativa

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

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

Todos 31 comentarios

desafortunadamente, todavía no tenemos tal cosa. tienes que habilitar y deshabilitar la línea explícitamente.

¿Cómo inhabilitas una línea?

Para que cualquiera que esté aquí encuentre una solución alternativa

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

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

¿Ha habido alguna investigación sobre la implementación de una función similar a la descrita anteriormente?

@patsissons ¿qué característica exactamente? Actualmente es posible habilitar / deshabilitar una sola línea con dos comentarios.

la función sería una desactivación de líneas menos detallada. ESLint tiene varios métodos para desactivar reglas de una sola línea.

Por ejemplo,

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

El método de envoltura es excelente como redundancia para inhabilitaciones de reglas complejas, pero en línea (o en la siguiente línea) tiende a dejar el código menos contaminado (esta es mi opinión, por supuesto, pero probablemente no tan irrazonable).

Esto es ruidoso:

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

Esto es mucho mejor:

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

O incluso simplemente:

var x; // tslint:disable

El hecho de que sea un comentario de línea implicaría que solo desactivaría esa línea muy bien, creo.

O en el peor de los casos:

var x; // tslint:disable-line

aceptando RP para esto. aquí hay un cambio reciente algo relacionado que permitió // lugar de /* comentarios para deshabilitar (aunque todavía se requieren dos comentarios): https://github.com/palantir/tslint/pull/1134

Intentaré llegar a esto esta noche, si no es demasiado desafiante, espero que un PR esta noche también

👍 Sigamos de cerca a ESLint aquí:

someCode(); // tslint:disable-line

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

y

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

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

Eso es precisamente lo que me gustaría lograr: +1:

aunque, solo para mayor claridad, ESLint no usa dos puntos, su estilo es el siguiente:

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

Asumiré que preferiría que nos ciñáramos al estilo TSLint que incluyó anteriormente (dos puntos y ninguna regla de separación de comas).

👍 Sigamos con el estilo TSLint para mayor consistencia

Tengo esto funcionando ahora y estoy pasando por una limpieza de compromiso antes de crear el PR. La estrategia consistía en convertir las variantes -line y -next-line en sus conmutadores de comentarios equivalentes totalmente expresados. Esto se hace rastreando la posición de inicio de la línea (para los interruptores -line ) y realizando una búsqueda hacia el final de la siguiente línea (para los interruptores -next-line ). Parece que funcionan bastante bien y tienen efectos secundarios mínimos, ya que simplemente actúa como un alias para el formato más detallado.

Solo una nota antes de que ponga mi PR en orden, debido a la forma en que funciona el código de intervalo deshabilitado, no podrá hacer algo como esto

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

Honestamente, nunca espero que alguien haga algo así, pero solo quería señalarlo aquí. Todavía puedes hacer un anidamiento estándar como este

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

Pregunta sobre la implementación, ¿funciona?

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

No, los comentarios del conmutador no se analizan así, deben formatearse correctamente. Creo en su ejemplo, colocaría el comentario de desactivación de una sola línea fuera del comentario de varias líneas y eso debería funcionar como se esperaba.

Gracias por la aclaración, lo tengo.

@lijunle acaba de revisar su ejemplo, creo que mi explicación fue en realidad algo incorrecta. No creo que pueda lograr el resultado deseado con inhabilitaciones de una sola línea. Creo que el analizador no podría volver atrás para deshabilitar correctamente todo el comentario de varias líneas. para deshabilitar una regla en un comentario de varias líneas, necesitaría envolver el comentario con un par de conmutadores.

ninguno de los trabajos anteriores
¿Están hablando de propuestas de características o ya implementadas?
difícil de seguir

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

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

Infierno sangriento. Ni las palabras "suprimir" ni "ignorar" aparecen en esa documentación. No puedo creer la cantidad de búsquedas en Google que me llevó a este problema, leer todo lo anterior, solo para descubrir que es una función documentada y compatible, pero las palabras clave adecuadas no están en los documentos, por lo que es imposible para Google. ¿Tiene que clonar todo el repositorio y enviar un PR para eso, o hay una forma más rápida de sugerir correcciones a los archivos .md?

@pbarranis puede hacer un nuevo ticket con eso como una solicitud de función. Si no hacen el cambio, entonces hacer un PR podría ser el siguiente paso.

Por cierto, también puedes hacerlo en la misma línea:

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

Al menos a partir de [email protected].

Esto no funciona con reglas como ordered-imports

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

desafortunadamente, esta página solo muestra cómo prohibir el uso de esto. No muestra cómo usarlo correctamente ni explica cuánto ignora tsLint cuando lo usa. No sé por qué no se menciona en esta página que explica cómo suprimir las reglas https://palantir.github.io/tslint/usage/rule-flags/
Y estoy de acuerdo con el comentario anterior que pregunta ¿POR QUÉ esta página no menciona las palabras "suprimir" o "ignorar" para que se pueda encontrar fácilmente cuando se usa Google?
Para su información, esta página ahora dice que TSLint está en EOL este año: https://github.com/palantir/tslint#tslint -rule-flags

Ah, tslint eventualmente (aún no) se fusionará con eslint, así que eso es bueno, supongo.

El punto es que ahora tslint admite la función de ignorar la siguiente línea.

Ejemplo:

// tslint:disable-next-line

O

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

Para obtener más detalles y ejemplos, consulte https://palantir.github.io/tslint/usage/rule-flags/

🤖 ¡Bip boop! 👉 TSLint está obsoleto 👈 ¡y debería cambiar a mecanografiado-eslint ! 🤖

🔒 Este tema se está bloqueando para evitar más discusiones innecesarias. ¡Gracias! 👋

¿Fue útil esta página
0 / 5 - 0 calificaciones