OKUMA SÜRESİ 01:35

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.

Ruff-Linter çalışırken

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.