inch 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|