Tslint: Ignore uma linha com um único comentário

Criado em 2 jun. 2014  ·  31Comentários  ·  Fonte: palantir/tslint

Existe uma maneira de ignorar uma única linha, como em jshint?
Eu tentei // tslint ignore: line, mas isso não parece funcionar.

P2 Fixed Accepting PRs Feature Request

Comentários muito úteis

Para quem está aqui para encontrar uma solução alternativa

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

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

Todos 31 comentários

infelizmente, ainda não temos isso. você tem que habilitar e desabilitar a linha explicitamente.

Como você desativa uma linha?

Para quem está aqui para encontrar uma solução alternativa

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

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

houve alguma investigação sobre a implementação de um recurso semelhante ao descrito acima?

@patsissons qual recurso exatamente? Atualmente é possível habilitar / desabilitar uma única linha com dois comentários.

o recurso seria uma desativação de linha menos detalhada. ESLint tem vários métodos de fazer disabes de regra de linha única.

Por exemplo,

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

O método de agrupamento é ótimo como redundância para desabilitações de regras complexas, mas inline (ou próxima linha) tende a deixar o código menos poluído (esta é minha opinião, é claro, mas provavelmente não tão irracional).

Isso é barulhento:

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

Isto é muito melhor:

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

Ou mesmo apenas:

var x; // tslint:disable

O fato de ser um comentário de linha implicaria que desabilitaria apenas uma linha perfeitamente, eu acho.

Ou na pior das hipóteses:

var x; // tslint:disable-line

aceitar PRs para isso. aqui está uma alteração um tanto relacionada recente que permitiu // vez de /* comentários para desativação (dois comentários ainda são necessários): https://github.com/palantir/tslint/pull/1134

Vou tentar chegar a isso esta noite, se não for muito desafiador, espero que uma RP esta noite também

👍 Vamos acompanhar de perto o ESLint aqui:

someCode(); // tslint:disable-line

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

e

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

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

Isso é exatamente o que eu gostaria de alcançar: +1:

embora, apenas para maior clareza, ESLint não use dois pontos, seu estilo é o seguinte:

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

Assumirei que você prefere que fiquemos com o estilo TSLint que você incluiu acima (dois pontos e nenhuma regra de separação de vírgulas).

👍 Vamos nos ater ao estilo TSLint para manter a consistência

Eu tenho isso funcionando agora e estou passando por uma limpeza de commit antes de criar o PR. A estratégia era converter as variantes -line e -next-line em seus switches de comentário totalmente expressos equivalentes. Isso é feito rastreando a posição inicial da linha (para -line switches) e realizando um look-ahead para o final da linha seguinte (para -next-line switches). Isso parece funcionar muito bem e tem efeitos colaterais mínimos, pois está simplesmente agindo como um apelido para o formato mais detalhado.

Apenas uma observação antes de eu colocar meu PR em ordem, devido à forma como o código de intervalo desabilitado funciona, você não será capaz de fazer algo assim

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

Sinceramente, nunca espero que alguém faça algo assim, mas só queria anotar isso aqui. Você ainda pode fazer aninhamento padrão como este

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

Dúvida sobre a implementação, isso funciona?

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

Não, os comentários do switch não são analisados ​​dessa forma, eles devem ser formatados corretamente. Eu acredito em seu exemplo, você colocaria o comentário de desativação de linha única fora do comentário de várias linhas e isso deve funcionar conforme o esperado.

Obrigado pelo esclarecimento, entendi.

@lijunle, revisitando seu exemplo, acho que minha explicação estava um tanto incorreta. Eu não acho que você poderia alcançar o resultado pretendido desabilitando uma única linha. Acredito que o analisador não seria capaz de voltar a desabilitar todo o comentário multilinha. para desabilitar uma regra em um comentário de várias linhas, você precisaria envolver o comentário com um par de interruptores.

nenhuma das opções acima funciona
vocês estão falando sobre proposição de recursos ou já implementados?
difícil de seguir

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

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

Puta merda. Nem as palavras "suprimir" nem "ignorar" aparecem nessa documentação. Eu não posso acreditar o quanto foi necessário pesquisar no Google para me levar a este problema, leia tudo acima, apenas para descobrir que é um recurso suportado e documentado, mas as palavras-chave apropriadas não estão nos documentos, então é impossível para o Google. Você precisa clonar todo o repositório e enviar um PR para isso ou existe uma maneira mais rápida de sugerir correções para arquivos .md?

@pbarranis você pode fazer um novo tíquete com isso como uma solicitação de recurso. Se eles não fizerem a mudança, fazer um PR pode ser o próximo passo.

A propósito, você também pode fazer isso na mesma linha:

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

Pelo menos em [email protected].

Isso não funciona com regras como ordered-imports

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

infelizmente, esta página mostra apenas como proibir o uso disso. Ele não mostra como usá-lo adequadamente nem explica o quanto o tsLint ignora quando você o usa. Não sei por que não é mencionado nesta página que explica como suprimir regras https://palantir.github.io/tslint/usage/rule-flags/
E concordo com o comentário acima que perguntou POR QUE esta página não menciona as palavras "suprimir" ou "ignorar" para que possa ser facilmente encontrada ao usar o Google?
Para sua informação, esta página agora diz que o TSLint está sendo EOL este ano: https://github.com/palantir/tslint#tslint -rule-flags

Ah, o tslint está eventualmente (ainda não) sendo mesclado com o eslint, então isso é bom, suponho.

A questão é que agora tslint suporta o recurso de ignorar próxima linha.

Exemplo:

// tslint:disable-next-line

Ou

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

Para obter mais detalhes e exemplos, consulte https://palantir.github.io/tslint/usage/rule-flags/

🤖 Beep boop! 👉 TSLint está obsoleto 👈 e você deve mudar para typescript-eslint ! 🤖

🔒 Este problema está sendo bloqueado para evitar novas discussões desnecessárias. Obrigado! 👋

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dashmug picture dashmug  ·  3Comentários

DanielKucal picture DanielKucal  ·  3Comentários

ghost picture ghost  ·  3Comentários

allbto picture allbto  ·  3Comentários

jacob-robertson picture jacob-robertson  ·  3Comentários