trace_location 0.10.0 → 0.12.0

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
  SHA256:
3
- metadata.gz: b1e2f74ef8aefad64a0a962c2a77dbd4a47d8992ca5ef027d0acf47da19e7c2a
4
- data.tar.gz: ad9b606d32f96289cb629f0c58f7324e9d9704e084f61fc9bbf2d689836eabee
3
+ metadata.gz: 0f72080e074e711ead889178f5bf03db6f01b2d1f2baee4c7a0017c8e1b374e2
4
+ data.tar.gz: 83d066fd0c05fd30488ab17a213d2e6cc871a6b2274e155dd3ee87f2c12cf7a6
5
5
  SHA512:
6
- metadata.gz: 9835516aba4ce712bd1ef3311947e315e052de1c6cd102967d06d740db127c459754339b92221b7a2904046a8fdfe8391e105ff8001af915b9cd67eef79da1b2
7
- data.tar.gz: 24d753f05e76317957adf43a6ab02024558af46f623a4ac548f22130b6bc7d450d238fca16d303986d3d70791b3f112919808f5de750a520c01978880826fe08
6
+ metadata.gz: d5ea1a2a317eeddd8a02b6013150a8969db58738b724004775f99d4a284cfdc394d620a81bff79063cd07cf295f42f4be98d62b3150c62da83fed95b3f51e6dc
7
+ data.tar.gz: 9fae9ec4eb6e18de78ffec2e94718fd8eb7b3d3fb8f46964aecce96da4fedfc5efe161d2ce2f514a201e0cb556b3e2759e1f7136a0c9c0b9ef655419e4bedd2a
data/.travis.yml CHANGED
@@ -3,8 +3,8 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.6.6
7
- - 2.7.1
6
+ - 2.6.7
7
+ - 2.7.3
8
8
  - ruby-head
9
9
  before_install: gem install bundler -v 2.1.4
10
10
 
data/Gemfile.lock CHANGED
@@ -1,43 +1,50 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- trace_location (0.10.0)
4
+ trace_location (0.12.0)
5
5
  method_source
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- ast (2.4.0)
11
- diff-lcs (1.3)
12
- jaro_winkler (1.5.2)
10
+ ast (2.4.2)
11
+ diff-lcs (1.5.0)
12
+ json (2.6.3)
13
13
  method_source (1.0.0)
14
- parallel (1.17.0)
15
- parser (2.6.3.0)
16
- ast (~> 2.4.0)
17
- rainbow (3.0.0)
18
- rake (13.0.1)
19
- rspec (3.8.0)
20
- rspec-core (~> 3.8.0)
21
- rspec-expectations (~> 3.8.0)
22
- rspec-mocks (~> 3.8.0)
23
- rspec-core (3.8.0)
24
- rspec-support (~> 3.8.0)
25
- rspec-expectations (3.8.3)
14
+ parallel (1.22.1)
15
+ parser (3.1.3.0)
16
+ ast (~> 2.4.1)
17
+ rainbow (3.1.1)
18
+ rake (13.0.6)
19
+ regexp_parser (2.6.1)
20
+ rexml (3.2.5)
21
+ rspec (3.12.0)
22
+ rspec-core (~> 3.12.0)
23
+ rspec-expectations (~> 3.12.0)
24
+ rspec-mocks (~> 3.12.0)
25
+ rspec-core (3.12.0)
26
+ rspec-support (~> 3.12.0)
27
+ rspec-expectations (3.12.0)
26
28
  diff-lcs (>= 1.2.0, < 2.0)
27
- rspec-support (~> 3.8.0)
28
- rspec-mocks (3.8.0)
29
+ rspec-support (~> 3.12.0)
30
+ rspec-mocks (3.12.1)
29
31
  diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.8.0)
31
- rspec-support (3.8.0)
32
- rubocop (0.71.0)
33
- jaro_winkler (~> 1.5.1)
32
+ rspec-support (~> 3.12.0)
33
+ rspec-support (3.12.0)
34
+ rubocop (1.40.0)
35
+ json (~> 2.3)
34
36
  parallel (~> 1.10)
35
- parser (>= 2.6)
37
+ parser (>= 3.1.2.1)
36
38
  rainbow (>= 2.2.2, < 4.0)
39
+ regexp_parser (>= 1.8, < 3.0)
40
+ rexml (>= 3.2.5, < 4.0)
41
+ rubocop-ast (>= 1.23.0, < 2.0)
37
42
  ruby-progressbar (~> 1.7)
38
- unicode-display_width (>= 1.4.0, < 1.7)
39
- ruby-progressbar (1.10.1)
40
- unicode-display_width (1.6.0)
43
+ unicode-display_width (>= 1.4.0, < 3.0)
44
+ rubocop-ast (1.24.0)
45
+ parser (>= 3.1.1.0)
46
+ ruby-progressbar (1.11.0)
47
+ unicode-display_width (2.3.0)
41
48
 
42
49
  PLATFORMS
