cześć
w dzisiejszym odcinku chciałbym pokazać wam jak sprawdzać składnie naszego kodu.
w językach które się kompilują sprawdzanie kodu jest czymś normalnym, jeżeli mieliście do czynienia z javascriptem lub typescriptem to tam linter jest domyślnie dostępnym narzędziem. W językach dynamicznych jak ruby czy wspomniany przed chwilą javascript trzeba się posiłkować dodatkowymi narzędziami. Najpopularniejszym z nich jest RuboCop. Nie sprawdza on wprawdzie czy nasz kod ma sens. Ale sprawdza składnie naszego kodu. Warunki jakie musimy spełnić są rozwijane przez społeczność. Więc w większości przypadków możemy śmiało im zaufać. Dodatkowo RuboCop może za nas poprawić bardzo dużo problemów. Jeżeli jeszcze nie używacie RuboCopa w swoich projektach. Jego dodanie powinno być pozycją obowiązkową!
Instalacja
tak jak każdy gem wystarczy odpalić gem install rubocop ale prawda jest taka, że bardzo rzadko w ten sposób używamy gemów
najczęściej chcemy je dodać bezpośrednio do naszego projektu
gem 'rubocop', '~> 1.9', require: false
require
jako parametr sprawia, że pomimo iż gem się zainstlował to nie jest ładowany razem z pozostałymi gemami (szczególnie przydatne w przypadku railsów)
Sprawdzanie składni
rubocop /path/to/your/file
np rubocop /app/controller/costam p
wyświetli nam wszystkie błędy jakie popełniliśmy (albo ktoś przed nami popełnił)
teraz możemy je wszystkie poprawić
albo na końcu komendy dodać -A
wtedy z automatu poprawi nam błędy. Ale na razie nie będę tego używać bo chce wam pokazać inne rozwiązania.
Ale to nie jedyny sposób na sprawdzanie naszej składni
jeżeli używacie Visual studio code możecie zainstalować wtyczkę do rubocopa
https://marketplace.visualstudio.com/items?itemName=misogi.ruby-rubocop
wtedy składnia będzie sprawdzana bezpośrednio w waszym edytorze. Podobne wtyczki istnieją też dla innych, popularnych edytorów
Dostosowywanie do naszych potrzeb
Jak już wspomniałem zasady sprawdzania składni są ustanowione przez społeczność więc nie trzeba nic ustawiać by to działało. Ale niektóre rzeczy chcielibyśmy zmienić
w przykładowym pliku wyświetla, że mamy za długą linie, 80 znaków. To był dobry warunek jak monitory miały po 15" w proporcjach 4:3, ale dzisiaj gdy wszyscy mamy panoramiczne ekrany nie ma to sensu. Możemy to zmienic na 100 a nawet 120
w tym przypadku w pliku .rubocop.yml
musimy dodać
Metrics/LineLength:
Max: 100
chcemy by metody miały więcej znaków, nie ma problemu
Metrics/MethodLength:
Max: 15
możemy też dodać by wykluczyło jakiś plik lub pliki z tej zasady
Metrics/MethodLength:
Max: 15
Exclude:
- 'app/foo/*.rb'
wtedy wszystkie pliki rb z katalogu app/foo
nie będą sprawdzane przez rubocopa
możemy też wewnątrz jakiegoś pliku wyłączyć sprawdzanie
# rubocop:disable Metrics/ClassLength
ale trzeba pamiętać by włączyć to ponownie
# rubocop:enable Metrics/ClassLength
oczywiście nie sugeruje, że macie zmieniać cokolwiek na to co pokazałem. To tylko przykłady jak działa rubocop.
Moja rada jest taka, by podążać za narzuconymi zasadami i rozważnie podchodzić do zmian.
Dzięki rubocopowi wasz kod będzie czytelniejszy. Wam będzie się z nim lepiej pracowało. Przywyczaicie się do dobrych praktyk. A i praca w grupie będzie przyjemniejsza
Na dzisiaj to tyle
Dziękuje za oglądanie
Miłego kodowania