inch 0.7.0 → 0.7.1
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/CHANGELOG.md +5 -0
- data/Gemfile +0 -1
- data/README.md +2 -2
- data/config/ruby.rb +12 -1
- data/lib/inch/api/diff.rb +21 -11
- data/lib/inch/cli/command/diff.rb +8 -0
- data/lib/inch/cli/command/output/diff.rb +13 -2
- data/lib/inch/language/elixir/provider/reader/object/function_object.rb +6 -1
- data/lib/inch/version.rb +1 -1
- data/test/fixtures/ruby/simple/lib/role_methods.rb +8 -0
- data/test/test_helper.rb +0 -2
- data/test/unit/language/ruby/code_object/method_object_test.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40896e039aaa1bfed752dc6d80b2df28e5e628e6
|
4
|
+
data.tar.gz: cdac11d21c63a5e3e86ae5d8194f43e8f5a44a85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61f6c799bafcbd6f2251712c7206ed7f1e24431af34d704b9e656cd31e73d46b7364577ff1b5380be36960b7b5c25ffb76705156012ced4d5c4f9b6888b96ce1
|
7
|
+
data.tar.gz: 9cad52e8dc6ebede402102cfe23a9b90f71c2e19229c7176126116bbb9e1b2c6f945a7b54b0e2a6a030bbdfab2f9c2db1a1822c0e0d8282fc64f56dd2bbf52f3
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -336,7 +336,7 @@ Shows you an overview of the codebase.
|
|
336
336
|
|
337
337
|
### inch show
|
338
338
|
|
339
|
-
Shows you details about what can be
|
339
|
+
Shows you details about what can be improved in a specific object.
|
340
340
|
|
341
341
|
$ inch show Inch::SourceParser#find_object
|
342
342
|
|
@@ -472,7 +472,7 @@ Inch would not exist without Loren Segal's [YARD](http://yardoc.org/).
|
|
472
472
|
|
473
473
|
## License
|
474
474
|
|
475
|
-
Inch is released under the MIT License. See the LICENSE
|
475
|
+
Inch is released under the MIT License. See the LICENSE file for further
|
476
476
|
details.
|
477
477
|
|
478
478
|
For YARD's licensing, see YARD's README under http://yardoc.org/
|
data/config/ruby.rb
CHANGED
@@ -55,7 +55,18 @@ Inch::Config.register(:ruby) do
|
|
55
55
|
return_description 0.0
|
56
56
|
end
|
57
57
|
|
58
|
-
if
|
58
|
+
if object.setter?
|
59
|
+
return_description return_description + parameters
|
60
|
+
|
61
|
+
if object.original_docstring == ""
|
62
|
+
# we don't count parameters when the docstring is missing or implicit
|
63
|
+
parameters 0.0
|
64
|
+
else
|
65
|
+
parameters parameters + return_description
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
if !object.has_parameters?
|
59
70
|
return_description docstring + parameters
|
60
71
|
docstring docstring + parameters
|
61
72
|
parameters 0.0
|
data/lib/inch/api/diff.rb
CHANGED
@@ -7,6 +7,8 @@ module Inch
|
|
7
7
|
class Diff
|
8
8
|
include Utils::ShellHelper
|
9
9
|
|
10
|
+
GIT_SUBDIR = ".git"
|
11
|
+
|
10
12
|
attr_reader :codebase_old
|
11
13
|
attr_reader :codebase_new
|
12
14
|
attr_reader :comparer
|
@@ -18,13 +20,18 @@ module Inch
|
|
18
20
|
# one is compared against
|
19
21
|
def initialize(dir, config, before_rev, after_rev = nil)
|
20
22
|
@work_dir = dir
|
21
|
-
@codebase_old = codebase_for(before_rev, config)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
if @codebase_old = codebase_for(before_rev, config)
|
24
|
+
@codebase_new = if after_rev.nil?
|
25
|
+
Codebase.parse(work_dir, config)
|
26
|
+
else
|
27
|
+
codebase_for(after_rev, config)
|
28
|
+
end
|
29
|
+
@comparer = API::Compare::Codebases.new(@codebase_old, @codebase_new)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def failed?
|
34
|
+
@comparer.nil?
|
28
35
|
end
|
29
36
|
|
30
37
|
private
|
@@ -33,10 +40,11 @@ module Inch
|
|
33
40
|
if (cached = codebase_from_cache(revision))
|
34
41
|
cached
|
35
42
|
else
|
36
|
-
codebase = codebase_from_copy(work_dir, config, revision)
|
37
|
-
|
38
|
-
|
39
|
-
|
43
|
+
if codebase = codebase_from_copy(work_dir, config, revision)
|
44
|
+
filename = Codebase::Serializer.filename(revision)
|
45
|
+
Codebase::Serializer.save(codebase, filename)
|
46
|
+
codebase
|
47
|
+
end
|
40
48
|
end
|
41
49
|
end
|
42
50
|
|
@@ -46,6 +54,8 @@ module Inch
|
|
46
54
|
end
|
47
55
|
|
48
56
|
def codebase_from_copy(original_dir, config, revision)
|
57
|
+
return unless File.exist?( File.join(original_dir, GIT_SUBDIR) )
|
58
|
+
|
49
59
|
codebase = nil
|
50
60
|
Dir.mktmpdir do |tmp_dir|
|
51
61
|
new_dir = copy_work_dir(original_dir, tmp_dir)
|
@@ -8,12 +8,18 @@ module Inch
|
|
8
8
|
class Diff < Base
|
9
9
|
include Utils::ShellHelper
|
10
10
|
|
11
|
+
EXIT_STATUS_FAILED = 1
|
12
|
+
|
11
13
|
register_command_as :diff
|
12
14
|
|
13
15
|
def description
|
14
16
|
'Shows a diff'
|
15
17
|
end
|
16
18
|
|
19
|
+
def exit_status
|
20
|
+
@exit_status || super
|
21
|
+
end
|
22
|
+
|
17
23
|
def usage
|
18
24
|
'Usage: inch diff [REV..[REV]] [options]'
|
19
25
|
end
|
@@ -27,6 +33,8 @@ module Inch
|
|
27
33
|
before_rev, after_rev)
|
28
34
|
|
29
35
|
Output::Diff.new(@options, diff.comparer)
|
36
|
+
|
37
|
+
@exit_status = EXIT_STATUS_FAILED if diff.failed?
|
30
38
|
end
|
31
39
|
|
32
40
|
private
|
@@ -11,8 +11,16 @@ module Inch
|
|
11
11
|
# @param comparer [API::Compare::Codebases]
|
12
12
|
def initialize(options, comparer)
|
13
13
|
@options = options
|
14
|
-
@comparer = comparer
|
14
|
+
if @comparer = comparer
|
15
|
+
display_diff
|
16
|
+
else
|
17
|
+
display_failure
|
18
|
+
end
|
19
|
+
end
|
15
20
|
|
21
|
+
private
|
22
|
+
|
23
|
+
def display_diff
|
16
24
|
added = @comparer.added_objects
|
17
25
|
improved = @comparer.improved_objects
|
18
26
|
degraded = @comparer.degraded_objects
|
@@ -24,7 +32,10 @@ module Inch
|
|
24
32
|
end
|
25
33
|
end
|
26
34
|
|
27
|
-
|
35
|
+
def display_failure
|
36
|
+
ui.trace 'Could not diff current directory.'
|
37
|
+
ui.trace 'To use `inch diff` please run it from the repository root containing .git!'
|
38
|
+
end
|
28
39
|
|
29
40
|
def show(added, improved, degraded)
|
30
41
|
unless added.empty? && improved.empty?
|
@@ -42,7 +42,12 @@ module Inch
|
|
42
42
|
a
|
43
43
|
else
|
44
44
|
if a == '\\\\'
|
45
|
-
|
45
|
+
candidate = b.first
|
46
|
+
if candidate.is_a?(Array)
|
47
|
+
name_from_tuple(*candidate)
|
48
|
+
else
|
49
|
+
candidate
|
50
|
+
end
|
46
51
|
else
|
47
52
|
warn "[WARN] could not parse FunctionSignature: #{[a, _, b].inspect}"
|
48
53
|
end
|
data/lib/inch/version.rb
CHANGED
@@ -17,6 +17,14 @@ module InchTest
|
|
17
17
|
def manual_setter=(val)
|
18
18
|
end
|
19
19
|
|
20
|
+
# @param val [String] the manual setter
|
21
|
+
def manual_setter_full_doc_via_param=(val)
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [String] the manual setter
|
25
|
+
def manual_setter_full_doc_via_return=(val)
|
26
|
+
end
|
27
|
+
|
20
28
|
attr_writer :attr_setter
|
21
29
|
|
22
30
|
def bang_method!
|
data/test/test_helper.rb
CHANGED
@@ -216,6 +216,20 @@ describe ::Inch::Language::Ruby::CodeObject::MethodObject do
|
|
216
216
|
assert_equal 0, m.score
|
217
217
|
end
|
218
218
|
|
219
|
+
it 'should recognize a manually defined setter method that is docced via param' do
|
220
|
+
m = @objects.find('InchTest#manual_setter_full_doc_via_param=')
|
221
|
+
refute m.getter?
|
222
|
+
assert m.setter?, 'should be a setter'
|
223
|
+
assert m.score >= 80, "score was #{m.score}"
|
224
|
+
end
|
225
|
+
|
226
|
+
it 'should recognize a manually defined setter method that is docced via return' do
|
227
|
+
m = @objects.find('InchTest#manual_setter_full_doc_via_return=')
|
228
|
+
refute m.getter?
|
229
|
+
assert m.setter?, 'should be a setter'
|
230
|
+
assert m.score >= 80, "score was #{m.score}"
|
231
|
+
end
|
232
|
+
|
219
233
|
it 'should recognize a getter in a manually defined getter/setter pair' do
|
220
234
|
m = @objects.find('InchTest#manual_getset')
|
221
235
|
assert m.getter?, 'should be a getter'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- René Föhring
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|