linter: discourage FileUtils::rm_rf, fixes SD-876

test plan:
* see test commit

Change-Id: I49f9a5bec1d8e6e3d44268ad1da20d314978a42b
Reviewed-on: https://gerrit.instructure.com/74147
Tested-by: Jenkins
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
This commit is contained in:
Landon Wilkins 2016-03-09 13:13:15 -07:00
parent 1e824bec77
commit 58912ddfb8
2 changed files with 20 additions and 0 deletions

View File

@ -20,6 +20,7 @@ require 'rubocop_canvas/cops/lint/specs_ensure_spec_extension'
require 'rubocop_canvas/cops/lint/specs_execute_script'
require 'rubocop_canvas/cops/lint/specs_f_over_fj'
require 'rubocop_canvas/cops/lint/specs_helper_modules'
require 'rubocop_canvas/cops/lint/specs_rm_rf'
require 'rubocop_canvas/cops/migration/concurrent_index'
require 'rubocop_canvas/cops/migration/primary_key'
require 'rubocop_canvas/cops/migration/remove_column'

View File

@ -0,0 +1,19 @@
module RuboCop
module Cop
module Lint
class SpecsExecuteScript < Cop
MSG = "In order to enable spec parallelization, avoid FileUtils.rm_rf and making persistent files/directories. Instead use Dir.mktmpdir. See https://gerrit.instructure.com/#/c/73834 for the pattern you should follow."
METHOD = :rm_rf
RECEIVER = :FileUtils
def on_send(node)
receiver, method_name, *args = *node
return unless method_name == METHOD
return unless receiver.children[1] == RECEIVER
add_offense node, :expression, MSG
end
end
end
end
end