quality_report 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a14f06872f83645bba1702173f3f9ee1942c54ae51ca3031db00158c63b51217
4
- data.tar.gz: 614f5743e39d968b4a431206f5f886a40a258a849e2a89543687ce00b2a8015f
3
+ metadata.gz: 1aafbd19100b614829f3aa4a2d7043b7b7028da09443bb536e37ee809809b6c0
4
+ data.tar.gz: cf7797690c19a1dc7c1f89737d828a4270bee1b9c36c3183ea642109998fdb45
5
5
  SHA512:
6
- metadata.gz: 5af1a4cfcef6c1831c40a5a6a111d684091ad282109015a9438ec9ab692349a7284b73a9e0b06d3ce51c29536f6167e4b3429386841a2fe622f9846ddd99c5a3
7
- data.tar.gz: a059cce459f23251d0d7c72cd0b29d4f3f3824fb2bf65a8e2d9fb0af78299a4dec89af4986071534ce690e0e7838aa00289c0171db94da8beddfbc1830197bbe
6
+ metadata.gz: e5b3663e60903633291665affbc5347c604fb60037adf8ac7661ddd82929009ad36335ad5e754d09f58b88f916df74d899ef7c75472fdbeb505ac3e2c06796a5
7
+ data.tar.gz: 9076995297047c26ede10b5c0c892a07eeb0b178e562da85aaf0a61a0a4e8bf173cfdecc62f86045d465d6c58a0d731923c871da28daa19604c2ea3c8e8038c8
@@ -21,10 +21,12 @@ RUBOCOP_WARNINGS = `rubocop --format json --force-default-config --only Metrics/
21
21
 
22
22
  LOCATIONS =
23
23
  JSON
24
- .parse(RUBOCOP_WARNINGS)['files']
25
- .reject{ |f| f['offenses'].empty? }
26
- .map{ |f| f['offenses']
27
- .map{|o| { path: f['path'], begin: o['location']['start_line'], end: o['location']['last_line'] }}}
24
+ .parse(RUBOCOP_WARNINGS)['files']
25
+ .reject { |f| f['offenses'].empty? }
26
+ .map do |f|
27
+ f['offenses']
28
+ .map { |o| { path: f['path'], begin: o['location']['start_line'], end: o['location']['last_line'] } }
29
+ end
28
30
  .flatten
29
31
 
30
32
  LOCATIONS.each do |location|
@@ -15,7 +15,7 @@
15
15
  # Bob
16
16
  # Alice
17
17
 
18
- RUBY_FILES = `find . -name '*.rb'`
18
+ RUBY_FILES = `find . -name '*.rb'`.freeze
19
19
 
20
20
  RUBY_FILES
21
- .each_line{ |filename| puts `line-authors #{filename}` }
21
+ .each_line { |filename| puts `line-authors #{filename}` }
@@ -31,7 +31,7 @@ def make_data_set(two_column_data)
31
31
  hash = {}
32
32
  two_column_data.each_line do |line|
33
33
  count, label = line.split(' ')
34
- hash[label] = count.to_i
34
+ hash[label] = count.to_i
35
35
  end
36
36
  hash
37
37
  end
@@ -62,9 +62,27 @@ def generate_data(combined_stats)
62
62
  end
63
63
 
64
64
  def should_skip?(stats)
65
+ less_than_200_lines_total?(stats) || no_commits_in_last_60_days?(stats)
66
+ end
67
+
68
+ def less_than_200_lines_total?(stats)
65
69
  stats[:whole_count] < 200
66
70
  end
67
71
 
72
+ def no_commits_in_last_60_days?(stats)
73
+ author = stats[:label]
74
+
75
+ # Get the last commit timestamp in Unix epoch format
76
+ last_commit = `git log -1 --format="%at" --author="#{author}"`.chomp
77
+ return true if last_commit.empty? # Handle case where author has no commits
78
+
79
+ # Convert Unix timestamp to Time object
80
+ last_commit_time = Time.at(last_commit.to_i)
81
+ sixty_days_ago = Time.now - (60 * 24 * 60 * 60) # 60 days in seconds
82
+
83
+ last_commit_time < sixty_days_ago
84
+ end
85
+
68
86
  def float_to_percent(a_float)
69
87
  (Float(a_float) * 100).round(1)
70
88
  end
@@ -72,8 +90,8 @@ end
72
90
  #
73
91
  # Execution begins here
74
92
  #
75
- PART_STATS = `ruby-author-warnings | frequency-list`
76
- WHOLE_STATS = `ruby-line-authors | frequency-list`
93
+ PART_STATS = `ruby-author-warnings | frequency-list`.freeze
94
+ WHOLE_STATS = `ruby-line-authors | frequency-list`.freeze
77
95
  COMBINED_STATS = create_combined_stats(PART_STATS, WHOLE_STATS)
78
96
 
79
97
  puts generate_table(COMBINED_STATS)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module QualityReport
4
- VERSION = '1.1.0'
4
+ VERSION = '1.2.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quality_report
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robb Shecter