TextMate için Ruff-Linter Eklentisi
Rust ile yazılmış Python linter
Yıl 2023, ben halen tek dişi kalmış canavar olan TextMate2’i kullanmaya devam ediyorum. Yetmezmiş gibi küçük-tefek eklentiler yazıp kendimce ölüyü diri tutmaya gayret ediyorum.
Geçtiğimiz günlerde YouTube’da Charlie Marsh’ı izledim. Kendisi
Python için rust
ile geliştirdiği (evet, python değil, başka bir dil)
ruff
adlı linter’ı anlatıyordu. Modern IDE’lerin neredeyse tümü bu eklentiyi
sunuyordu.
Bu eklenti, hızlıca python kodunuzu ya da projenizi tarayıp hataları
gösteriyordu. Sadece göstermekle kalmıyor, bazılarını da otomatik olarak
düzeltebiliyordu. İşin güzel yanı, pek çok bilinen aracın (flake8
,
pydocstyle
, isort
ve çok dahası) sağladığı özellikleri bire-bir sağlıyor
ve ek olarak da sizi ilave paket kurulumu/ayarlamalarından kurtarıyordu.
Esas güzel kısmı ise çok hızlı çalışması. Hızdan sonra en çok beğendiğim
özelliği ise, size hatayı nasıl çözebileceğinizi anlatan döküman üretme
seçeneği. Örneğin; hata kodu ANN001
, acaba nasıl çözülür? hemen detaya
girebilirsiniz;
$ ruff rule ANN001
çıktısı markdown
formatında geliyor:
# missing-type-function-argument (ANN001)
Derived from the **flake8-annotations** linter.
## What it does
Checks that function arguments have type annotations.
## Why is this bad?
Type annotations are a good way to document the types of function arguments. They also
help catch bugs, when used alongside a type checker, by ensuring that the types of
any provided arguments match expectation.
## Example
```python
def foo(x):
...
```
Use instead:
```python
def foo(x: int):
...
```
Ben de bunları görüp gaza geldim :) Zaten uzunca zamandır kendi yazdığım başka bir Python eklentisini kullanıyordum. Hemen kollayı sıvadım ve giriştim hızla! Python scope’unda kod yazarken save yapınca linter devreye giriyor.
TextMate2’den ekran görüntüsü
Pylint kadar süper olmasa da hız bakımından tercih sebebidir. Proje
büyüdükçe, pylint
’in çalışıp sonuç dönmesi çok uzun sürebiliyor. Bazen
5-10sn’lere çıktığımı biliyorum. Uzun zamandır python’la uğraşmayan biri
olarak beni bile gaza getirdi ruff
…
Merak edenler ya da katkı yapmak isteyenler; https://github.com/vigo/textmate2-ruff-linter adresinden eklentiye ulaşabilir.