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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f5e51a1fb3956e91d0e804c28cbfb8c21dc1ef9
4
- data.tar.gz: fb07a2be558122b91bcb674381a3dbac81ab49e2
3
+ metadata.gz: 40896e039aaa1bfed752dc6d80b2df28e5e628e6
4
+ data.tar.gz: cdac11d21c63a5e3e86ae5d8194f43e8f5a44a85
5
5
  SHA512:
6
- metadata.gz: c6708035951911b83cecfec2ff1c885e7b9cfd73b148c36e48d827ac63ba520ff6159f4be9c73880e7bdfe7d17079bfbdc10251dc76b7e4b243abbb7fc3c644b
7
- data.tar.gz: 4c22485a4a3afa60aacaccc3be699737e34329c9ec168715547457131e29fc9fba881f99105bbe9db24f748f16cdd8319a13d3524615075009776d8a7454ecd1
6
+ metadata.gz: 61f6c799bafcbd6f2251712c7206ed7f1e24431af34d704b9e656cd31e73d46b7364577ff1b5380be36960b7b5c25ffb76705156012ced4d5c4f9b6888b96ce1
7
+ data.tar.gz: 9cad52e8dc6ebede402102cfe23a9b90f71c2e19229c7176126116bbb9e1b2c6f945a7b54b0e2a6a030bbdfab2f9c2db1a1822c0e0d8282fc64f56dd2bbf52f3
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.1
4
+
5
+ - Ruby: Setters can now be documented via their @param or @return
6
+ - Elixir: Fix bug regarding parameter name recognition
7
+
3
8
  ## 0.7.0
4
9
 
5
10
  BREAKING CHANGE:
data/Gemfile CHANGED
@@ -4,6 +4,5 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :test do
7
- gem 'simplecov', require: false
8
7
  gem 'rubocop', '~> 0.25.0', require: false
9
8
  end
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 approved in a specific object.
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.txt file for further
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/
@@ -55,7 +55,18 @@ Inch::Config.register(:ruby) do
55
55
  return_description 0.0
56
56
  end
57
57
 
58
- if !object.has_parameters? || object.setter?
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
@@ -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
- @codebase_new = if after_rev.nil?
23
- Codebase.parse(work_dir, config)
24
- else
25
- codebase_for(after_rev, config)
26
- end
27
- @comparer = API::Compare::Codebases.new(@codebase_old, @codebase_new)
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
- filename = Codebase::Serializer.filename(revision)
38
- Codebase::Serializer.save(codebase, filename)
39
- codebase
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
- private
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
- name_from_tuple(*b.first)
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
@@ -1,3 +1,3 @@
1
1
  module Inch
2
- VERSION = '0.7.0'
2
+ VERSION = '0.7.1'
3
3
  end
@@ -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!
@@ -1,5 +1,3 @@
1
- require 'simplecov'
2
-
3
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
2
 
5
3
  require 'minitest/autorun'
@@ -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.0
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: 2015-09-23 00:00:00.000000000 Z
11
+ date: 2016-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler