reek follows standard Unix convention for passing arguments.
Probably the most standard use case would be to check all ruby files in the lib directory:
In general, if any command-line argument is a directory, Reek searches that directory and all sub-directories for Ruby source files. Thus
would be equivalent to
Occasionally you may want to quickly check a code snippet without going to the trouble of creating a file to hold it. You can pass the snippet directly to Reek's standard input:
echo "def x() true end" | reek
By passing in a "-n" flag to the reek command, the output will suppress the line numbers:
$ reek -n mess.rb
mess.rb -- 2 warnings: x doesn't depend on instance state (UtilityFunction) x has the name 'x' (UncommunicativeMethodName)
Otherwise line numbers will be shown as default at the beginning of each warning in square brackets:
$ reek mess.rb
mess.rb -- 2 warnings: :x doesn't depend on instance state (UtilityFunction) :x has the name 'x' (UncommunicativeMethodName)
reek has a ultra-verbose mode which you might find helpful as a beginner. "ultra-verbose" just means that behind each warning a helpful link will be displayed which leads directly to the corresponding reek wiki page. This mode can be enabled via the "-U" or "--ultra-verbose" flag.
So for instance, if your test file would smell of ClassVariable, this is what the reek output would look like:
reek -U test.rb
test.rb -- 1 warning: :Dummy declares the class variable @@class_variable (ClassVariable) [https://github.com/troessner/reek/wiki/Class-Variable]
Note the link at the end.