Вам даже не нужен такой инструмент, как Rubocop.Сам Ruby может проверять синтаксис без выполнения кода:
$ ruby --help
Usage: ruby [switches] [--] [programfile] [arguments]
[...]
-c check syntax only
[...]
Давайте проверим, обнаружит ли синтаксическую ошибку:
$ ruby -c -e "def; end"
-e:1: syntax error, unexpected ';'
Ruby сначала читает и анализирует исходный код и выполняет его вболее поздний шаг.Если первый шаг синтаксического анализа уже завершился неудачей, потому что код не имеет никакого смысла, выполнение в любом случае будет невозможно.Это не выполнение, которое находит синтаксические ошибки, это синтаксический анализ кода.
Но, конечно, есть ошибки, которых Ruby не находит, но другие языки программирования могут обнаружить их при компиляции кода.Например, TypeError
:
$ ruby -c -e "[1,2][:bar]"
Syntax OK
Синтаксис в порядке, но работает ли этот код на самом деле?
$ ruby -e "[1,2][:bar]"
Traceback (most recent call last):
-e:1:in `<main>': no implicit conversion of Symbol into Integer (TypeError)