private_please 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +3 -5
  4. data/CHANGELOG +4 -0
  5. data/Gemfile +2 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +58 -98
  8. data/Rakefile +6 -2
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/lib/private_please/config.rb +15 -0
  12. data/lib/private_please/methods_calls_tracker.rb +44 -0
  13. data/lib/private_please/reporting/simple_text.rb +43 -0
  14. data/lib/private_please/reporting/templates/simple.txt.erb +11 -0
  15. data/lib/private_please/storage/called_methods_memory_store.rb +20 -0
  16. data/lib/private_please/tracking/debug/trace_point_data_logger.rb +81 -0
  17. data/lib/private_please/tracking/method_details.rb +27 -0
  18. data/lib/private_please/tracking/result.rb +25 -0
  19. data/lib/private_please/tracking/trace_point_details.rb +41 -0
  20. data/lib/private_please/tracking/trace_point_processor.rb +71 -0
  21. data/lib/private_please/utils/ruby_utils.rb +44 -0
  22. data/lib/private_please/utils/source_file_utils.rb +20 -0
  23. data/lib/private_please/utils/two_level_stack.rb +13 -0
  24. data/lib/private_please/version.rb +2 -1
  25. data/lib/private_please.rb +27 -34
  26. data/private_please.gemspec +32 -25
  27. metadata +106 -185
  28. data/Guardfile +0 -8
  29. data/LICENSE +0 -22
  30. data/TODO +0 -20
  31. data/bin/pp_ruby +0 -62
  32. data/bin/ruby_pp +0 -62
  33. data/doc/dev_notes.txt +0 -32
  34. data/doc/fixtures/complex.rb +0 -103
  35. data/doc/fixtures/empty_class.rb +0 -7
  36. data/doc/fixtures/fixture_helper.rb +0 -8
  37. data/doc/fixtures/sample.rb +0 -57
  38. data/lib/private_please/candidate.rb +0 -49
  39. data/lib/private_please/report/table.rb +0 -44
  40. data/lib/private_please/report.rb +0 -6
  41. data/lib/private_please/reporter/base.rb +0 -14
  42. data/lib/private_please/reporter/data_compiler.rb +0 -82
  43. data/lib/private_please/reporter/helpers/options_helpers.rb +0 -37
  44. data/lib/private_please/reporter/helpers/text_table_helpers.rb +0 -9
  45. data/lib/private_please/reporter/simple_text.rb +0 -18
  46. data/lib/private_please/reporter/templates/simple.txt.erb +0 -80
  47. data/lib/private_please/reporter.rb +0 -8
  48. data/lib/private_please/ruby_backports.rb +0 -22
  49. data/lib/private_please/storage/calls_store.rb +0 -41
  50. data/lib/private_please/storage/candidates_store.rb +0 -52
  51. data/lib/private_please/storage/methods_names.rb +0 -10
  52. data/lib/private_please/storage/methods_names_bucket.rb +0 -69
  53. data/lib/private_please/storage.rb +0 -8
  54. data/lib/private_please/tracking/extension.rb +0 -12
  55. data/lib/private_please/tracking/instrumentor.rb +0 -49
  56. data/lib/private_please/tracking/instruments_all_methods_below.rb +0 -28
  57. data/lib/private_please/tracking/instruments_automatically_all_methods_in_all_classes.rb +0 -68
  58. data/lib/private_please/tracking/line_change_tracker.rb +0 -26
  59. data/lib/private_please/tracking/load_utils/gem_utils.rb +0 -49
  60. data/lib/private_please/tracking/load_utils/standard_lib_utils.rb +0 -38
  61. data/lib/private_please/tracking/load_utils.rb +0 -32
  62. data/lib/private_please/tracking/utils.rb +0 -34
  63. data/lib/private_please/tracking.rb +0 -49
  64. data/sample.rb +0 -68
  65. data/spec/01_tracking_candidate_methods/excluding_gems_and_standard_libraries_spec.rb +0 -31
  66. data/spec/01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb +0 -118
  67. data/spec/01_tracking_candidate_methods/load_utils_spec.rb +0 -40
  68. data/spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb +0 -185
  69. data/spec/03_logging_calls_on_candidate_methods_spec.rb +0 -37
  70. data/spec/04_instrumented_program_activity_observation_result_spec.rb +0 -86
  71. data/spec/05_reporting/report_table_spec.rb +0 -51
  72. data/spec/06_at_exit_spec.rb +0 -18
  73. data/spec/_helpers/assert_helpers.rb +0 -76
  74. data/spec/fixtures/bug_22.rb +0 -17
  75. data/spec/fixtures/bug_30.rb +0 -6
  76. data/spec/fixtures/issue_25.rb +0 -12
  77. data/spec/fixtures/sample_class_for_report.rb +0 -56
  78. data/spec/fixtures/sample_class_with_all_calls_combinations.rb +0 -69
  79. data/spec/sandbox/Gemfile +0 -4
  80. data/spec/sandbox/Gemfile.lock +0 -14
  81. data/spec/sandbox/README.txt +0 -26
  82. data/spec/sandbox/normal.rb +0 -7
  83. data/spec/sandbox/normal_prepended_with_require.rb +0 -8
  84. data/spec/spec_helper.rb +0 -38
  85. data/spec/units/calls_store_spec.rb +0 -15
  86. data/spec/units/candidates_store_spec.rb +0 -55
  87. data/spec/units/reporter/data_compiler_spec.rb +0 -12
  88. data/spec/units/reporter/fixtures/simple_case_1.rb +0 -30
  89. data/spec/units/reporter/fixtures/simple_case_2.rb +0 -55
