Class: RuboCop::Cop::Sorbet::ForbidRBIOutsideOfAllowedPaths
- Inherits:
-
Cop
- Object
- Cop
- RuboCop::Cop::Sorbet::ForbidRBIOutsideOfAllowedPaths
- Includes:
- RangeHelp
- Defined in:
- lib/rubocop/cop/sorbet/rbi/forbid_rbi_outside_of_allowed_paths.rb
Overview
Makes sure that RBI files are always located under the defined allowed paths.
Options:
-
‘AllowedPaths`: A list of the paths where RBI files are allowed (default: [“rbi/**”, “sorbet/rbi/**”])
Instance Method Summary collapse
Instance Method Details
#investigate(processed_source) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rubocop/cop/sorbet/rbi/forbid_rbi_outside_of_allowed_paths.rb', line 26 def investigate(processed_source) paths = allowed_paths if paths.nil? add_offense( nil, location: source_range(processed_source.buffer, 1, 0), message: "AllowedPaths expects an array", ) return elsif paths.empty? add_offense( nil, location: source_range(processed_source.buffer, 1, 0), message: "AllowedPaths cannot be empty", ) return end # When executed the path to the source file is absolute. # We need to remove the exec path directory prefix before matching with the filename regular expressions. rel_path = processed_source.file_path.sub("#{Dir.pwd}/", "") add_offense( nil, location: source_range(processed_source.buffer, 1, 0), message: "RBI file path should match one of: #{paths.join(", ")}", ) if paths.none? { |pattern| File.fnmatch(pattern, rel_path) } end |