43
50
  ruby
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/yhirano55/trace_location.svg?branch=master)](https://travis-ci.org/yhirano55/trace_location)
4
4
 
5
- TraceLocation helps you get tracing the source location of codes, and helps you can get reading the huge open souce libraries in Ruby.
5
+ TraceLocation helps you trace the source location to ease reading huge open-source libraries in Ruby.
6
6
 
7
7
  ## Installation
8
8
 
@@ -42,6 +42,7 @@ Then you can get logs like this: [.md](https://github.com/yhirano55/trace_locati
42
42
  | format | `:md`, `:log`, `:csv` (default: `:md`) | `:md` |
43
43
  | match | Regexp, Symbol, String or Array for allow list | `[:activerecord, :activesupport]` |
44
44
  | ignore | Regexp, Symbol, String or Array for deny list | `/bootsnap\|activesupport/` |
45
+ | methods | Symbol or Array of method names | `[:call]` |
45
46
 
46
47
  ## More examples
47
48
 
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'trace_location'
4
+ require 'trace_location/cli'
5
+
6
+ TraceLocation::CLI.new(ARGV).run
@@ -0,0 +1,59 @@
1
+ require 'optparse'
2
+
3
+ module TraceLocation
4
+ class CLI
5
+ attr_reader :argv
6
+
7
+ def initialize(argv)
8
+ @argv = argv
9
+ end
10
+
11
+ def run
12
+ opt = OptionParser.new
13
+ opt.on('-f FORMAT', '--format=FORMAT', 'Report format (default: :md)', &:to_sym)
14
+ opt.on('-m REGEXP', '--match=REGEXP') { |str| Regexp.new(str) }
15
+ opt.on('-i REGEXP', '--ignore=REGEXP') { |str| Regexp.new(str) }
16
+ opt.on('-d DIR', '--dest-dir=DIR')
17
+ opt.on('-e code')
18
+
19
+ params = {}
20
+ opt.order!(argv, into: params)
21
+ params.transform_keys! { |k| k.to_s.gsub('-', '_').to_sym }
22
+
23
+ if code = params.delete(:e)
24
+ exec_code code, params
25
+ else
26
+ file = argv.shift
27
+ unless file
28
+ puts opt.help
29
+ exit 1
30
+ end
31
+
32
+ exec_command file, params
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def exec_command(cmd, params)
39
+ path =
40
+ if File.exist?(cmd)
41
+ cmd
42
+ else
43
+ `which #{cmd}`.chomp
44
+ end
45
+
46
+ $PROGRAM_NAME = cmd
47
+
48
+ TraceLocation.trace(params) do
49
+ load path
50
+ end
51
+ end
52
+
53
+ def exec_code(code, params)
54
+ TraceLocation.trace(params) do
55
+ eval code
56
+ end
57
+ end
58
+ end
59
+ end
@@ -8,7 +8,8 @@ module TraceLocation
8
8
  Result = Struct.new(:events, :return_value)
9
9
 
10
10
  class << self
11
- def collect(match:, ignore:, &block)
11
+ def collect(match:, ignore:, methods:, &block)
12
+ methods = Array(methods) if methods
12
13
  events = []
13
14
  hierarchy = 0
14
15
  id = 0
@@ -18,6 +19,7 @@ module TraceLocation
18
19
  tracer = TracePoint.new(:call, :return) do |trace_point|
19
20
  next if match && !trace_point.path.to_s.match?(/#{Array(match).join('|')}/)
20
21
  next if ignore && trace_point.path.to_s.match?(/#{Array(ignore).join('|')}/)
22
+ next if methods && !methods.include?(trace_point.method_id)
21
23
 
22
24
  id += 1
23
25
  caller_loc = caller_locations(2, 1)[0]
@@ -26,7 +28,7 @@ module TraceLocation
26
28
  location_cache_key = "#{caller_path}:#{caller_lineno}"
27
29
 
28
30
  mes = extract_method_from(trace_point)
29
- next if mes.source_location[0] == '<internal:prelude>'
31
+ next if mes.source_location[0].match?(/\A(?:<internal:.+>|\(eval\))\z/)
30
32
 
31
33
  method_source = method_source_cache[mes] ||= remove_indent(mes.source)
32
34
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TraceLocation
4
- VERSION = '0.10.0'
4
+ VERSION = '0.12.0'
5
5
  end
@@ -16,8 +16,9 @@ module TraceLocation # :nodoc:
16
16
  def self.trace(options = {}, &block)
17
17
  match = options.delete(:match)
18
18
  ignore = options.delete(:ignore)
19
+ methods = options.delete(:methods)
19
20
 
20
- result = Collector.collect(match: match, ignore: ignore, &block)
21
+ result = Collector.collect(match: match, ignore: ignore, methods: methods, &block)
21
22
  Report.build(result.events, result.return_value, options).generate
22
23
  true
23
24
  rescue StandardError => e
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trace_location
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshiyuki Hirano
8
8
  - Misaki Shioi
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-06-20 00:00:00.000000000 Z
12
+ date: 2022-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: method_source
@@ -72,7 +72,8 @@ description: TraceLocation helps you get tracing the source location of codes, a
72
72
  email:
73
73
  - yhirano@me.com
74
74
  - shioi.mm@gmail.com
75
- executables: []
75
+ executables:
76
+ - trace_location
76
77
  extensions: []
77
78
  extra_rdoc_files: []
78
79
  files:
@@ -102,7 +103,9 @@ files:
102
103
  - examples/rendering_process/result.csv
103
104
  - examples/rendering_process/result.log
104
105
  - examples/rendering_process/result.md
106
+ - exe/trace_location
105
107
  - lib/trace_location.rb
108
+ - lib/trace_location/cli.rb
106
109
  - lib/trace_location/collector.rb
107
110
  - lib/trace_location/config.rb
108
111
  - lib/trace_location/event.rb
@@ -119,7 +122,7 @@ homepage: https://github.com/yhirano55/trace_location
119
122
  licenses:
120
123
  - MIT
121
124
  metadata: {}
122
- post_install_message:
125
+ post_install_message:
123
126
  rdoc_options: []
124
127
  require_paths:
125
128
  - lib
@@ -134,8 +137,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
137
  - !ruby/object:Gem::Version
135
138
  version: '0'
136
139
  requirements: []
137
- rubygems_version: 3.1.2
138
- signing_key:
140
+ rubygems_version: 3.3.26
141
+ signing_key:
139
142
  specification_version: 4
140
143
  summary: helps you get tracing the source location of codes
141
144
  test_files: []