github_repo_statistics 2.2.13 → 2.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: dd2582ff1a032bad4e27ef0529ed83df931ffa781a9e9c2ca59b935ec8620deb
         | 
| 4 | 
            +
              data.tar.gz: 931b612913c053acd5207092a0955c4532b301cfa62391f4314a046114e953c2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f434060566ac717c0b8542a7825d240e85151fccd5a711cce0050a32764435247b147ec6d80fdb69ecc5fee43dab4a99eba1766557197faf8e4d5d933fe7aa10
         | 
| 7 | 
            +
              data.tar.gz: 1ceeafecbbd2146816d8669e75c2d4fd645322b8c88259937520aeeb9ca11ccee3d9388e4eecf65d36777b95481b5c7ecf548d7499c33b169170245cdb274349
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
| @@ -30,6 +30,8 @@ class ForceMergeReport | |
| 30 30 | 
             
                weekly_summaries = Hash.new { |hash, key| hash[key] = { total: 0, failed: 0, workflows: Hash.new(0) } }
         | 
| 31 31 |  | 
| 32 32 | 
             
                weeks = @duration_in_days / 7
         | 
| 33 | 
            +
                require 'pry'
         | 
| 34 | 
            +
                binding.pry
         | 
| 33 35 |  | 
| 34 36 | 
             
                (weekly_pull_requests.keys.sort[-weeks..] || []).each do |month|
         | 
| 35 37 | 
             
                  pull_requests_for_month = weekly_pull_requests[month]
         | 
| @@ -91,7 +93,6 @@ class ForceMergeReport | |
| 91 93 | 
             
                    puts "  - #{workflow}: #{count}"
         | 
| 92 94 | 
             
                  end
         | 
| 93 95 |  | 
| 94 | 
            -
             | 
| 95 96 | 
             
                  if ENV['BQ_CREDENTIALS']
         | 
| 96 97 | 
             
                    require "google/cloud/bigquery"
         | 
| 97 98 | 
             
                    require "json"
         | 
| @@ -124,7 +124,7 @@ class GithubRepoStatistics | |
| 124 124 | 
             
                  count += 1 if lines_count > size
         | 
| 125 125 | 
             
                end
         | 
| 126 126 |  | 
| 127 | 
            -
                 | 
| 127 | 
            +
                count
         | 
| 128 128 | 
             
              end
         | 
| 129 129 |  | 
| 130 130 | 
             
              def count_hotspot_lines(files)
         | 
| @@ -142,7 +142,7 @@ class GithubRepoStatistics | |
| 142 142 | 
             
                  count += lines_count
         | 
| 143 143 | 
             
                end
         | 
| 144 144 |  | 
| 145 | 
            -
                 | 
| 145 | 
            +
                count
         | 
| 146 146 | 
             
              end
         | 
| 147 147 |  | 
| 148 148 | 
             
              def filter_existing_code_files(files)
         | 
| @@ -234,28 +234,74 @@ class GithubRepoStatistics | |
| 234 234 | 
             
                sorted_occurrences = occurrences.sort_by { |element, count| [-count, element] }
         | 
| 235 235 | 
             
                contributors = Hash[sorted_occurrences]
         | 
| 236 236 | 
             
                churn_count = file_team_map.values.map { |value| value[1] }.sum
         | 
| 237 | 
            -
                hotspot_changes_percentage = (churn_count.to_f / total_changes) * 100
         | 
| 237 | 
            +
                hotspot_changes_percentage = ((churn_count.to_f / total_changes) * 100).round(2)
         | 
| 238 238 | 
             
                # Filter files based on extension, existence and size
         | 
| 239 239 | 
             
                filtered_files = filter_files(file_team_map:)
         | 
| 240 240 | 
             
                filtered_top_touched_files = filtered_files.sort_by { |element, count| [-count.last, element] }
         | 
| 241 241 |  | 
| 242 | 
            +
                files_with_single_contributor_percentage = (100 - ((files_changed_by_many_teams.to_f / file_count) * 100)).round(2)
         | 
| 243 | 
            +
                hotspot_lines = count_hotspot_lines(filtered_files.keys)
         | 
| 244 | 
            +
                big_files_count = count_big_files(@directory_path)
         | 
| 245 | 
            +
                
         | 
| 246 | 
            +
                if ENV['BQ_CREDENTIALS']
         | 
| 247 | 
            +
                  require "google/cloud/bigquery"
         | 
| 248 | 
            +
                  require "json"
         | 
| 249 | 
            +
                  creds = JSON.parse(ENV['BQ_CREDENTIALS'])
         | 
| 250 | 
            +
                  bigquery = Google::Cloud::Bigquery.new(
         | 
| 251 | 
            +
                    project_id: "hellofresh-android",
         | 
| 252 | 
            +
                    credentials: creds
         | 
| 253 | 
            +
                  )
         | 
| 254 | 
            +
                  dataset = bigquery.dataset "modularization"
         | 
| 255 | 
            +
             | 
| 256 | 
            +
                  files_with_multiple_contributor = file_team_map.count
         | 
| 257 | 
            +
                  big_files_with_multiple_contributors = filtered_top_touched_files.count
         | 
| 258 | 
            +
                  total_files_changed = uniq_code_files_with_changes.count
         | 
| 259 | 
            +
             | 
| 260 | 
            +
                  query = <<~SQL
         | 
| 261 | 
            +
              MERGE INTO modularization AS target
         | 
| 262 | 
            +
              USING (SELECT '#{@begin_time}' AS date, '#{@directory_path}' AS platform) AS source
         | 
