pronto-flay 0.11.0 → 0.11.2

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: de90dcdef64f202f027ead7f152b23def7f5e7cea005245cc18716abc5690b78
4
- data.tar.gz: 5b5a3ea37e81bb221f514c3c141f917bc77436acd502de1f2213672414979236
3
+ metadata.gz: 632d110a9944c806e14e8bc6daf14fa43fa20c1a16fb82b6abebe3457949e44b
4
+ data.tar.gz: 801b8be52cd71ce1a20b81b651910edf10f8167025851d5a204c5b5f0637bb8a
5
5
  SHA512:
6
- metadata.gz: a0b188cc0aff55e7451bacdc4e5cdfdad2839b43ddc035b5d2665d90c0819e5838820cb752757a5690879953354ef4d009ca9911fcafa21c0a81e27593c188b5
7
- data.tar.gz: ceba2696f8f7538187ed29d251ebff51194ba8d5d2808f6b96c23f65dbf4941f32dacff0f186f23bd659c6d403a479ad6b6e2389e009ff352cd33b2edd7045a7
6
+ metadata.gz: f76d3da054039bcc3bede29ec7380008231bcc7155ec4d391d4e91c71814e7616b37e899f9a9a02fe01e1840dc365034dac65f0ec62e41ae50cb3e8f35ed053c
7
+ data.tar.gz: 3a6e543e494a600116f2fae2683acdc09fbbf3bbde3f049c4751feb17ccd78fa4cf3cbff06e68e80521bb921d690464e4f83207359da810ea17aa3c24371383d
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: 'github-actions'
4
+ directory: '/'
5
+ schedule:
6
+ interval: 'weekly'
@@ -11,9 +11,13 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0']
14
+ ruby: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
15
+ fail-fast: false
15
16
  steps:
16
- - uses: actions/checkout@v2
17
+ - uses: actions/checkout@v4
18
+ - name: use older path_expander version
19
+ if: matrix.ruby == '2.3' || matrix.ruby == '2.4'
20
+ run: echo "gem 'path_expander', '1.1.1'" > Gemfile.local
17
21
  - uses: ruby/setup-ruby@v1
18
22
  with:
19
23
  ruby-version: ${{ matrix.ruby }}
@@ -0,0 +1,32 @@
1
+ name: Publish gem to rubygems.org
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ push:
13
+ if: github.repository == 'prontolabs/pronto-flay'
14
+ runs-on: ubuntu-latest
15
+
16
+ permissions:
17
+ contents: write
18
+ id-token: write
19
+
20
+ steps:
21
+ - uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
22
+ with:
23
+ egress-policy: audit
24
+
25
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
26
+
27
+ - uses: ruby/setup-ruby@4a9ddd6f338a97768b8006bf671dfbad383215f4 # v1.207.0
28
+ with:
29
+ bundler-cache: true
30
+ ruby-version: '3.4'
31
+
32
+ - uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
data/README.md CHANGED
@@ -1,12 +1,21 @@
1
1
  # Pronto runner for Flay
2
2
 
