git_ownership_insights 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/git_ownership_insights +32 -2
- data/lib/git_ownership_insights/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc9c0c038149e42cd56b515168124dd68d50476169deedd38e98cb8593770106
|
4
|
+
data.tar.gz: bc3e24fb12aac9bf7e94e6649b61b4941d1dfba20a7cc23f4ba56e566631faa1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7638cb2568573d64238ba56438b9bb70e7a7ec6c9d28ac353e79c867d174039c04237103fc424cadd146d169bbce2014a8651445cc660ae2b7a06a7126bdb7cd
|
7
|
+
data.tar.gz: 5941142ba797b288b7a82e5a5b20edf91eb2c00cf754375743eccbb70e0ad31b8ce111f03f1c238746724d096f686b3f0b786c75432d3571e9b290eea7ae1284
|
data/bin/git_ownership_insights
CHANGED
@@ -167,12 +167,33 @@ def count_big_files(directory_path, size: BIG_FILE_SIZE)
|
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
|
-
puts " Total number of files longer than #{size} lines: #{count}"
|
170
|
+
puts " Total number of code files longer than #{size} lines: #{count}"
|
171
|
+
end
|
172
|
+
|
173
|
+
def count_hotspot_lines(files)
|
174
|
+
code_files = files.select {|f|
|
175
|
+
extension = File.extname(f)
|
176
|
+
valid_extensions = ['.swift', '.kt']
|
177
|
+
valid_extensions.include?(extension)
|
178
|
+
}
|
179
|
+
|
180
|
+
# Initialize a counter for files that meet the criteria
|
181
|
+
count = 0
|
182
|
+
|
183
|
+
# Iterate through each file and check the line count
|
184
|
+
code_files.each do |file|
|
185
|
+
lines_count = File.foreach(file).reject { |line| line.match(/^\s*(\/\/|\/\*.*\*\/|\s*$)/) }.count
|
186
|
+
|
187
|
+
count += lines_count
|
188
|
+
end
|
189
|
+
|
190
|
+
puts " Total lines of hotspot code: #{count}"
|
171
191
|
end
|
172
192
|
|
173
193
|
def contribution_message(directory_path:, duration_in_days:, begin_time:, debug: nil, steps: nil)
|
174
194
|
duration_in_days = duration_in_days.to_i
|
175
195
|
all_teams = []
|
196
|
+
teams_count = 0
|
176
197
|
files_changed_by_many_teams = 0
|
177
198
|
total_changes = 0
|
178
199
|
start_date = begin_time.to_time.to_i - duration_in_days * 86_400
|
@@ -213,6 +234,7 @@ def contribution_message(directory_path:, duration_in_days:, begin_time:, debug:
|
|
213
234
|
if teams.count > 1
|
214
235
|
files_changed_by_many_teams += 1
|
215
236
|
file_team_map.merge!("#{file}" => [teams, commit_count])
|
237
|
+
teams_count += teams.count
|
216
238
|
end
|
217
239
|
|
218
240
|
puts "\n#{filename} [#{commit_count}]:#{teams}\n" if debug
|
@@ -225,7 +247,14 @@ def contribution_message(directory_path:, duration_in_days:, begin_time:, debug:
|
|
225
247
|
churn_count = file_team_map.values.map { |value| value[1] }.sum
|
226
248
|
hotspot_changes_percentage = (churn_count.to_f / total_changes.to_f)*100
|
227
249
|
|
228
|
-
puts "Timeframe: #{(begin_time - duration_in_days).strftime('%Y-%m-%d')} to #{begin_time.strftime('%Y-%m-%d')}
|
250
|
+
puts "Timeframe: #{(begin_time - duration_in_days).strftime('%Y-%m-%d')} to #{begin_time.strftime('%Y-%m-%d')}"
|
251
|
+
puts " Code files with a single contributor: #{(100 - ((files_changed_by_many_teams.to_f / code_files_with_changes.count.to_f) * 100)).round(2)}%"
|
252
|
+
puts " Hotspot code changes: #{churn_count} (#{hotspot_changes_percentage.round(2)}%)"
|
253
|
+
puts " Total occurrences of cross-squad dependencies over same files: #{teams_count}"
|
254
|
+
puts " Amount of code changes: #{total_changes}"
|
255
|
+
puts " Total files changed: #{code_files_with_changes.count}"
|
256
|
+
puts " Total files in the folder: #{file_count}"
|
257
|
+
puts " Contributors: #{contributors}"
|
229
258
|
|
230
259
|
# Filter files based on extension and size
|
231
260
|
filtered_files = file_team_map.select do |file_path|
|
@@ -237,6 +266,7 @@ def contribution_message(directory_path:, duration_in_days:, begin_time:, debug:
|
|
237
266
|
|
238
267
|
filtered_top_touched_files = filtered_files.sort_by { |element, count| [-count.last, element] }
|
239
268
|
count_big_files(directory_path)
|
269
|
+
count_hotspot_lines(filtered_files.keys)
|
240
270
|
puts " Total files longer than #{BIG_FILE_SIZE} lines with multiple contributors: #{filtered_top_touched_files.count}\n"
|
241
271
|
if HOTSPOT
|
242
272
|
filtered_top_touched_files.each do |line|
|