Linter lanjutan untuk bahasa tata bahasa seperti Go.
Tlin adalah linter yang dirancang untuk bahasa pemrograman Go dan GNO. Ini memanfaatkan fungsionalitas Golangci-Lint sebagai mesin sering utamanya, memberikan analisis kode yang kuat untuk bahasa tata bahasa seperti GO.
Terinspirasi oleh Rust's Clippy, Tlin bertujuan untuk memberikan saran peningkatan kode tambahan di luar aturan Golangci-Lint default.
Untuk menginstal tlin cli, ikuti langkah -langkah ini:
git clone https://github.com/gnolang/tlin cd tlingo install ./cmd/tlin Itu saja! Anda sekarang dapat menggunakan perintah tlin di terminal Anda.
tlin < path > Ganti <path> dengan file atau jalur direktori yang ingin Anda analisis.
Untuk memeriksa direktori saat ini, jalankan:
tlin . Tlin mendukung file konfigurasi ( .tlin.yaml ) untuk menyesuaikan perilakunya. Anda dapat menghasilkan file konfigurasi default dengan menjalankan:
tlin -init Perintah ini akan membuat file .tlin.yaml di direktori saat ini dengan konten berikut:
# .tlin.yaml
name : tlin
rules :Anda dapat menyesuaikan file konfigurasi untuk mengaktifkan atau menonaktifkan aturan lint spesifik, mengatur ambang kompleksitas siklomatik, dan banyak lagi.
# .tlin.yaml
name : tlin
rules :
useless-break :
severity : WARNING
deprecated-function :
severity : OFF Linter kami memungkinkan penambahan aturan serat khusus di luar aturan Golangci-Lint default. Untuk menambahkan aturan serat baru, ikuti langkah -langkah ini:
️ Harus memperbarui tes yang relevan jika Anda telah menambahkan aturan atau formatter baru.
Buat dokumen RFC (permintaan komentar) untuk aturan serat yang Anda usulkan:
Buka masalah baru di repositori TLIN dan lampirkan dokumen RFC Anda.
Tunggu umpan balik masyarakat dan persetujuan pemeliharaan. Bersiaplah untuk mengulangi RFC Anda berdasarkan umpan balik.
Setelah RFC disetujui, lanjutkan dengan implementasi:
A. Menerapkan antarmuka LintRule untuk aturan baru Anda:
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. Daftarkan aturan baru Anda di registerAllRules dan mungkin Metode registerDefaultRules dari struct Engine di 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
)
} (Opsional) Jika aturan Anda memerlukan pemformatan khusus, buat formatter baru dalam paket formatter :
A. Buat file baru (misalnya, formatter/new_rule.go ).
B. Menerapkan antarmuka IssueFormatter untuk aturan baru Anda:
type NewRuleFormatter struct {}
func ( f * NewRuleFormatter ) Format (
issue types. Issue ,
snippet * internal. SourceCode ,
) string {
// Implement formatting logic for new rule here.
} C. Tambahkan formatter baru ke fungsi GetFormatter di formatter/fmt.go .
func GetFormatter ( rule string ) IssueFormatter {
switch rule {
// ...
case "new_rule" : // Add your new rule here
return & NewRuleFormatter {}
default :
return & DefaultFormatter {}
}
}Tambahkan tes komprehensif untuk aturan dan formatter baru Anda.
Perbarui dokumentasi untuk memasukkan informasi tentang aturan baru.
Kirimkan permintaan tarik dengan implementasi, pengujian, dan pembaruan dokumentasi Anda.
Dengan mengikuti langkah -langkah ini, Anda dapat mengusulkan, mendiskusikan, dan menambahkan aturan serat baru secara terstruktur, memastikan mereka diintegrasikan dengan benar ke dalam proyek TLIN.
Tlin mendukung beberapa bendera untuk menyesuaikan perilakunya:
-timeout <duration> : Tetapkan batas waktu untuk linter (default: 5m). Contoh: -timeout 1m30s-cyclo : Jalankan analisis kompleksitas siklomatik-threshold <int> : Set Cyclomatic Complexity Threshold (default: 10)-ignore <rules> : Daftar aturan serat yang dipisahkan koma untuk diabaikan-cfg : Jalankan analisis grafik aliran kontrol-func <name> : Tentukan nama fungsi untuk analisis CFG-fix : Secara otomatis memperbaiki masalah-dry-run : Jalankan dalam mode kering (tunjukkan perbaikan tanpa menerapkannya)-confidence <float> : Tetapkan ambang kepercayaan untuk pengikat otomatis (0,0 hingga 1,0, default: 0,75)-o <path> : Tulis output ke file alih -alih stdout-json-output : hasil output dalam format JSON-init : Inisialisasi file konfigurasi TLIN baru di direktori saat ini-c <path> : Tentukan file konfigurasi khusus Kami menyambut semua bentuk kontribusi, termasuk laporan bug, permintaan fitur, dan permintaan tarik. Silakan membuka masalah atau mengirimkan permintaan tarik.
tlin ) Proyek ini didistribusikan di bawah lisensi MIT. Lihat LICENSE untuk informasi lebih lanjut.