@@ -0,0 +1,27 @@
1
+ require 'private_please/utils/ruby_utils'
2
+ require 'private_please/utils/source_file_utils'
3
+
4
+ module PrivatePlease
5
+ module Tracking
6
+ class MethodDetails < Struct.new(:klass, :separator, :method, :source_path, :lineno)
7
+ METHOD_AS_KEY_PATTERN = /(?<klass>.*)
8
+ (?<separator>[#.])
9
+ (?<method>.*)
10
+ /x
11
+
12
+ def self.from_class_plus_method(class_plus_method)
13
+ md = class_plus_method.match(METHOD_AS_KEY_PATTERN)
14
+ klass = Object.const_get(md[:klass])
15
+ separator = md[:separator]
16
+ method = md[:method].to_sym
17
+ source_path, lineno = Utils::SourceFileUtils.source_path_and_lineno(klass, separator, method)
18
+
19
+ new(klass, separator, method, source_path, lineno)
20
+ end
21
+
22
+ def separator_plus_method
23
+ "#{separator}#{method}"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ require 'private_please/tracking/method_details'
2
+
3
+ module PrivatePlease
4
+ module Tracking
5
+ class Result
6
+ def initialize(encountered_method_calls)
7
+ @private_calls = encountered_method_calls.private_calls
8
+ @public_calls = encountered_method_calls.public_calls
9
+ end
10
+
11
+ def public_methods_only_called_privately
12
+ @private_calls - @public_calls
13
+ end
14
+
15
+ def to_two_level_hash
16
+ two_level_hash = Hash.new { |h, k| h[k] = {} }
17
+ public_methods_only_called_privately.each do |class_plus_method|
18
+ md = MethodDetails.from_class_plus_method(class_plus_method)
19
+ two_level_hash[md.klass][md.separator_plus_method] = [md.source_path, md.lineno]
20
+ end
21
+ two_level_hash.delete_if { |_k, v| v.empty? }
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,41 @@
1
+ module PrivatePlease
2
+ module Tracking
3
+ class TracePointDetails < Struct.new(:event, :object_id, :path, :lineno, :defined_class, :method_id, :_self)
4
+ def self.from(tp)
5
+ new(tp.event, tp.self.object_id, tp.path, tp.lineno, tp.defined_class, tp.method_id, tp.self)
6
+ end
7
+
8
+ def same_object?(other)
9
+ object_id == other.object_id
10
+ end
11
+
12
+ def code
13
+ @_code ||= File.readlines(path)[lineno - 1].chomp
14
+ end
15
+
16
+ # Combine the class and method name with the proper separator
17
+ # Examples:
18
+ # Array#new
19
+ # Array.size
20
+ def method_full_name
21
+ if module_method?
22
+ instance_method = defined_class.instance_methods.include?(method_id)
23
+ instance_method ?
24
+ "#{defined_class}##{method_id}" :
25
+ "#{defined_class}.#{method_id}"
26
+ else
27
+ instance_method = !(_self.class == Class)
28
+ instance_method ?
29
+ "#{defined_class}##{method_id}" :
30
+ "#{_self}.#{method_id}"
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def module_method?
37
+ defined_class.instance_of?(Module)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,71 @@
1
+ require 'private_please/config'
2
+ require 'private_please/storage/called_methods_memory_store'
3
+ require 'private_please/tracking/debug/trace_point_data_logger'
4
+ require 'private_please/tracking/result'
5
+ require 'private_please/tracking/trace_point_details'
6
+ require 'private_please/utils/two_level_stack'
7
+
8
+ module PrivatePlease
9
+ module Tracking
10
+ class TracePointProcessor
11
+ def initialize(config)
12
+ @config = config
13
+
14
+ @latest_tracepoints = Utils::TwoLevelStack.new
15
+ @encountered_method_calls = Storage::CalledMethodsMemoryStore.new
16
+ end
17
+
18
+ def process(tp)
19
+ return if untracked_code?(tp.path)
20
+ remember_trace_point tp
21
+ store_method_call_details if tp.event == :call
22
+ end
23
+
24
+ def result
25
+ Result.new(@encountered_method_calls)
26
+ end
27
+
28
+ private
29
+
30
+ def remember_trace_point(tp)
31
+ @latest_tracepoints.push TracePointDetails.from(tp)
32
+ # Debug.log_to_trace_file tpd if Debug.enabled?
33
+ end
34
+
35
+ def untracked_code?(path)
36
+ path.start_with?(*untracked_source_dirs)
37
+ end
38
+
39
+ def untracked_source_dirs
40
+ @_untracked_source_dirs ||= begin
41
+ Utils::RubyUtils.gems_paths +
42
+ Array(Utils::RubyUtils.std_lib_home) +
43
+ @config.additional_excluded_dirs
44
+ end
45
+ end
46
+
47
+ def tp_curr; @latest_tracepoints.curr end
48
+ def tp_prev; @latest_tracepoints.prev end
49
+
50
+ def store_method_call_details
51
+ key = tp_curr.method_full_name
52
+ if private_call?
53
+ @encountered_method_calls.add_private_call(key) unless already_private?
54
+ else
55
+ @encountered_method_calls.add_public_call(key)
56
+ end
57
+ end
58
+
59
+ def private_call?
60
+ curr_event, prev_event = tp_curr.event, tp_prev.event
61
+ (curr_event == :call) &&
62
+ [:line, :return, :c_return].include?(prev_event) &&
63
+ tp_curr.same_object?(tp_prev)
64
+ end
65
+
66
+ def already_private?
67
+ tp_curr._self.private_methods.include?(tp_curr.method_id)
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,44 @@
1
+ require 'yaml'
2
+
3
+ module PrivatePlease
4
+ module Utils
5
+ module RubyUtils
6
+ module_function
7
+
8
+ def gem_env
9
+ @_gem_env ||= begin
10
+ `gem env`
11
+ end
12
+ end
13
+
14
+ # Ex: "/Users/ara/.rbenv/versions/jruby-1.7.3/lib/ruby/1.9"
15
+ def std_lib_home
16
+ @_std_lib_home ||= begin
17
+ basedir = ruby_executable_path.gsub(/bin\/[j]?ruby/, 'lib/ruby')
18
+ # => "/Users/ara/.rbenv/versions/jruby-1.7.3/lib/ruby"
19
+ # jruby has 2+ directories of std. libs under the basedir : 1.8 and 1.9
20
+ $LOAD_PATH.detect do |path| # We choose the one that is also in the load path.
21
+ path =~ /#{basedir}\/[12][^\/]+$/ #
22
+ end # ^^^^^^^^^^ # => "/Users/ara/.rbenv/versions/jruby-1.7.3/lib/ruby/1.9"
23
+ end # ^^^ == the mode
24
+ end
25
+
26
+ # - GEM PATHS:
27
+ # - /Users/alain/.rvm/gems/ruby-2.3.0
28
+ # - /Users/alain/.rvm/gems/ruby-2.3.0@global
29
+
30
+ def gems_paths
31
+ @_gems_paths ||= YAML.load(gem_env)['RubyGems Environment'].detect do |hash|
32
+ hash['GEM PATHS']
33
+ end['GEM PATHS']
34
+ end
35
+
36
+ # Ex: "/Users/ara/.rbenv/versions/jruby-1.7.3/bin/jruby"
37
+ def ruby_executable_path
38
+ @_ruby_executable_path ||= gem_env.match(/RUBY EXECUTABLE:\s*(.*)/)[1]
39
+ end
40
+
41
+ private_class_method :ruby_executable_path
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,20 @@
1
+ module PrivatePlease
2
+ module Utils
3
+ module SourceFileUtils
4
+ module_function
5
+
6
+ def source_path_and_lineno(klass, separator, method)
7
+ is_instance_method = separator == '#'
8
+ if klass.instance_of?(Module)
9
+ is_instance_method ?
10
+ klass.instance_method(method).source_location :
11
+ klass.singleton_method(method).source_location
12
+ else
13
+ is_instance_method ?
14
+ klass.instance_method(method).source_location :
15
+ klass.method(method).source_location
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ module PrivatePlease
2
+ module Utils
3
+ class TwoLevelStack
4
+ def push(value)
5
+ @cell_2 = @cell_1
6
+ @cell_1 = value
7
+ end
8
+
9
+ def curr; @cell_1 end
10
+ def prev; @cell_2 end
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module PrivatePlease
2
- VERSION = "0.0.5"
3
+ VERSION = '0.1.0'.freeze
3
4
  end
@@ -1,51 +1,44 @@
1
1
  require 'private_please/version'
2
- require 'private_please/ruby_backports'
3
- require 'private_please/candidate'
4
- require 'private_please/storage'
5
- require 'private_please/report'
6
- require 'private_please/reporter'
7
-
8
- at_exit do
9
- PrivatePlease.at_exit
10
- end
2
+ require 'private_please/methods_calls_tracker'
3
+ require 'private_please/reporting/simple_text'
11
4
 
12
5
  module PrivatePlease
6
+ def self.instance
7
+ MethodsCallsTracker.instance
8
+ end
13
9
 
14
- def self.install
15
- Module.send :include, PrivatePlease::Tracking::Extension
16
- PrivatePlease.pp_automatic_mode_enable
17
- set_trace_func PrivatePlease::Tracking::LineChangeTracker::MY_TRACE_FUN
10
+ def self.reset
11
+ MethodsCallsTracker.reset
18
12
  end
19
13
 
20
- def self.pp_automatic_mode_enabled? ; !!$pp_automatic_mode_enabled end
21
- def self.pp_automatic_mode_enable(value=true)
22
- $pp_automatic_mode_enabled = value
14
+ def self.report
15
+ Reporting::SimpleText.new(instance.result).text
23
16
  end
24
- def self.pp_automatic_mode_disable ; $pp_automatic_mode_enabled = false end
25
17
 
26
- # TODO : replace class methods by PP instance + instance methods
27
- def self.calls_store
28
- @@_calls_store ||= Storage::CallsStore.new
18
+ def self.config
19
+ instance.config
29
20
  end
30
21
 
31
- def self.candidates_store
32
- @@_candidates_store ||= Storage::CandidatesStore.new
22
+ def self.track(reset: true, &block)
23
+ reset if reset
24
+ start_tracking
25
+ block.call
26
+ stop_tracking
33
27
  end
34
28
 
35
- def self.reset
36
- @@_candidates_store = @@_calls_store = nil
37
- Tracking::LineChangeTracker.reset
38
- set_trace_func nil
29
+ def self.start_tracking
30
+ instance.start_tracking
39
31
  end
40
32
 
41
- def self.at_exit
42
- report = PrivatePlease::Reporter::SimpleText.new(PrivatePlease.candidates_store, PrivatePlease.calls_store)
43
- unless $private_please_tests_are_running
44
- $stdout.puts report.text
45
- end
33
+ def self.stop_tracking
34
+ instance.stop_tracking
46
35
  end
47
- end
48
36
 
49
- require 'private_please/tracking'
37
+ def self.exclude_dir(val)
38
+ config.exclude_dir val
39
+ end
50
40
 
51
- PrivatePlease.install
41
+ def self.privatazable_methods
42
+ instance.result.to_two_level_hash
43
+ end
44
+ end
@@ -1,28 +1,35 @@
1
- # -*- encoding: utf-8 -*-
2
- if RUBY_VERSION == '1.8.7'
3
- # avoid double-require of version.rb - see http://bit.ly/18lspBV
4
- $:.unshift File.expand_path("../lib", __FILE__)
5
- require "private_please/version"
6
- else
7
- require File.expand_path('../lib/private_please/version', __FILE__)
8
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'private_please/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'private_please'
8
+ spec.version = PrivatePlease::VERSION
9
+ spec.authors = ['Alain Ravet']
10
+ spec.email = ['alainravet@gmail.com']
9
11
 
10
- Gem::Specification.new do |gem|
11
- gem.authors = ["Alain Ravet"]
12
- gem.email = ["alainravet@gmail.com"]
13
- gem.description = %q{Test if methods can be made private}
14
- gem.summary = %q{Test if methods can be made private}
15
- gem.homepage = "https://github.com/alainravet/private_please"
12
+ spec.summary = 'Identify dynamically methods that can be made private.'
13
+ spec.description = 'Identify dynamically methods that can be made private.'
14
+ spec.homepage = 'https://github.com/alainravet/private_please'
15
+ spec.license = 'MIT'
16
16
 
17
- gem.files = `git ls-files`.split($\)
18
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
- gem.name = "private_please"
21
- gem.require_paths = ["lib"]
22
- gem.version = PrivatePlease::VERSION
17
+ # # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # # delete this section to allow pushing this gem to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ # else
22
+ # fail 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
23
+ # end
23
24
 
24
- gem.add_development_dependency 'rake' # to run 'All specs' in Rubymine
25
- gem.add_development_dependency 'rspec'
26
- gem.add_development_dependency 'guard-rspec'
27
- gem.add_development_dependency 'rb-fsevent'
28
- end
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec)/}) }
26
+ spec.bindir = 'exe'
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ['lib']
29
+
30
+ spec.add_development_dependency 'bundler', '~> 1.11'
31
+ spec.add_development_dependency 'rake', '~> 10.0'
32
+ spec.add_development_dependency 'rspec', '~> 3.0'
33
+ spec.add_development_dependency 'coderay'
34
+ spec.add_development_dependency 'sinatra'
35
+ end
metadata CHANGED
@@ -1,220 +1,141 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: private_please
3
- version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 5
10
- version: 0.0.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Alain Ravet
14
8
  autorequire:
