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 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