Linter de avance para lenguas gramaticales goferas.
TLIN es un enlace diseñado para lenguajes de programación GO y GNO. Aprovecha la funcionalidad de Golangci-Lint como su motor de pelusa principal, proporcionando un potente análisis de código para lenguajes gramaticales goferantes.
Inspirado por Rust's Clippy, TLIN tiene como objetivo proporcionar sugerencias de mejora de código adicionales más allá de las reglas predeterminadas de Golangci-Lint.
Para instalar Tlin CLI, siga estos pasos:
git clone https://github.com/gnolang/tlin cd tlingo install ./cmd/tlin ¡eso es todo! Ahora puede usar el comando tlin en su terminal.
tlin < path > Reemplace <path> con la ruta de archivo o directorio que desea analizar.
Para verificar el directorio actual, ejecute:
tlin . TLIN admite un archivo de configuración ( .tlin.yaml ) para personalizar su comportamiento. Puede generar un archivo de configuración predeterminado ejecutando:
tlin -init Este comando creará un archivo .tlin.yaml en el directorio actual con el siguiente contenido:
# .tlin.yaml
name : tlin
rules :Puede personalizar el archivo de configuración para habilitar o deshabilitar reglas de pelusa específicas, establecer umbrales de complejidad ciclomática y más.
# .tlin.yaml
name : tlin
rules :
useless-break :
severity : WARNING
deprecated-function :
severity : OFF Nuestro enlace permite la adición de reglas de pelusa personalizadas más allá de las reglas predeterminadas de Golangci-Lint. Para agregar una nueva regla de pelusa, siga estos pasos:
️ Debe actualizar las pruebas relevantes si ha agregado una nueva regla o formateador.
Cree un documento RFC (solicitud de comentarios) para su regla de pelusa propuesta:
Abra un nuevo número en el repositorio de TLIN y adjunte su documento RFC.
Espere los comentarios de la comunidad y la aprobación del mantenedor. Prepárese para iterar en su RFC en función de los comentarios.
Una vez que se apruebe el RFC, continúe con la implementación:
a. Implemente la interfaz LintRule para su nueva regla:
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 su nueva regla en registerAllRules y tal vez el método de registerDefaultRules de la estructura Engine en 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) Si su regla requiere un formato especial, cree un nuevo formato en el paquete formatter :
a. Cree un nuevo archivo (por ejemplo, formatter/new_rule.go ).
b. Implementar la interfaz IssueFormatter para su nueva regla:
type NewRuleFormatter struct {}
func ( f * NewRuleFormatter ) Format (
issue types. Issue ,
snippet * internal. SourceCode ,
) string {
// Implement formatting logic for new rule here.
} do. Agregue el nuevo formateador a la función GetFormatter en formatter/fmt.go .
func GetFormatter ( rule string ) IssueFormatter {
switch rule {
// ...
case "new_rule" : // Add your new rule here
return & NewRuleFormatter {}
default :
return & DefaultFormatter {}
}
}Agregue pruebas completas para su nueva regla y formatero.
Actualice la documentación para incluir información sobre la nueva regla.
Envíe una solicitud de extracción con su implementación, pruebas y actualizaciones de documentación.
Siguiendo estos pasos, puede proponer, discutir y agregar nuevas reglas de pelusa de manera estructurada, asegurando que estén debidamente integrados en el proyecto TLIN.
Tlin admite varias banderas para personalizar su comportamiento:
-timeout <duration> : Establezca un tiempo de espera para el linter (predeterminado: 5m). Ejemplo: -timeout 1m30s-cyclo : Ejecutar análisis de complejidad ciclomática-threshold <int> : Establecer el umbral de complejidad ciclomática (predeterminado: 10)-ignore <rules> : lista de reglas de pelusa separadas por comas para ignorar-cfg : Ejecutar análisis de gráficos de flujo de control-func <name> : Especifique el nombre de la función para el análisis CFG-fix : solucionar automáticamente problemas-dry-run : ejecute en modo de manejo seco (muestre correcciones sin aplicarlas)-confidence <float> : Establezca un umbral de confianza para el ajuste automático (0.0 a 1.0, predeterminado: 0.75)-o <path> : escriba la salida a un archivo en lugar de stdout-json-output : la salida resulta en formato JSON-init : inicialice un nuevo archivo de configuración de TLIN en el directorio actual-c <path> : especifique un archivo de configuración personalizado Agradecemos todas las formas de contribuciones, incluidos informes de errores, solicitudes de funciones y solicitudes de extracción. No dude en abrir un problema o enviar una solicitud de extracción.
tlin ) Este proyecto se distribuye bajo la licencia MIT. Vea LICENSE para más información.