15
- bindir: bin
9
+ bindir: exe
16
10
  cert_chain: []
17
-
18
- date: 2013-05-06 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: rake
11
+ date: 2016-02-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
23
21
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
33
34
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
36
42
  name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
37
49
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coderay
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
41
59
  - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: guard-rspec
51
63
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
55
66
  - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
61
76
  type: :development
62
- version_requirements: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: rb-fsevent
65
77
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
69
80
  - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
75
- type: :development
76
- version_requirements: *id004
77
- description: Test if methods can be made private
78
- email:
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Identify dynamically methods that can be made private.
84
+ email:
79
85
  - alainravet@gmail.com
80
- executables:
81
- - pp_ruby
82
- - ruby_pp
86
+ executables: []
83
87
  extensions: []
84
-
85
88
  extra_rdoc_files: []
86
-
87
- files:
88
- - .gitignore
89
- - .rspec
90
- - .ruby-version
91
- - .travis.yml
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".ruby-version"
93
+ - ".travis.yml"
92
94
  - CHANGELOG
93
95
  - Gemfile
94
- - Guardfile
95
- - LICENSE
96
+ - LICENSE.txt
96
97
  - README.md
97
98
  - Rakefile
98
- - TODO
99
- - bin/pp_ruby
100
- - bin/ruby_pp
101
- - doc/dev_notes.txt
102
- - doc/fixtures/complex.rb
103
- - doc/fixtures/empty_class.rb
104
- - doc/fixtures/fixture_helper.rb
105
- - doc/fixtures/sample.rb
99
+ - bin/console
100
+ - bin/setup
106
101
  - lib/private_please.rb
