Module: ChurnVsComplexity::Complexity::ESLintCalculator

Defined in:
lib/churn_vs_complexity/complexity/eslint_calculator.rb

Class Method Summary collapse

Class Method Details

.calculate(files:) ⇒ Object

Raises:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/churn_vs_complexity/complexity/eslint_calculator.rb', line 9

def calculate(files:)
  dir_path = File.join(gem_root, 'tmp', 'eslint-support')
  script_path = File.join(dir_path, 'complexity-calculator.js')
  install_command = "npm install --prefix '#{dir_path}'"
  `#{install_command}`

  command = "node #{script_path} '#{files.to_json}'"
  complexity = `#{command}`

  raise Error, 'Failed to calculate complexity' if complexity.empty?

  all = JSON.parse(complexity)
  all.to_h do |abc|
    [abc['file'], abc['complexity']]
  end
end

.check_dependencies!Object



26
27
28
29
30
# File 'lib/churn_vs_complexity/complexity/eslint_calculator.rb', line 26

def check_dependencies!
  `npm --version`
rescue Errno::ENOENT
  raise Error, 'Needs node and npm installed'
end

.folder_based?Boolean

Returns:

  • (Boolean)


7
# File 'lib/churn_vs_complexity/complexity/eslint_calculator.rb', line 7

def folder_based? = false