Vorabstieg für GO-ähnliche Grammatiksprachen.
Tlin ist ein Linter, der sowohl für Go- als auch für GNO -Programmiersprachen entwickelt wurde. Es nutzt die Funktionalität der Golangci-Lint als Hauptleistungsiegin und bietet eine leistungsstarke Codeanalyse für GO-ähnliche Grammatiksprachen.
Inspiriert von Rusts Clippy, zielt Tlin darauf ab, zusätzliche Vorschläge zur Codeverbesserung zu erstellen, die über die Standardregeln der Golangci-Linke hinausgehen.
Um Tlin CLI zu installieren, befolgen Sie die folgenden Schritte:
git clone https://github.com/gnolang/tlin cd tlingo install ./cmd/tlin Das war's! Sie können jetzt den Befehl tlin in Ihrem Terminal verwenden.
tlin < path > Ersetzen Sie <path> durch die Datei- oder Verzeichnispfad, die Sie analysieren möchten.
Um das aktuelle Verzeichnis zu überprüfen, rennen Sie:
tlin . Tlin unterstützt eine Konfigurationsdatei ( .tlin.yaml ), um ihr Verhalten anzupassen. Sie können eine Standardkonfigurationsdatei generieren, indem Sie ausführen:
tlin -init Dieser Befehl erstellt im aktuellen Verzeichnis eine .tlin.yaml -Datei mit dem folgenden Inhalt:
# .tlin.yaml
name : tlin
rules :Sie können die Konfigurationsdatei so anpassen, dass bestimmte FININT -Regeln aktiviert oder deaktiviert werden, zyklomatische Komplexitätsschwellen und mehr festlegen.
# .tlin.yaml
name : tlin
rules :
useless-break :
severity : WARNING
deprecated-function :
severity : OFF Unser Linter ermöglicht die Hinzufügung von benutzerdefinierten FINT-Regeln über die Standardregeln für Golangci-Linke hinaus. Um eine neue Lint -Regel hinzuzufügen, befolgen Sie die folgenden Schritte:
Euen Muss relevante Tests aktualisieren, wenn Sie eine neue Regel oder eine neue Formatierung hinzugefügt haben.
Erstellen Sie ein RFC -Dokument (Anfrage für Kommentare) für Ihre vorgeschlagene Lint -Regel:
Öffnen Sie ein neues Problem im Tlin -Repository und fügen Sie Ihr RFC -Dokument hinzu.
Warten Sie auf das Feedback der Community und die Genehmigung des Betreuers. Seien Sie auf der Grundlage des Feedbacks bereit, Ihr RFC zu iterieren.
Sobald die RFC genehmigt wurde, fahren Sie mit der Implementierung fort:
A. Implementieren Sie die LintRule -Schnittstelle für Ihre neue Regel:
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. Registrieren Sie Ihre neue Regel in den registerAllRules und können Sie die Methode für die Engine in internal/engine.go registerDefaultRules .
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
)
} (Optional) Wenn Ihre Regel eine spezielle Formatierung erfordert, erstellen Sie im formatter ein neues Formatierer:
A. Erstellen Sie eine neue Datei (z. B. formatter/new_rule.go ).
B. Implementieren Sie die IssueFormatter -Schnittstelle für Ihre neue Regel:
type NewRuleFormatter struct {}
func ( f * NewRuleFormatter ) Format (
issue types. Issue ,
snippet * internal. SourceCode ,
) string {
// Implement formatting logic for new rule here.
} C. Fügen Sie die neue Formatatter in die GetFormatter -Funktion in formatter/fmt.go hinzu.
func GetFormatter ( rule string ) IssueFormatter {
switch rule {
// ...
case "new_rule" : // Add your new rule here
return & NewRuleFormatter {}
default :
return & DefaultFormatter {}
}
}Fügen Sie umfassende Tests für Ihre neue Regel und Ihr Formatierer hinzu.
Aktualisieren Sie die Dokumentation, um Informationen zur neuen Regel zu enthalten.
Senden Sie eine Pull -Anfrage mit Ihren Implementierung, Tests und Dokumentationsaktualisierungen.
Wenn Sie diese Schritte befolgen, können Sie auf strukturierte Weise neue FINT -Regeln vorschlagen, diskutieren und hinzufügen, um sicherzustellen, dass sie ordnungsgemäß in das Tlin -Projekt integriert sind.
Tlin unterstützt mehrere Flags, um sein Verhalten anzupassen:
-timeout <duration> : Stellen Sie eine Zeitüberschreitung für den Linter fest (Standard: 5m). Beispiel: -timeout 1m30s-cyclo : Analyse der zyklomatischen Komplexität ausführen-threshold <int> : Setzen Sie den zyklomatischen Komplexitätsschwellenwert (Standard: 10)-ignore <rules> : Komma getrennte Liste der FINT-Regeln, die ignoriert werden sollen-cfg : Analyse der Steuerungsdurchflussgrafik ausführen-func <name> : Funkename für die CFG -Analyse angeben-fix : Probleme automatisch beheben-dry-run : Laufen im Trockenrun-Modus (Fixes anzeigen, ohne sie anzuwenden)-confidence <float> : Stellen Sie den Vertrauensschwellenwert für die automatische Fixierung fest (0,0 bis 1,0, Standard: 0,75)-o <path> : Schreiben Sie die Ausgabe in eine Datei anstelle von STDOut-json-output : Ausgabeergebnisse im JSON-Format-init : Initialisieren Sie eine neue Tlin -Konfigurationsdatei im aktuellen Verzeichnis-c <path> : Geben Sie eine benutzerdefinierte Konfigurationsdatei an Wir begrüßen alle Formen von Beiträgen, einschließlich Fehlerberichten, Feature -Anfragen und Anfragen. Bitte eröffnen Sie ein Problem oder senden Sie eine Pull -Anfrage.
tlin ) Vorschlag Dieses Projekt wird unter der MIT -Lizenz verteilt. Weitere Informationen finden Sie LICENSE .