107
- - lib/private_please/candidate.rb
108
- - lib/private_please/report.rb
109
- - lib/private_please/report/table.rb
110
- - lib/private_please/reporter.rb
111
- - lib/private_please/reporter/base.rb
112
- - lib/private_please/reporter/data_compiler.rb
113
- - lib/private_please/reporter/helpers/options_helpers.rb
114
- - lib/private_please/reporter/helpers/text_table_helpers.rb
115
- - lib/private_please/reporter/simple_text.rb
116
- - lib/private_please/reporter/templates/simple.txt.erb
117
- - lib/private_please/ruby_backports.rb
118
- - lib/private_please/storage.rb
119
- - lib/private_please/storage/calls_store.rb
120
- - lib/private_please/storage/candidates_store.rb
121
- - lib/private_please/storage/methods_names.rb
122
- - lib/private_please/storage/methods_names_bucket.rb
123
- - lib/private_please/tracking.rb
124
- - lib/private_please/tracking/extension.rb
125
- - lib/private_please/tracking/instrumentor.rb
126
- - lib/private_please/tracking/instruments_all_methods_below.rb
127
- - lib/private_please/tracking/instruments_automatically_all_methods_in_all_classes.rb
128
- - lib/private_please/tracking/line_change_tracker.rb
129
- - lib/private_please/tracking/load_utils.rb
130
- - lib/private_please/tracking/load_utils/gem_utils.rb
131
- - lib/private_please/tracking/load_utils/standard_lib_utils.rb
132
- - lib/private_please/tracking/utils.rb
102
+ - lib/private_please/config.rb
103
+ - lib/private_please/methods_calls_tracker.rb
104
+ - lib/private_please/reporting/simple_text.rb
105
+ - lib/private_please/reporting/templates/simple.txt.erb
106
+ - lib/private_please/storage/called_methods_memory_store.rb
107
+ - lib/private_please/tracking/debug/trace_point_data_logger.rb
108
+ - lib/private_please/tracking/method_details.rb
109
+ - lib/private_please/tracking/result.rb
110
+ - lib/private_please/tracking/trace_point_details.rb
111
+ - lib/private_please/tracking/trace_point_processor.rb
112
+ - lib/private_please/utils/ruby_utils.rb
113
+ - lib/private_please/utils/source_file_utils.rb
114
+ - lib/private_please/utils/two_level_stack.rb
133
115
  - lib/private_please/version.rb
