quality_report 1.6.0 → 1.7.0
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 +4 -4
- data/README.md +2 -0
- data/exe/ruby-quality-report +20 -16
- data/lib/quality_report/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: 51abac0022982e8c18d66396b580a4acadcbc14f86fd698f6e551e0d95cd304a
         | 
| 4 | 
            +
              data.tar.gz: 8f4c5b26c6dd55268206ebe402642a88a287e5339d93a7dcd2532b11093e5564
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 701288fc0a288adba125cb2299810b79067ef86486ae1c94cdf87f86b0ebdf030226cb4c925c10a43455ee606a2a70f3396b5d538feb5b07200cbeedb22acde2
         | 
| 7 | 
            +
              data.tar.gz: cfca2cab37975eed90e80b6c018f35c7a193f4977c7c6d62b21057f6d8513d0a3b3fd1bc33e4f1f9f826bbd5887bfd81bd7a69134b793cec5a22c6beb9c3138d
         | 
    
        data/README.md
    CHANGED
    
    | @@ -73,6 +73,8 @@ Complex code introduces bugs in a second, more subtle way. This is because code | |
| 73 73 |  | 
| 74 74 | 
             
            - [x] Colorize the output to separate high, medium, and low warning percentages.
         | 
| 75 75 | 
             
            - [x] Fix the numerical alignment.
         | 
| 76 | 
            +
            - [ ] --add-column option.
         | 
| 77 | 
            +
            - [ ] --skip option.
         | 
| 76 78 | 
             
            - [ ] Add a progress bar.
         | 
| 77 79 | 
             
            - [ ] Speed up the scan.
         | 
| 78 80 | 
             
            - [ ] Refactor from script-style coding to a more standard Ruby project.
         | 
    
        data/exe/ruby-quality-report
    CHANGED
    
    | @@ -21,56 +21,60 @@ def create_combined_stats(part_stats, whole_stats) | |
| 21 21 | 
             
              part_data  = make_data_set(part_stats)
         | 
| 22 22 | 
             
              whole_data = make_data_set(whole_stats)
         | 
| 23 23 |  | 
| 24 | 
            -
              whole_data.map do | | 
| 25 | 
            -
                part_count = part_data[ | 
| 24 | 
            +
              whole_data.map do |author, whole_count|
         | 
| 25 | 
            +
                part_count = part_data[author] || 0
         | 
| 26 26 | 
             
                percent    = float_to_percent(part_count.to_f / whole_count)
         | 
| 27 27 |  | 
| 28 | 
            -
                {  | 
| 28 | 
            +
                { author:, part_count:, whole_count:, percent: }
         | 
| 29 29 | 
             
              end
         | 
| 30 30 | 
             
            end
         | 
| 31 31 |  | 
| 32 32 | 
             
            def make_data_set(two_column_data)
         | 
| 33 33 | 
             
              hash = {}
         | 
| 34 34 | 
             
              two_column_data.each_line do |line|
         | 
| 35 | 
            -
                count,  | 
| 36 | 
            -
                hash[ | 
| 35 | 
            +
                count, author = line.split(' ')
         | 
| 36 | 
            +
                hash[author]  = count.to_i
         | 
| 37 37 | 
             
              end
         | 
| 38 38 | 
             
              hash
         | 
| 39 39 | 
             
            end
         | 
| 40 40 |  | 
| 41 41 | 
             
            def generate_csv(combined_stats)
         | 
| 42 42 | 
             
              generate_data(combined_stats)
         | 
| 43 | 
            -
                .map { |stats| [stats[: | 
| 43 | 
            +
                .map { |stats| [stats[:author], stats[:percent], stats[:part_count], stats[:whole_count]].join(',') }
         | 
| 44 44 | 
             
                .tap { |x| x.prepend(['Author,Percent Flagged,Flagged Lines,All Lines']) }
         | 
| 45 45 | 
             
                .join("\n")
         | 
| 46 46 | 
             
            end
         | 
| 47 47 |  | 
| 48 48 | 
             
            def generate_table(combined_stats, colspec: {}, skip: '')
         | 
| 49 | 
            -
               | 
| 50 | 
            -
              static_heading   = colspec.keys&.first | 
| 51 | 
            -
               | 
| 49 | 
            +
              author_heading   = ['Author']
         | 
| 50 | 
            +
              static_heading   = [colspec.keys&.first].compact
         | 
| 51 | 
            +
              default_headings = ['Percent Flagged', 'Flagged Lines', 'All lines']
         | 
| 52 | 
            +
              all_headings     = author_heading + static_heading + default_headings
         | 
| 52 53 |  | 
| 53 54 | 
             
              table         = TTY::Table.new(header: all_headings)
         | 
| 54 55 | 
             
              table_data    = generate_data(combined_stats).reject { should_skip?(_1) }
         | 
| 55 | 
            -
              static_values = colspec[static_heading] || {}
         | 
| 56 | 
            +
              static_values = colspec[static_heading.first] || {}
         | 
| 56 57 |  | 
| 57 58 | 
             
              table_data.each do |stats|
         | 
| 58 | 
            -
                next if skip.include?(stats[: | 
| 59 | 
            +
                next if skip.include?(stats[:author])
         | 
| 59 60 |  | 
| 60 | 
            -
                 | 
| 61 | 
            -
             | 
| 61 | 
            +
                author_column   = [{ value: stats[:author], alignment: :left }]
         | 
| 62 | 
            +
                static_column   = [static_heading.any? ? { value: static_values[stats[:author]], alignment: :left } : nil]
         | 
| 63 | 
            +
                dynamic_columns = [
         | 
| 62 64 | 
             
                  { value: "#{stats[:percent]}%",                  alignment: :right },
         | 
| 63 65 | 
             
                  { value: int_to_accounting(stats[:part_count]),  alignment: :right },
         | 
| 64 66 | 
             
                  { value: int_to_accounting(stats[:whole_count]), alignment: :right }
         | 
| 65 67 | 
             
                ]
         | 
| 66 | 
            -
                new_row << { value: static_values[stats[:label]], alignment: :left } if static_heading
         | 
| 67 68 |  | 
| 68 | 
            -
                table <<  | 
| 69 | 
            +
                table << (author_column + static_column + dynamic_columns).compact
         | 
| 69 70 | 
             
              end
         | 
| 70 71 |  | 
| 71 72 | 
             
              render_table(table, table_data)
         | 
| 72 73 | 
             
            end
         | 
| 73 74 |  | 
| 75 | 
            +
            ##
         | 
| 76 | 
            +
            # Renders the table with color coding based on the percentage of flagged lines.
         | 
| 77 | 
            +
            #
         | 
| 74 78 | 
             
            def render_table(table, table_data)
         | 
| 75 79 | 
             
              pastel = Pastel.new
         | 
| 76 80 |  | 
| @@ -108,7 +112,7 @@ def less_than_200_lines_total?(stats) | |
| 108 112 | 
             
            end
         | 
| 109 113 |  | 
| 110 114 | 
             
            def no_commits_in_last_60_days?(stats)
         | 
| 111 | 
            -
              author = stats[: | 
| 115 | 
            +
              author = stats[:author]
         | 
| 112 116 |  | 
| 113 117 | 
             
              # Get the last commit timestamp in Unix epoch format
         | 
| 114 118 | 
             
              last_commit = `git log -1 --format="%at" --author="#{author}"`.chomp
         |