churn 1.0.5 → 1.0.6
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/churn.gemspec +15 -3
- data/lib/churn/calculator.rb +10 -14
- data/lib/churn/location_mapping.rb +3 -2
- data/lib/churn/options.rb +1 -14
- data/lib/churn/version.rb +1 -1
- metadata +146 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60626635b7c857bc6a5129f45d42aff3eba37caa4b478492316a2030a0bdebcc
|
4
|
+
data.tar.gz: 321cfa0f67c7c1a5b0e0ca2b6da68b925d5f598a73af631f13f293a454bcb48c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0584e9330499a66eeabea707a4aa586ec891d6f5a71acd0d6017d5e745e50f4f9950b4feab97651599a7a279a6cfd8bad4ba1981c21bbc0ba5e564f8ad63ca6e'
|
7
|
+
data.tar.gz: 6a6a562a668f501d69a51f5bd35a59e6da48aee865431ce17b6ee934c1e2622fe84312e861b1c0d1d805172089398e16107c4201f0ba5227a64ff8d7aff04448
|
data/churn.gemspec
CHANGED
@@ -27,7 +27,19 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_runtime_dependency "ruby_parser", "~> 3.0"
|
28
28
|
# TODO: Just have clean output and drop hirb
|
29
29
|
s.add_runtime_dependency "hirb", ">= 0"
|
30
|
-
|
31
|
-
|
32
|
-
s.
|
30
|
+
|
31
|
+
s.add_development_dependency 'pry-byebug'
|
32
|
+
s.add_development_dependency "minitest", "~> 5.3"
|
33
|
+
s.add_development_dependency "shoulda", ">= 0"
|
34
|
+
s.add_development_dependency "test_construct", "~> 2.0.0"
|
35
|
+
s.add_development_dependency "rake", ">= 0"
|
36
|
+
s.add_development_dependency "mocha", "~> 1.1.0"
|
37
|
+
s.add_development_dependency "simplecov", ">= 0"
|
38
|
+
s.add_development_dependency "yard", "~> 0.9.20"
|
39
|
+
# TODO: what is using this ronn
|
40
|
+
s.add_development_dependency "ronn"
|
41
|
+
#s.add_development_dependency "kramdown", platform: :jruby
|
42
|
+
s.add_development_dependency "redcarpet"
|
43
|
+
# TODO: what is using this? Tests I think, remove
|
44
|
+
s.add_development_dependency 'activesupport', '>= 4.0'
|
33
45
|
end
|
data/lib/churn/calculator.rb
CHANGED
@@ -4,8 +4,6 @@ require 'ruby_parser'
|
|
4
4
|
require 'json'
|
5
5
|
require 'hirb'
|
6
6
|
require 'fileutils'
|
7
|
-
require 'rest_client'
|
8
|
-
|
9
7
|
|
10
8
|
require_relative 'scm/source_control'
|
11
9
|
require_relative 'scm/git_analyzer'
|
@@ -54,21 +52,10 @@ module Churn
|
|
54
52
|
else
|
55
53
|
emit
|
56
54
|
analyze
|
57
|
-
remote_report
|
58
55
|
print ? self.to_s : self.to_h
|
59
56
|
end
|
60
57
|
end
|
61
58
|
|
62
|
-
def remote_report
|
63
|
-
if @churn_options.report_host
|
64
|
-
puts "posting churn results to #{@churn_options.report_host}"
|
65
|
-
data = {:name => @churn_options.name, :revision => @revisions.first, :data => self.to_h}.to_json
|
66
|
-
RestClient.post @churn_options.report_host, {"results" => data}, :content_type => :json, :accept => :json
|
67
|
-
end
|
68
|
-
rescue Errno::ECONNREFUSED
|
69
|
-
puts "error posting churn results connection refused to host: #{@churn_options.report_host}"
|
70
|
-
end
|
71
|
-
|
72
59
|
# this method generates the past history of a churn project from first
|
73
60
|
# commit to current running the report for oldest commits first so they
|
74
61
|
# are built up correctly
|
@@ -284,7 +271,16 @@ module Churn
|
|
284
271
|
end
|
285
272
|
|
286
273
|
def reject_ignored_files(files)
|
287
|
-
|
274
|
+
files.reject do |file, _|
|
275
|
+
@ignores.any? do |ignore|
|
276
|
+
begin
|
277
|
+
/#{ignore}/ =~ file
|
278
|
+
rescue RegexpError => e
|
279
|
+
puts "churn: ignoring invalid regex: #{e}"
|
280
|
+
false
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
288
284
|
end
|
289
285
|
|
290
286
|
end
|
@@ -6,6 +6,7 @@ module Churn
|
|
6
6
|
# this is based off https://github.com/seattlerb/ruby_parser which seems to have some known line number bugs
|
7
7
|
# perhaps look at and move more to the style of line numbers from metric_fu
|
8
8
|
# https://github.com/metricfu/metric_fu/blob/master/lib/data_structures/line_numbers.rb
|
9
|
+
# NOTE: showing more line number issues with Ruby 2.6
|
9
10
|
class LocationMapping < SexpProcessor
|
10
11
|
|
11
12
|
attr_reader :klasses_collection, :methods_collection
|
@@ -20,7 +21,7 @@ module Churn
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def get_info(file)
|
23
|
-
ast = @parser.process(File.read(file), file)
|
24
|
+
ast = @parser.process(File.read(file).chomp, file)
|
24
25
|
process ast
|
25
26
|
end
|
26
27
|
|
@@ -39,7 +40,7 @@ module Churn
|
|
39
40
|
|
40
41
|
def deep_last_line(exp)
|
41
42
|
lines = []
|
42
|
-
exp.deep_each{|x| lines << x.line }
|
43
|
+
exp.deep_each{|x| lines << x.line; }
|
43
44
|
lines.max + 1
|
44
45
|
end
|
45
46
|
|
data/lib/churn/options.rb
CHANGED
@@ -7,9 +7,8 @@ module Churn
|
|
7
7
|
DEFAULT_CHURN_DIRECTORY = "tmp/churn"
|
8
8
|
DEFAULT_MINIMUM_CHURN_COUNT = 5
|
9
9
|
DEFAULT_START_TIME = '3 months ago'
|
10
|
-
DEFAULT_REPORT_HOST = 'http://churn.picoappz.com'
|
11
10
|
|
12
|
-
attr_accessor :data_directory, :minimum_churn_count, :ignores, :start_date, :history, :
|
11
|
+
attr_accessor :data_directory, :minimum_churn_count, :ignores, :start_date, :history, :name, :file_extension, :file_prefix
|
13
12
|
|
14
13
|
def initialize()
|
15
14
|
@data_directory = DEFAULT_CHURN_DIRECTORY
|
@@ -17,7 +16,6 @@ module Churn
|
|
17
16
|
@ignores = '/dev/null'
|
18
17
|
@start_date = DEFAULT_START_TIME
|
19
18
|
@history = nil
|
20
|
-
@report_host = nil
|
21
19
|
@name = nil
|
22
20
|
@file_extension = nil
|
23
21
|
@file_prefix = nil
|
@@ -35,17 +33,6 @@ module Churn
|
|
35
33
|
if @history=='true'
|
36
34
|
@history = DEFAULT_START_TIME
|
37
35
|
end
|
38
|
-
if !options[:report].nil? && options[:report]!=''
|
39
|
-
@report_host = options[:report]
|
40
|
-
if @report_host=='true'
|
41
|
-
@report_host = DEFAULT_REPORT_HOST
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
@name = options[:name] if !options[:name].nil? && options[:name]!=''
|
46
|
-
if !@report_host.nil? && @name.nil?
|
47
|
-
raise ArgumentError.new "If you are reporting churn results you must pass a valid github project name in the form of username/project_name"
|
48
|
-
end
|
49
36
|
|
50
37
|
self
|
51
38
|
end
|
data/lib/churn/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: churn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Mayer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: main
|
@@ -81,19 +81,159 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: pry-byebug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
-
type: :
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: minitest
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '5.3'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '5.3'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: shoulda
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: test_construct
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 2.0.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 2.0.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rake
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: mocha
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 1.1.0
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.1.0
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: simplecov
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: yard
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 0.9.20
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 0.9.20
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: ronn
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: redcarpet
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: activesupport
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '4.0'
|
230
|
+
type: :development
|
91
231
|
prerelease: false
|
92
232
|
version_requirements: !ruby/object:Gem::Requirement
|
93
233
|
requirements:
|
94
234
|
- - ">="
|
95
235
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
236
|
+
version: '4.0'
|
97
237
|
description: 'High method and class churn has been shown to have increased bug and
|
98
238
|
error rates. This gem helps you know what is changing a lot so you can do additional
|
99
239
|
testing, code review, or refactoring to try to tame the volatile code. '
|