134
116
  - private_please.gemspec
135
- - sample.rb
136
- - spec/01_tracking_candidate_methods/excluding_gems_and_standard_libraries_spec.rb
137
- - spec/01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb
138
- - spec/01_tracking_candidate_methods/load_utils_spec.rb
139
- - spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb
140
- - spec/03_logging_calls_on_candidate_methods_spec.rb
141
- - spec/04_instrumented_program_activity_observation_result_spec.rb
142
- - spec/05_reporting/report_table_spec.rb
143
- - spec/06_at_exit_spec.rb
144
- - spec/_helpers/assert_helpers.rb
145
- - spec/fixtures/bug_22.rb
146
- - spec/fixtures/bug_30.rb
147
- - spec/fixtures/issue_25.rb
148
- - spec/fixtures/sample_class_for_report.rb
149
- - spec/fixtures/sample_class_with_all_calls_combinations.rb
150
- - spec/sandbox/Gemfile
151
- - spec/sandbox/Gemfile.lock
152
- - spec/sandbox/README.txt
153
- - spec/sandbox/normal.rb
154
- - spec/sandbox/normal_prepended_with_require.rb
155
- - spec/spec_helper.rb
156
- - spec/units/calls_store_spec.rb
157
- - spec/units/candidates_store_spec.rb
158
- - spec/units/reporter/data_compiler_spec.rb
159
- - spec/units/reporter/fixtures/simple_case_1.rb
160
- - spec/units/reporter/fixtures/simple_case_2.rb
161
- has_rdoc: true
162
117
  homepage: https://github.com/alainravet/private_please
