github_repo_statistics 2.2.28 → 2.3.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: b5ac1d146486a2054b687baa929f806e6ba28538ed754d519863225a333e25bb
4
- data.tar.gz: 341a0815ee930eacc8a8907491fe0b97d85926e2253d911c2ea934c1f8aaad21
3
+ metadata.gz: 2992ae14c4b2bab0ffc8cdee2c5c2e33a0b7dcc08f2fdb62b194975e944dd625
4
+ data.tar.gz: 43837ce970edb37d1f52fc88a97a4799d7cf72d33057788d06e71bee9e90e4e7
5
5
  SHA512:
6
- metadata.gz: ce70326d2860322b6cef2f0732c9decb713478f68b8d6277ac6f302db49e4ff491d159aebc3caeabe7918b9fd4d69ff3448b1b5ff9dca89782a3a2715ff0a82c
7
- data.tar.gz: 9a199a3ea3b90f8a75880b0f71d9ca6e9a27df8d759734cf75751d83d30301047550545caf49877c7c7c59f8fc2dbd1bb6608ab0db5a7a46522701ebfbd4a988
6
+ metadata.gz: f1566d02371061b2a29bd5177438c5fc399c0e554144f110940b686b865c6f7959ca7f7bd54db700ae4745725d430457ec7508c8eb5be0ebf3cbd682c5efca3d
7
+ data.tar.gz: f13509d5a8de4daa42c02a5194b3814a75d2110b15ab63b0cfb503ac6d2a76aa75d9d1a496b613b723e6f3596ea0d113ba59577f738ae501a1b2d762161a03dd
@@ -181,6 +181,10 @@ class GithubRepoStatistics
181
181
  `git log origin/master --pretty=format:"%s" --since="#{start_date}" --until="#{end_date}" -- "#{file}"`
182
182
  end
183
183
 
184
+ def new_changes?(file:)
185
+ git_commit_info(file:, start_date: DateTime.now - 1, end_date: DateTime.now) == "" ? false : true
186
+ end
187
+
184
188
  def analyze_changed_files(uniq_code_files_with_changes:, start_date:, end_date:)
185
189
  all_teams = []
186
190
  cross_teams_count = 0
@@ -192,6 +196,13 @@ class GithubRepoStatistics
192
196
  filename = File.basename(file)
193
197
  commit_count = git_commit_count(file:, start_date:, end_date:).to_i
194
198
  git_log = git_commit_info(file:, start_date:, end_date:).split("\n")
199
+ prs = git_log.map do |pr|
200
+ match = pr.match(/#(\d+)/)
201
+ if match
202
+ match[0]
203
+ end
204
+ end.uniq
205
+
195
206
  teams = git_log.map do |team|
196
207
  team.match(/#{TEAM_REGEX}/)[0].upcase
197
208
  end.reject { |e| EXCLUSIONS&.include?(e) }
@@ -202,7 +213,7 @@ class GithubRepoStatistics
202
213
 
203
214
  if teams.count > 1
204
215
  files_changed_by_many_teams += 1
205
- file_team_map.merge!(file.to_s => [teams, commit_count])
216
+ file_team_map.merge!(file.to_s => [teams, prs, commit_count])
206
217
  cross_teams_count += teams.count
207
218
  else
208
219
  single_ownership_teams_count += 1
@@ -238,7 +249,7 @@ class GithubRepoStatistics
238
249
  occurrences = all_teams.flatten.compact.tally
239
250
  sorted_occurrences = occurrences.sort_by { |element, count| [-count, element] }
240
251
  contributors = Hash[sorted_occurrences]
241
- churn_count = file_team_map.values.map { |value| value[1] }.sum
252
+ churn_count = file_team_map.values.map { |value| value.last }.sum
242
253
  hotspot_changes_percentage = ((churn_count.to_f / total_changes) * 100).round(2)
243
254
  # Filter files based on extension, existence and size
244
255
  filtered_files = filter_files(file_team_map:)
@@ -322,15 +333,17 @@ class GithubRepoStatistics
322
333
  lines_of_code = count_lines_of_code(file)
323
334
  commits = line.last.last
324
335
  owner = find_owner(file:)
336
+ prs = line.last[1]
337
+ new_change = new_changes?(file:)
325
338
 
326
- hotspot_output << [file.gsub(@directory_path, ''), contributors, lines_of_code, commits, owner]
339
+ hotspot_output << [file.gsub(@directory_path, ''), new_change, contributors, lines_of_code, commits, owner, prs]
327
340
  end
328
341
 
329
- hotspot_output.sort_by! { |row| -row[2] }
342
+ hotspot_output.sort_by! { |row| -row[3] }
330
343
 
331
344
  if FILE_OUTPUT
332
345
  CSV.open('hotspot.csv', 'w') do |csv|
333
- csv << ['File', 'Contributors', 'Lines', 'Commits', 'Owner']
346
+ csv << ['File', 'New change', 'Contributors', 'Lines', 'Commits', 'Owner', 'PRs']
334
347
  hotspot_output.each do |row|
335
348
  csv << row
336
349
  end
@@ -338,7 +351,7 @@ class GithubRepoStatistics
338
351
  else
339
352
  puts "\n *Hotspot files(#{filtered_top_touched_files.count}):*\n"
340
353
  hotspot_output.each do |row|
341
- puts " #{row[0]} Contributors: #{row[1]} Lines: #{row[2]} Commits: #{row[3]} Owner: #{row[4]}"
354
+ puts " #{row[0]} Contributors: #{row[1]} New change: #{row[2]} Lines: #{row[3]} Commits: #{row[4]} Owner: #{row[5]} PRs: #{row[6]}"
342
355
  end
343
356
  end
344
357
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class GithubRepoStatistics
4
- VERSION = '2.2.28'
4
+ VERSION = '2.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github_repo_statistics
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.28
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serghei Moret
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-06 00:00:00.000000000 Z
11
+ date: 2024-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: date