| 263 | 
            +
              ON target.date = source.date AND target.platform = source.platform
         | 
| 264 | 
            +
              WHEN MATCHED THEN
         | 
| 265 | 
            +
                UPDATE SET
         | 
| 266 | 
            +
                  target.platform = '#{@directory_path}',
         | 
| 267 | 
            +
                  target.single_contributor_percentage = #{files_with_single_contributor_percentage},
         | 
| 268 | 
            +
                  target.files_changed_by_many_teams = #{files_changed_by_many_teams},
         | 
| 269 | 
            +
                  target.file_count = #{file_count},
         | 
| 270 | 
            +
                  target.cross_teams_count = #{cross_teams_count},
         | 
| 271 | 
            +
                  target.single_ownership_teams_count = #{single_ownership_teams_count},
         | 
| 272 | 
            +
                  target.hotspot_changes_percentage = #{hotspot_changes_percentage},
         | 
| 273 | 
            +
                  target.churn_count = #{churn_count},
         | 
| 274 | 
            +
                  target.total_changes = #{total_changes},
         | 
| 275 | 
            +
                  target.files_with_multiple_contributor = #{files_with_multiple_contributor},
         | 
| 276 | 
            +
                  target.big_files_with_multiple_contributors = #{big_files_with_multiple_contributors},
         | 
| 277 | 
            +
                  target.total_files_changed = #{total_files_changed},
         | 
| 278 | 
            +
                  target.hotspot_lines = #{hotspot_lines},
         | 
| 279 | 
            +
                  target.big_files_count = #{big_files_count}
         | 
| 280 | 
            +
              WHEN NOT MATCHED THEN
         | 
| 281 | 
            +
                INSERT (date,platform,single_contributor_percentage,files_changed_by_many_teams,file_count,cross_teams_count,single_ownership_teams_count,hotspot_changes_percentage,churn_count,total_changes,files_with_multiple_contributor,big_files_with_multiple_contributors,total_files_changed,hotspot_lines,big_files_count)
         | 
| 282 | 
            +
                VALUES (#{@begin_time}, #{@directory_path}, #{files_with_single_contributor_percentage}, #{files_changed_by_many_teams}, #{file_count}, ##{cross_teams_count}, #{single_ownership_teams_count}, #{hotspot_changes_percentage}, #{churn_count}, #{total_changes}, #{files_with_multiple_contributor}, #{big_files_with_multiple_contributors}, #{total_files_changed}, #{hotspot_lines}, #{big_files_count});
         | 
| 283 | 
            +
                  SQL
         | 
| 284 | 
            +
             | 
| 285 | 
            +
                  dataset.query(query)
         | 
| 286 | 
            +
                end
         | 
| 287 | 
            +
             | 
| 242 288 | 
             
                puts ''
         | 
| 243 289 | 
             
                puts "*Timeframe:* #{(@begin_time - duration_in_days).strftime('%Y-%m-%d')} to #{@begin_time.strftime('%Y-%m-%d')}"
         | 
| 244 | 
            -
                puts "     *Code files with a single contributor:* #{ | 
| 290 | 
            +
                puts "     *Code files with a single contributor:* #{files_with_single_contributor_percentage}%"
         | 
| 245 291 | 
             
                puts "        *Existing files changed by many teams:* #{files_changed_by_many_teams}"
         | 
| 246 292 | 
             
                puts "        *Current existing #{CODE_EXTENSIONS} files:* #{file_count}"
         | 
| 247 293 | 
             
                puts '     *Cross-Squad Dependency:*'
         | 
| 248 294 | 
             
                puts "        *Contributions by multiple squads to the same files:* #{cross_teams_count}"
         | 
| 249 295 | 
             
                puts "        *Contributions by single squads contributing to single files:* #{single_ownership_teams_count}"
         | 
| 250 | 
            -
                puts "     *Hotspot Code Changes:* #{hotspot_changes_percentage | 
| 296 | 
            +
                puts "     *Hotspot Code Changes:* #{hotspot_changes_percentage}%"
         | 
| 251 297 | 
             
                puts "        *Churn count(commits to files by multiple teams):* #{churn_count}"
         | 
| 252 298 | 
             
                puts "        *Total amount of commits:* #{total_changes}"
         | 
| 253 | 
            -
                 | 
| 299 | 
            +
                puts "     *Total lines of hotspot code:* #{hotspot_lines}"
         | 
| 254 300 | 
             
                puts "     *#{CODE_EXTENSIONS} files with multiple contributors:* #{file_team_map.count}"
         | 
| 255 301 | 
             
                puts "     *#{CODE_EXTENSIONS} files exceeding #{BIG_FILE_SIZE} lines with multiple contributors:* #{filtered_top_touched_files.count}"
         | 
| 256 302 | 
             
                puts "     *Total amount of commits to #{CODE_EXTENSIONS} files:* #{total_changes}"
         | 
| 257 303 | 
             
                puts "     *Total #{CODE_EXTENSIONS} files changed:* #{uniq_code_files_with_changes.count}"
         | 
| 258 | 
            -
                 | 
| 304 | 
            +
                puts "     *Current total number of code files longer than #{BIG_FILE_SIZE} lines:* #{big_files_count}"
         | 
| 259 305 | 
             
                puts "     *Current total of #{CODE_EXTENSIONS} files in the folder:* #{file_count}"
         | 
| 260 306 | 
             
                puts "     *Contributors:* #{contributors}"
         | 
| 261 307 |  | 
    
        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. | 
| 4 | 
            +
              version: 2.2.14
         | 
| 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-03- | 
| 11 | 
            +
            date: 2024-03-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: date
         |