163
- licenses: []
164
-
118
+ licenses:
119
+ - MIT
120
+ metadata: {}
165
121
  post_install_message:
166
122
  rdoc_options: []
167
-
168
- require_paths:
123
+ require_paths:
169
124
  - lib
170
- required_ruby_version: !ruby/object:Gem::Requirement
171
- none: false
172
- requirements:
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
173
127
  - - ">="
174
- - !ruby/object:Gem::Version
175
- hash: 3
176
- segments:
177
- - 0
178
- version: "0"
179
- required_rubygems_version: !ruby/object:Gem::Requirement
180
- none: false
181
- requirements:
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
182
132
  - - ">="
183
- - !ruby/object:Gem::Version
184
- hash: 3
185
- segments:
186
- - 0
187
- version: "0"
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
188
135
  requirements: []
189
-
190
136
  rubyforge_project:
191
- rubygems_version: 1.6.2
137
+ rubygems_version: 2.5.1
192
138
  signing_key:
193
- specification_version: 3
194
- summary: Test if methods can be made private
195
- test_files:
196
- - spec/01_tracking_candidate_methods/excluding_gems_and_standard_libraries_spec.rb
197
- - spec/01_tracking_candidate_methods/explicitely_with_the_private_please_command_spec.rb
198
- - spec/01_tracking_candidate_methods/load_utils_spec.rb
199
- - spec/01_tracking_candidate_methods/systematically_in_auto_mode_spec.rb
200
- - spec/03_logging_calls_on_candidate_methods_spec.rb
201
- - spec/04_instrumented_program_activity_observation_result_spec.rb
202
- - spec/05_reporting/report_table_spec.rb
203
- - spec/06_at_exit_spec.rb
204
- - spec/_helpers/assert_helpers.rb
205
- - spec/fixtures/bug_22.rb
206
- - spec/fixtures/bug_30.rb
207
- - spec/fixtures/issue_25.rb
208
- - spec/fixtures/sample_class_for_report.rb
209
- - spec/fixtures/sample_class_with_all_calls_combinations.rb
210
- - spec/sandbox/Gemfile
211
- - spec/sandbox/Gemfile.lock
212
- - spec/sandbox/README.txt
213
- - spec/sandbox/normal.rb
214
- - spec/sandbox/normal_prepended_with_require.rb
215
- - spec/spec_helper.rb
216
- - spec/units/calls_store_spec.rb
217
- - spec/units/candidates_store_spec.rb
218
- - spec/units/reporter/data_compiler_spec.rb
219
- - spec/units/reporter/fixtures/simple_case_1.rb
220
- - spec/units/reporter/fixtures/simple_case_2.rb
139
+ specification_version: 4
140
+ summary: Identify dynamically methods that can be made private.
141
+ test_files: []