Class: Quality::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/quality/rake/config.rb

Overview

Configuration for running quality tool

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(quality_name: 'quality', ratchet_name: 'ratchet', globber: fail) ⇒ Config

Returns a new instance of Config.



113
114
115
116
117
118
119
120
121
122
# File 'lib/quality/rake/config.rb', line 113

def initialize(quality_name: 'quality',
               ratchet_name: 'ratchet',
               globber: fail)
  @quality_name = quality_name
  @ratchet_name = ratchet_name
  @skip_tools = []
  @output_dir = 'metrics'
  @verbose = false
  @globber = globber
end

Instance Attribute Details

#extra_filesObject

Pick any extra files that are source files, but may not have extensions–defaults to %w(Rakefile Dockerfile)



41
42
43
# File 'lib/quality/rake/config.rb', line 41

def extra_files
  @extra_files
end

#extra_ruby_filesObject

Pick any extra files that are Ruby source files, but may not have extensions–defaults to %w(Rakefile)



45
46
47
# File 'lib/quality/rake/config.rb', line 45

def extra_ruby_files
  @extra_ruby_files
end

#output_dirObject

Relative path to output directory where *_high_water_mark files will be read/written

Defaults to .



64
65
66
# File 'lib/quality/rake/config.rb', line 64

def output_dir
  @output_dir
end

#punchlist_regexpObject

Pipe-separated regexp string describing what to look for in files as ‘todo’-like ‘punchlist’ comments.

Defaults to ‘XXX|TODO’



58
59
60
# File 'lib/quality/rake/config.rb', line 58

def punchlist_regexp
  @punchlist_regexp
end

#quality_nameObject

Name of quality task. Defaults to :quality.



11
12
13
# File 'lib/quality/rake/config.rb', line 11

def quality_name
  @quality_name
end

#ratchet_nameObject

Name of ratchet task. Defaults to :ratchet.



15
16
17
# File 'lib/quality/rake/config.rb', line 15

def ratchet_name
  @ratchet_name
end

#ruby_dirsObject



66
67
68
# File 'lib/quality/rake/config.rb', line 66

def ruby_dirs
  @ruby_dirs ||= %w(src app lib test spec feature)
end

#ruby_file_extensionsObject

Extensions for Ruby language files–defaults to ‘rb,rake’



48
49
50
# File 'lib/quality/rake/config.rb', line 48

def ruby_file_extensions
  @ruby_file_extensions
end

#skip_toolsObject

Array of strings describing tools to be skipped–e.g., [“cane”]

Defaults to []



20
21
22
# File 'lib/quality/rake/config.rb', line 20

def skip_tools
  @skip_tools
end

#source_dirsObject



70
71
72
# File 'lib/quality/rake/config.rb', line 70

def source_dirs
  @source_dirs ||= ruby_dirs.clone
end

#source_file_extensionsObject

Extensions for all source files–defaults to ‘rb,rake,swift,cpp,c,java,py,clj,cljs,scala,js,yml,sh,json’



52
53
54
# File 'lib/quality/rake/config.rb', line 52

def source_file_extensions
  @source_file_extensions
end

#verboseObject

Log command executation

Defaults to false



25
26
27
# File 'lib/quality/rake/config.rb', line 25

def verbose
  @verbose
end

Instance Method Details

#ruby_filesObject

XXX: Rakefile is hard-coded here–should use config instead



108
109
110
111
# File 'lib/quality/rake/config.rb', line 108

def ruby_files
  @globber.glob("{*.{#{ruby_file_extensions}},Rakefile}")
    .concat(@globber.glob(ruby_files_glob)).join(' ')
end

#ruby_files_globObject



103
104
105
# File 'lib/quality/rake/config.rb', line 103

def ruby_files_glob
  source_files_glob(extra_ruby_files, ruby_dirs, ruby_file_extensions)
end

#source_files_glob(extra_source_files = extra_files, dirs = source_dirs, extensions = source_file_extensions) ⇒ Object



88
89
90
91
92
93
94
95
96
97
# File 'lib/quality/rake/config.rb', line 88

def source_files_glob(extra_source_files = extra_files,
                      dirs = source_dirs,
                      extensions = source_file_extensions)
  "{#{extra_source_files.join(',')}," +
    "*.{#{extensions}}," +
    File.join("{#{dirs.join(',')}}",
              '**',
              "*.{#{extensions}}") +
    '}'
end