3
- [![Code Climate](https://codeclimate.com/github/prontolabs/pronto-flay.png)](https://codeclimate.com/github/prontolabs/pronto-flay)
4
- [![Build Status](https://travis-ci.org/prontolabs/pronto-flay.png)](https://travis-ci.org/prontolabs/pronto-flay)
5
3
  [![Gem Version](https://badge.fury.io/rb/pronto-flay.png)](http://badge.fury.io/rb/pronto-flay)
6
- [![Dependency Status](https://gemnasium.com/prontolabs/pronto-flay.png)](https://gemnasium.com/prontolabs/pronto-flay)
4
+ [![Build Status](https://github.com/prontolabs/pronto-flay/actions/workflows/checks.yml/badge.svg)](https://github.com/prontolabs/pronto-flay/actions/workflows/checks.yml)
5
+ [![Code Climate](https://codeclimate.com/github/prontolabs/pronto-flay.png)](https://codeclimate.com/github/prontolabs/pronto-flay)
7
6
 
8
7
  Pronto runner for [Flay](https://github.com/seattlerb/flay), structural similarities analyzer. [What is Pronto?](https://github.com/prontolabs/pronto)
9
8
 
10
9
  # Configuration
11
10
 
12
11
  Configuring excludes Using [.flayignore](https://github.com/seattlerb/flay/blob/92039b66a479f3b8a8a1204c5733e35463e66995/README.txt#L28) will work just fine with pronto-flay.
12
+
13
+ You can overwrite the default, very low mass threshold for Flay with the PRONTO_FLAY_MASS_THRESHOLD environment variable for a more sensible approach.
14
+
15
+ Severity levels for identical and similar code issues can be configured inside `.pronto.yml`:
16
+ ```yaml
17
+ flay:
18
+ severity_levels:
19
+ identical: 'warning'
20
+ similar: 'warning'
21
+ ```
@@ -1,5 +1,5 @@
1
1
  module Pronto
2
2
  module FlayVersion
3
- VERSION = '0.11.0'.freeze
3
+ VERSION = '0.11.2'.freeze
4
4
  end
5
5
  end
data/lib/pronto/flay.rb CHANGED
@@ -3,6 +3,11 @@ require 'flay'
3
3
 
4
4
  module Pronto
5
5
  class Flay < Runner
6
+ DEFAULT_SEVERITY_LEVELS = {
7
+ identical: :error,
8
+ similar: :warning,
9
+ }.freeze
10
+
6
11
  def run
7
12
  if files.any?
8
13
  flay.analyze
@@ -17,7 +22,11 @@ module Pronto
17
22
  # Saving the returned Flay object at @flay so we
18
23
  # can inspect it and build the messages Array.
19
24
  def flay
20
- @flay ||= ::Flay.run(files)
25
+ @flay ||= ::Flay.run(params)
26
+ end
27
+
28
+ def params
29
+ [*files, '-m', mass_threshold]
21
30
  end
22
31
 
23
32
  def files
@@ -38,7 +47,7 @@ module Pronto
38
47
 
39
48
  def patch_for_node(node)
40
49
  ruby_patches.find do |patch|
41
- patch.new_file_full_path == node.file
50
+ patch.new_file_full_path.to_s == node.file.to_s
42
51
  end
43
52
  end
44
53
 
@@ -49,13 +58,23 @@ module Pronto
49
58
  end
50
59
 
51
60
  def level(hash)
52
- same?(hash) ? :error : :warning
61
+ same?(hash) ? severity_levels_config[:identical] : severity_levels_config[:similar]
53
62
  end
54
63
 
55
64
  def same?(hash)
56
65
  flay.identical[hash]
57
66
  end
58
67
 
68
+ def severity_levels_config
69
+ @severity_levels_config ||= DEFAULT_SEVERITY_LEVELS.merge(custom_severity_levels_config)
70
+ .map { |k, v| [k.to_sym, v.to_sym] }
71
+ .to_h
72
+ end
73
+
74
+ def custom_severity_levels_config
75
+ Pronto::ConfigFile.new.to_h.dig('flay', 'severity_levels') || {}
76
+ end
77
+
59
78
  def message(hash)
60
79
  match = same?(hash) ? 'Identical' : 'Similar'
61
80
  location = nodes_for(hash).map do |node|
@@ -80,5 +99,10 @@ module Pronto
80
99
  def masses
81
100
  flay.masses
82
101
  end
102
+
103
+ def mass_threshold
104
+ @mass_threshold ||= ENV['PRONTO_FLAY_MASS_THRESHOLD'] || Pronto::ConfigFile.new.to_h.dig('flay', 'mass_threshold') || ::Flay.default_options[:mass].to_s
105
+ end
106
+
83
107
  end
84
108
  end
data/pronto-flay.gemspec CHANGED
@@ -10,12 +10,11 @@ Gem::Specification.new do |s|
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.author = 'Mindaugas Mozūras'
12
12
  s.email = 'mindaugas.mozuras@gmail.com'
13
- s.homepage = 'http://github.com/mmozuras/pronto-flay'
13
+ s.homepage = 'http://github.com/prontolabs/pronto-flay'
14
14
  s.summary = 'Pronto runner for Flay, structural similarities analyzer'
15
15
 
16
16
  s.licenses = ['MIT']
17
17
  s.required_ruby_version = '>= 2.3.0'
18
- s.rubygems_version = '1.8.23'
19
18
 
20
19
  s.files = `git ls-files`.split($RS).reject do |file|
21
20
  file =~ %r{^(?:
@@ -34,6 +33,7 @@ Gem::Specification.new do |s|
34
33
 
35
34
  s.add_dependency('pronto', '~> 0.11.0')
36
35
  s.add_dependency('flay', '~> 2.8')
36
+ s.add_development_dependency('base64')
37
37
  s.add_development_dependency('rake', '~> 12.0')
38
38
  s.add_development_dependency('rspec', '~> 3.4')
39
39
  s.add_development_dependency('rspec-its', '~> 1.2')
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pronto-flay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mindaugas Mozūras
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-02-01 00:00:00.000000000 Z
10
+ date: 2025-01-11 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pronto
@@ -38,6 +37,20 @@ dependencies:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
39
  version: '2.8'
40
+ - !ruby/object:Gem::Dependency
41
+ name: base64
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
41
54
  - !ruby/object:Gem::Dependency
42
55
  name: rake
43
56
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +93,6 @@ dependencies:
80
93
  - - "~>"
81
94
  - !ruby/object:Gem::Version
82
95
  version: '1.2'
83
- description:
84
96
  email: mindaugas.mozuras@gmail.com
85
97
  executables: []
86
98
  extensions: []
@@ -89,17 +101,18 @@ extra_rdoc_files:
89
101
  - README.md
90
102
  files:
91
103
  - ".github/CODEOWNERS"
104
+ - ".github/dependabot.yml"
92
105
  - ".github/workflows/checks.yml"
106
+ - ".github/workflows/push_gem.yml"
93
107
  - LICENSE
94
108
  - README.md
95
109
  - lib/pronto/flay.rb
96
110
  - lib/pronto/flay/version.rb
97
111
  - pronto-flay.gemspec
98
- homepage: http://github.com/mmozuras/pronto-flay
112
+ homepage: http://github.com/prontolabs/pronto-flay
99
113
  licenses:
100
114
  - MIT
101
115
  metadata: {}
102
- post_install_message:
103
116
  rdoc_options: []
104
117
  require_paths:
105
118
  - lib
@@ -114,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
127
  - !ruby/object:Gem::Version
115
128
  version: '0'
116
129
  requirements: []
117
- rubygems_version: 3.0.3
118
- signing_key:
130
+ rubygems_version: 3.6.2
119
131
  specification_version: 4
120
132
  summary: Pronto runner for Flay, structural similarities analyzer
121
133
  test_files: []