Advance Linter pour les langues grammaticales de type Go.
Tlin est un linter conçu pour les langages de programmation Go et GNO. Il tire parti des fonctionnalités de Golangci-lint comme moteur de liaison principale, fournissant une analyse de code puissante pour les langages de grammaire de type Go.
Inspiré par Clippy de Rust, TLIN vise à fournir des suggestions d'amélioration de code supplémentaires au-delà des règles par défaut de Golangci-lint.
Pour installer TLIN CLI, suivez ces étapes:
git clone https://github.com/gnolang/tlin cd tlingo install ./cmd/tlin c'est ça! Vous pouvez maintenant utiliser la commande tlin dans votre terminal.
tlin < path > Remplacez <path> par le fichier ou le chemin du répertoire que vous souhaitez analyser.
Pour vérifier le répertoire actuel, exécutez:
tlin . TLIN prend en charge un fichier de configuration ( .tlin.yaml ) pour personnaliser son comportement. Vous pouvez générer un fichier de configuration par défaut en exécutant:
tlin -init Cette commande créera un fichier .tlin.yaml dans le répertoire actuel avec le contenu suivant:
# .tlin.yaml
name : tlin
rules :Vous pouvez personnaliser le fichier de configuration pour activer ou désactiver des règles de charpie spécifiques, définir des seuils de complexité cyclomatique, etc.
# .tlin.yaml
name : tlin
rules :
useless-break :
severity : WARNING
deprecated-function :
severity : OFF Notre Linter permet l'ajout de règles de lunt personnalisées au-delà des règles de golangci-lint par défaut. Pour ajouter une nouvelle règle de peluche, suivez ces étapes:
️ Doit mettre à jour les tests pertinents si vous avez ajouté une nouvelle règle ou un nouveau format.
Créez un document RFC (demande de commentaires) pour votre règle de charpie proposée:
Ouvrez un nouveau problème dans le référentiel TLIN et joignez votre document RFC.
Attendez les commentaires de la communauté et l'approbation du responsable. Soyez prêt à itérer sur votre RFC en fonction des commentaires.
Une fois le RFC approuvé, procédez à la mise en œuvre:
un. Implémentez l'interface LintRule pour votre nouvelle règle:
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
} né Enregistrez votre nouvelle règle dans les registerAllRules et peut-être registerDefaultRules la méthode de la mise en scène de la structure 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
)
} (Facultatif) Si votre règle nécessite un formatage spécial, créez un nouveau formateur dans le package formatter :
un. Créez un nouveau fichier (par exemple, formatter/new_rule.go ).
né Implémentez l'interface IssueFormatter pour votre nouvelle règle:
type NewRuleFormatter struct {}
func ( f * NewRuleFormatter ) Format (
issue types. Issue ,
snippet * internal. SourceCode ,
) string {
// Implement formatting logic for new rule here.
} c. Ajoutez le nouveau format à la fonction GetFormatter dans formatter/fmt.go
func GetFormatter ( rule string ) IssueFormatter {
switch rule {
// ...
case "new_rule" : // Add your new rule here
return & NewRuleFormatter {}
default :
return & DefaultFormatter {}
}
}Ajoutez des tests complets pour votre nouvelle règle et votre nouveau formateur.
Mettez à jour la documentation pour inclure des informations sur la nouvelle règle.
Soumettez une demande de traction avec vos mises à jour de mise en œuvre, de tests et de documentation.
En suivant ces étapes, vous pouvez proposer, discuter et ajouter de nouvelles règles de charpie de manière structurée, en vous assurant qu'ils sont correctement intégrés dans le projet TLIN.
Tlin prend en charge plusieurs drapeaux pour personnaliser son comportement:
-timeout <duration> : définissez un délai d'expiration pour le linter (par défaut: 5m). Exemple: -timeout 1m30s-cyclo : Exécutez l'analyse de la complexité cyclomatique-threshold <int> : Définissez le seuil de complexité cyclomatique (par défaut: 10)-ignore <rules> : Liste des règles de charpie séparées par des virgules à ignorer-cfg : Exécutez l'analyse du graphique de flux de contrôle-func <name> : Spécifiez le nom de la fonction pour l'analyse CFG-fix : résoudre automatiquement les problèmes-dry-run : Exécutez en mode sèche (affichez des correctifs sans les appliquer)-confidence <float> : définissez le seuil de confiance pour la fixation automatique (0,0 à 1,0, par défaut: 0,75)-o <path> : Écrivez la sortie dans un fichier au lieu de stdout-json-output : la sortie entraîne le format JSON-init : initialisez un nouveau fichier de configuration Tlin dans le répertoire actuel-c <path> : Spécifiez un fichier de configuration personnalisé Nous accueillons toutes les formes de contributions, y compris les rapports de bogues, les demandes de fonctionnalités et les demandes de traction. N'hésitez pas à ouvrir un problème ou à soumettre une demande de traction.
tlin ) Suggestion Ce projet est distribué sous la licence du MIT. Voir LICENSE pour plus d'informations.