Avançar o Linter para idiomas gramaticais do tipo Go.
O TLIN é um linhador projetado para linguagens de programação GO e GNO. Ele aproveita a funcionalidade do Golangci-Lint como seu principal mecanismo de linha, fornecendo uma poderosa análise de código para idiomas gramaticais do tipo Go.
Inspirado no Clippy da RUR, a TLLI visa fornecer sugestões adicionais de melhoria de código além das regras padrão do Golangci-Lint.
Para instalar o TLL CLI, siga estas etapas:
git clone https://github.com/gnolang/tlin cd tlingo install ./cmd/tlin é isso! Agora você pode usar o comando tlin em seu terminal.
tlin < path > Substitua <path> pelo caminho do arquivo ou do diretório que você deseja analisar.
Para verificar o diretório atual, execute:
tlin . O TLLION suporta um arquivo de configuração ( .tlin.yaml ) para personalizar seu comportamento. Você pode gerar um arquivo de configuração padrão executando:
tlin -init Este comando criará um arquivo .tlin.yaml no diretório atual com o seguinte conteúdo:
# .tlin.yaml
name : tlin
rules :Você pode personalizar o arquivo de configuração para ativar ou desativar regras específicas de fiapos, definir limiares de complexidade ciclomática e muito mais.
# .tlin.yaml
name : tlin
rules :
useless-break :
severity : WARNING
deprecated-function :
severity : OFF Nosso linhador permite a adição de regras personalizadas além das regras padrão do Golangci-Lint. Para adicionar uma nova regra de fiapos, siga estas etapas:
️ Deve atualizar testes relevantes se você tiver adicionado uma nova regra ou formatamento.
Crie um documento RFC (solicitação de comentários) para sua regra de fiapo proposto:
Abra uma nova edição no repositório TLIN e anexe seu documento RFC.
Aguarde o feedback da comunidade e a aprovação do mantenedor. Esteja preparado para iterar na sua RFC com base no feedback.
Depois que o RFC for aprovado, prossiga com a implementação:
um. Implemente a interface LintRule para sua nova regra:
type NewRule struct {}
func ( r * NewRule ) Check ( filename string , node * ast. File ) ([]types. Issue , error ) {
// Implement your lint rule logic here
// return a slice of Issues and any error encountered
} b. Registre sua nova regra no registerAllRules e talvez o método registerDefaultRules da estrutura Engine em internal/engine.go :
func ( e * Engine ) registerDefaultRules () {
e . rules = append ( e . rules ,
& GolangciLintRule {},
// ...
& NewRule {}, // Add your new rule here
)
} func ( e * Engine ) registerAllRules () {
e . rules = append ( e . rules ,
& GolangciLintRule {},
// ...
& NewRule {}, // Add your new rule here
)
} (Opcional) Se sua regra exigir formatação especial, crie um novo formatador no pacote formatter :
um. Crie um novo arquivo (por exemplo, formatter/new_rule.go ).
b. Implemente a interface IssueFormatter para sua nova regra:
type NewRuleFormatter struct {}
func ( f * NewRuleFormatter ) Format (
issue types. Issue ,
snippet * internal. SourceCode ,
) string {
// Implement formatting logic for new rule here.
} c. Adicione o novo formatador à função GetFormatter no formatter/fmt.go .
func GetFormatter ( rule string ) IssueFormatter {
switch rule {
// ...
case "new_rule" : // Add your new rule here
return & NewRuleFormatter {}
default :
return & DefaultFormatter {}
}
}Adicione testes abrangentes para sua nova regra e formatamento.
Atualize a documentação para incluir informações sobre a nova regra.
Envie uma solicitação de tração com sua implementação, testes e atualizações de documentação.
Seguindo estas etapas, você pode propor, discutir e adicionar novas regras de Lint de maneira estruturada, garantindo que elas sejam adequadamente integradas ao projeto TLIN.
A TLIN suporta várias bandeiras para personalizar seu comportamento:
-timeout <duration> : Defina um tempo limite para o linter (padrão: 5m). Exemplo: -timeout 1m30s-cyclo : Execute a Análise da Complexidade Ciclomática-threshold <int> : Defina o limite de complexidade ciclomática (padrão: 10)-ignore <rules> : Lista de regras de fiapos separados por vírgula para ignorar-cfg : Run Control Flow Graph Análise-func <name> : Especifique o nome da função para análise CFG-fix : corrija automaticamente problemas-dry-run : Execute no modo seco (mostre correções sem aplicá-las)-confidence <float> : Defina o limite de confiança para fixação automática (0,0 a 1,0, padrão: 0,75)-o <path> : Escreva saída em um arquivo em vez de stdout-json-output : a saída resulta no formato JSON-init : Inicialize um novo arquivo de configuração TLL no diretório atual-c <path> : Especifique um arquivo de configuração personalizado Congratulamo -nos com todas as formas de contribuições, incluindo relatórios de bugs, solicitações de recursos e solicitações de puxar. Sinta -se à vontade para abrir um problema ou enviar uma solicitação de tração.
tlin ) sugestão Este projeto é distribuído sob a licença do MIT. Consulte LICENSE para obter mais informações.