analyst 0.0.1 → 0.13.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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -1
  3. data/.rspec +2 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/README.md +1 -0
  6. data/analyst.gemspec +12 -0
  7. data/lib/analyst/analyzer.rb +162 -0
  8. data/lib/analyst/cli.rb +42 -0
  9. data/lib/analyst/entity_parser/association.rb +24 -0
  10. data/lib/analyst/entity_parser/entities/class.rb +92 -0
  11. data/lib/analyst/entity_parser/entities/empty.rb +13 -0
  12. data/lib/analyst/entity_parser/entities/entity.rb +29 -0
  13. data/lib/analyst/entity_parser/entities/method.rb +16 -0
  14. data/lib/analyst/entity_parser/entities/module.rb +31 -0
  15. data/lib/analyst/formatters/base.rb +33 -0
  16. data/lib/analyst/formatters/csv.rb +43 -0
  17. data/lib/analyst/formatters/html.rb +87 -0
  18. data/lib/analyst/formatters/html_index.rb +47 -0
  19. data/lib/analyst/formatters/templates/index.html.haml +92 -0
  20. data/lib/analyst/formatters/templates/output.html.haml +114 -0
  21. data/lib/analyst/formatters/text.rb +56 -0
  22. data/lib/analyst/fukuzatsu/analyzer.rb +162 -0
  23. data/lib/analyst/fukuzatsu/cli.rb +42 -0
  24. data/lib/analyst/fukuzatsu/entity_parser/association.rb +24 -0
  25. data/lib/analyst/fukuzatsu/entity_parser/entities/class.rb +92 -0
  26. data/lib/analyst/fukuzatsu/entity_parser/entities/empty.rb +13 -0
  27. data/lib/analyst/fukuzatsu/entity_parser/entities/entity.rb +29 -0
  28. data/lib/analyst/fukuzatsu/entity_parser/entities/method.rb +16 -0
  29. data/lib/analyst/fukuzatsu/entity_parser/entities/module.rb +31 -0
  30. data/lib/analyst/fukuzatsu/formatters/base.rb +33 -0
  31. data/lib/analyst/fukuzatsu/formatters/csv.rb +43 -0
  32. data/lib/analyst/fukuzatsu/formatters/html.rb +87 -0
  33. data/lib/analyst/fukuzatsu/formatters/html_index.rb +47 -0
  34. data/lib/analyst/fukuzatsu/formatters/templates/index.html.haml +92 -0
  35. data/lib/analyst/fukuzatsu/formatters/templates/output.html.haml +114 -0
  36. data/lib/analyst/fukuzatsu/formatters/text.rb +56 -0
  37. data/lib/analyst/fukuzatsu/line_of_code.rb +19 -0
  38. data/lib/analyst/fukuzatsu/parsed_file.rb +85 -0
  39. data/lib/analyst/fukuzatsu/parsed_method.rb +32 -0
  40. data/lib/analyst/fukuzatsu/parser_original.rb +76 -0
  41. data/lib/analyst/fukuzatsu/rethink/parser.rb +346 -0
  42. data/lib/analyst/fukuzatsu/version.rb +3 -0
  43. data/lib/analyst/line_of_code.rb +19 -0
  44. data/lib/analyst/parsed_file.rb +85 -0
  45. data/lib/analyst/parsed_method.rb +32 -0
  46. data/lib/analyst/parser.rb +76 -0
  47. data/lib/analyst/rethink/parser.rb +346 -0
  48. data/lib/analyst/version.rb +1 -1
  49. data/lib/analyst.rb +17 -2
  50. data/spec/analyzer_spec.rb +122 -0
  51. data/spec/cli_spec.rb +48 -0
  52. data/spec/fixtures/eg_class.rb +8 -0
  53. data/spec/fixtures/eg_mod_class.rb +2 -0
  54. data/spec/fixtures/eg_mod_class_2.rb +5 -0
  55. data/spec/fixtures/eg_module.rb +2 -0
  56. data/spec/fixtures/module_with_class.rb +9 -0
  57. data/spec/fixtures/multiple_methods.rb +7 -0
  58. data/spec/fixtures/nested_methods.rb +8 -0
  59. data/spec/fixtures/program_1.rb +19 -0
  60. data/spec/fixtures/program_2.rb +25 -0
  61. data/spec/fixtures/program_3.rb +66 -0
  62. data/spec/fixtures/program_4.rb +1 -0
  63. data/spec/fixtures/single_class.rb +9 -0
  64. data/spec/fixtures/single_method.rb +3 -0
  65. data/spec/formatters/csv_spec.rb +37 -0
  66. data/spec/formatters/html_index_spec.rb +36 -0
  67. data/spec/formatters/html_spec.rb +48 -0
  68. data/spec/formatters/text_spec.rb +39 -0
  69. data/spec/parsed_file_spec.rb +67 -0
  70. data/spec/parsed_method_spec.rb +34 -0
  71. data/spec/spec_helper.rb +7 -0
  72. metadata +229 -2
@@ -0,0 +1,66 @@
1
+ require 'analyst'
2
+
3
+ class Breathalizer
4
+
5
+ INDICATORS = [
6
+ :if,
7
+ :def,
8
+ ]
9
+
10
+ attr_accessor :path_to_file, :edges, :nodes, :exits, :accumulator
11
+
12
+ def self.parse!(path_to_file)
13
+ new(path_to_file).parse
14
+ end
15
+
16
+ def initialize(path_to_file)
17
+ self.accumulator = []
18
+ self.edges = 0
19
+ self.nodes = 1
20
+ self.exits = 1
21
+ self.path_to_file = path_to_file
22
+ end
23
+
24
+ def file_contents
25
+ contents ||= File.open(path_to_file, "r").read
26
+ end
27
+
28
+ def parsed
29
+ @parsed ||= Parser::CurrentRuby.parse(file_contents)
30
+ end
31
+
32
+ def parse!
33
+ traverse(parsed)
34
+ complexity
35
+ end
36
+
37
+ def traverse(node)#, accumulator=[])
38
+
39
+ accumulator << node.type
40
+
41
+ if node.type == :if || node.type == :begin
42
+ self.edges += 2
43
+ self.nodes += 2
44
+ self.exits += 1
45
+ elsif node.type == :def
46
+ self.edges += 1
47
+ self.nodes += 1
48
+ self.exits += 1
49
+ end
50
+
51
+ node.children.each do |child|
52
+ if child.respond_to?(:type) || child.respond_to?(:children)
53
+ accumulator << child.type
54
+ traverse(child, accumulator)
55
+ else
56
+ end
57
+ end
58
+ end
59
+
60
+ def complexity
61
+ p "edges = #{self.edges}, nodes = #{self.nodes}, exits = #{self.exits}"
62
+ self.edges - self.nodes + exits
63
+ end
64
+
65
+ end
66
+
@@ -0,0 +1 @@
1
+ program_4.rb
@@ -0,0 +1,9 @@
1
+ class Gown
2
+ def initialize
3
+ @color = "White"
4
+ end
5
+
6
+ def color
7
+ return @color
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ def read_poem
2
+ return "I meant to find her when I came/Death had the same design"
3
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Formatters::Csv" do
4
+
5
+ let (:method_1) { ParsedMethod.new(
6
+ name: "initialize",
7
+ complexity: 13,
8
+ type: :instance
9
+ )
10
+ }
11
+ let (:method_2) { ParsedMethod.new(
12
+ name: "report",
13
+ complexity: 11,
14
+ type: :instance
15
+ )
16
+ }
17
+
18
+ let(:parsed_file) { Struct.new(:path_to_file, :class_name) }
19
+ let(:mock_parsed_file) { parsed_file.new("fred/foo.rb", "Foo") }
20
+ let (:formatter) { Formatters::Csv.new(mock_parsed_file) }
21
+
22
+ describe "#rows" do
23
+ it "returns comma-separated rows" do
24
+ allow(mock_parsed_file).to receive(:methods) { [method_1, method_2] }
25
+ expect(formatter.rows).to eq(
26
+ "fred/foo.rb,Foo,#initialize,13\r\nfred/foo.rb,Foo,#report,11"
27
+ )
28
+ end
29
+ end
30
+
31
+ describe "#file_extension" do
32
+ it "returns the proper extension" do
33
+ expect(formatter.file_extension).to eq ".csv"
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Formatters::HtmlIndex" do
4
+
5
+ let(:file_summary) {
6
+ [
7
+ {
8
+ results_file: "doc/analyst/file_1.rb.htm",
9
+ path_to_file: "file_1.rb",
10
+ class_name: "File_1",
11
+ complexity: 13
12
+ },
13
+ {
14
+ results_file: "doc/analyst/file_2.rb.htm",
15
+ path_to_file: "file_2.rb",
16
+ class_name: "File_2",
17
+ complexity: 11
18
+ }
19
+ ]
20
+ }
21
+
22
+ let (:formatter) { Formatters::HtmlIndex.new(file_summary) }
23
+
24
+ describe "#initialize" do
25
+ it "initializes with a file summary" do
26
+ expect(formatter.file_summary).to eq file_summary
27
+ end
28
+ end
29
+
30
+ describe "#filename" do
31
+ it "returns the expected filename" do
32
+ expect(formatter.filename).to eq "index.htm"
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Formatters::Text" do
4
+
5
+ let(:parsed_file) { Struct.new(:path_to_file, :class_name)}
6
+ let(:mock_parsed_file) { parsed_file.new("fred/foo.rb", "Foo") }
7
+ let (:method_1) { ParsedMethod.new(
8
+ name: "initialize",
9
+ complexity: 13,
10
+ type: :instance
11
+ )
12
+ }
13
+ let (:method_2) { ParsedMethod.new(
14
+ name: "report",
15
+ complexity: 11,
16
+ type: :instance
17
+ )
18
+ }
19
+ let (:formatter) { Formatters::Html.new(mock_parsed_file) }
20
+
21
+ before do
22
+ allow(mock_parsed_file).to receive(:methods) { [method_1, method_2] }
23
+ end
24
+
25
+ describe "#header" do
26
+ it "returns an HTML-formatted header" do
27
+ expect(formatter.header).to eq(
28
+ "<th>Class</th>\r\n<th>Method</th>\r\n<th>Complexity</th>"
29
+ )
30
+ end
31
+ end
32
+
33
+ describe "#rows" do
34
+ it "returns HTML-formatted rows" do
35
+ expected = "<tr class='even'>\r\n <td>Foo</td>\r\n <td>#initialize</td>\r\n <td>13</td>\r\n</tr>\r\n"
36
+ expected << "<tr class='odd'>\r\n <td>Foo</td>\r\n <td>#report</td>\r\n <td>11</td>\r\n</tr>"
37
+ allow(mock_parsed_file).to receive(:methods) { [method_1, method_2] }
38
+ expect(formatter.rows).to eq(expected)
39
+ end
40
+ end
41
+
42
+ describe "#file_extension" do
43
+ it "returns the proper extension" do
44
+ expect(formatter.file_extension).to eq ".htm"
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Formatters::Text" do
4
+
5
+ let (:parsed_file) { ParsedFile.new(class_name: "Foo", complexity: 11) }
6
+ let (:method_1) { ParsedMethod.new(
7
+ name: "initialize",
8
+ complexity: 13,
9
+ type: "instance"
10
+ )
11
+ }
12
+ let (:method_2) { ParsedMethod.new(
13
+ name: "report",
14
+ complexity: 11,
15
+ type: "instance"
16
+ )
17
+ }
18
+
19
+
20
+ let(:parsed_file) { Struct.new(:path_to_file, :class_name, :average_complexity)}
21
+ let(:mock_parsed_file) { parsed_file.new("fred/foo.rb", "Foo", 12) }
22
+ let (:formatter) { Formatters::Text.new(mock_parsed_file) }
23
+
24
+ describe "#header" do
25
+ it "returns a header array" do
26
+ expect(formatter.header).to eq ["Class/Module", "Method", "Complexity"]
27
+ end
28
+ end
29
+
30
+ describe "#rows" do
31
+ it "returns formatted rows" do
32
+ allow(mock_parsed_file).to receive(:methods) { [method_1, method_2] }
33
+ expect(formatter.rows).to eq(
34
+ [["\e[31mFoo\e[0m", "\e[31m*initialize\e[0m", "\e[31m13\e[0m"], ["\e[33mFoo\e[0m", "\e[33m*report\e[0m", "\e[33m11\e[0m"]]
35
+ )
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ describe ParsedFile do
4
+
5
+ let(:parsed_file) { ParsedFile.new(path_to_file: "./spec/fixtures/eg_class.rb") }
6
+ let(:analyzer) { Analyzer.new("class Foo; end") }
7
+
8
+ describe "#class_name" do
9
+ before do
10
+ allow(parsed_file).to receive(:analyzer) { analyzer }
11
+ end
12
+ it "retrieves class name from analyzer" do
13
+ expect(parsed_file.class_name).to eq "Foo"
14
+ end
15
+ end
16
+
17
+ describe "#content" do
18
+ it "reads from file" do
19
+ allow(File).to receive(:open).with("./spec/fixtures/eg_class.rb", "r") {
20
+ instance_double("File", read: "whatever")
21
+ }
22
+ expect(parsed_file.send(:content)).to eq("whatever")
23
+ end
24
+ end
25
+
26
+ describe "#analyzer" do
27
+ it "instantiates an Analyzer instance with content" do
28
+ allow(parsed_file).to receive("content") { "stuff" }
29
+ expect(parsed_file.send(:analyzer).class.name).to eq "Analyzer"
30
+ end
31
+ end
32
+
33
+ describe "#complexity" do
34
+ before do
35
+ allow(parsed_file).to receive(:analyzer) { analyzer }
36
+ end
37
+ it "retrieves complexity score from analyzer" do
38
+ allow(analyzer).to receive(:complexity) { 13 }
39
+ expect(parsed_file.complexity).to eq 13
40
+ end
41
+ end
42
+
43
+ describe "methods" do
44
+ before do
45
+ allow(parsed_file).to receive(:analyzer) { analyzer }
46
+ end
47
+ it "retrieves methods from analyzer" do
48
+ allow(analyzer).to receive(:methods) { [:talk, :walk] }
49
+ expect(parsed_file.methods).to eq([:talk, :walk])
50
+ end
51
+ end
52
+
53
+ describe "summary" do
54
+ it "builds a hash" do
55
+ allow(parsed_file).to receive(:path_to_results) { "doc/analyst/spec/fixtures/eg_class.rb" }
56
+ allow(parsed_file).to receive(:path_to_file) { "eg_class.rb.htm" }
57
+ allow(parsed_file).to receive(:class_name) { "Foo" }
58
+ allow(parsed_file).to receive(:complexity) { 11 }
59
+ expect(parsed_file.summary[:results_file]).to eq "doc/analyst/spec/fixtures/eg_class.rb"
60
+ expect(parsed_file.summary[:path_to_file]).to eq "eg_class.rb.htm"
61
+ expect(parsed_file.summary[:class_name]).to eq "Foo"
62
+ expect(parsed_file.summary[:complexity]).to eq 11
63
+ end
64
+ end
65
+
66
+
67
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe ParsedMethod do
4
+
5
+ let(:parsed_method) { ParsedMethod.new }
6
+ let(:analyzer) { Analyzer.new("class Foo; end") }
7
+
8
+ describe "#complexity" do
9
+ it "retrieves complexity from its analyzer" do
10
+ allow(parsed_method).to receive(:analyzer) { analyzer }
11
+ allow(analyzer).to receive(:complexity) { 23 }
12
+ expect(parsed_method.complexity).to eq 23
13
+ end
14
+ end
15
+
16
+ describe "#analyzer" do
17
+ it "instantiates an Analyzer instance with content" do
18
+ allow(parsed_method).to receive("content") { "stuff" }
19
+ expect(parsed_method.analyzer.class.name).to eq "Analyzer"
20
+ end
21
+ end
22
+
23
+ describe "#prefix" do
24
+ it "returns '.' if its type is class" do
25
+ allow(parsed_method).to receive("type") { :class }
26
+ expect(parsed_method.prefix).to eq "."
27
+ end
28
+ it "returns '#' if its type is instance" do
29
+ allow(parsed_method).to receive("type") { :instance }
30
+ expect(parsed_method.prefix).to eq "#"
31
+ end
32
+ end
33
+
34
+ end
@@ -0,0 +1,7 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start
4
+
5
+ require 'rubygems'
6
+ require 'rspec'
7
+ require 'analyst'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: analyst
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Coraline Ada Ehmke
@@ -11,6 +11,118 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2014-10-27 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ephemeral
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: poro_plus
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: haml
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: parser
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rainbow
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rouge
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: terminal-table
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: thor
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
14
126
  - !ruby/object:Gem::Dependency
15
127
  name: bundler
16
128
  requirement: !ruby/object:Gem::Requirement
@@ -39,6 +151,34 @@ dependencies:
39
151
  - - ">="
40
152
  - !ruby/object:Gem::Version
41
153
  version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: rspec
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: simplecov
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
42
182
  description: Engine for analyzing Ruby source code.
43
183
  email:
44
184
  - coraline@idolhands.com
@@ -48,13 +188,78 @@ extensions: []
48
188
  extra_rdoc_files: []
49
189
  files:
50
190
  - ".gitignore"
191
+ - ".rspec"
192
+ - CODE_OF_CONDUCT.md
51
193
  - Gemfile
52
194
  - LICENSE.txt
53
195
  - README.md
54
196
  - Rakefile
55
197
  - analyst.gemspec
56
198
  - lib/analyst.rb
199
+ - lib/analyst/analyzer.rb
200
+ - lib/analyst/cli.rb
201
+ - lib/analyst/entity_parser/association.rb
202
+ - lib/analyst/entity_parser/entities/class.rb
203
+ - lib/analyst/entity_parser/entities/empty.rb
204
+ - lib/analyst/entity_parser/entities/entity.rb
205
+ - lib/analyst/entity_parser/entities/method.rb
206
+ - lib/analyst/entity_parser/entities/module.rb
207
+ - lib/analyst/formatters/base.rb
208
+ - lib/analyst/formatters/csv.rb
209
+ - lib/analyst/formatters/html.rb
210
+ - lib/analyst/formatters/html_index.rb
211
+ - lib/analyst/formatters/templates/index.html.haml
212
+ - lib/analyst/formatters/templates/output.html.haml
213
+ - lib/analyst/formatters/text.rb
214
+ - lib/analyst/fukuzatsu/analyzer.rb
215
+ - lib/analyst/fukuzatsu/cli.rb
216
+ - lib/analyst/fukuzatsu/entity_parser/association.rb
217
+ - lib/analyst/fukuzatsu/entity_parser/entities/class.rb
218
+ - lib/analyst/fukuzatsu/entity_parser/entities/empty.rb
219
+ - lib/analyst/fukuzatsu/entity_parser/entities/entity.rb
220
+ - lib/analyst/fukuzatsu/entity_parser/entities/method.rb
221
+ - lib/analyst/fukuzatsu/entity_parser/entities/module.rb
222
+ - lib/analyst/fukuzatsu/formatters/base.rb
223
+ - lib/analyst/fukuzatsu/formatters/csv.rb
224
+ - lib/analyst/fukuzatsu/formatters/html.rb
225
+ - lib/analyst/fukuzatsu/formatters/html_index.rb
226
+ - lib/analyst/fukuzatsu/formatters/templates/index.html.haml
227
+ - lib/analyst/fukuzatsu/formatters/templates/output.html.haml
228
+ - lib/analyst/fukuzatsu/formatters/text.rb
229
+ - lib/analyst/fukuzatsu/line_of_code.rb
230
+ - lib/analyst/fukuzatsu/parsed_file.rb
231
+ - lib/analyst/fukuzatsu/parsed_method.rb
232
+ - lib/analyst/fukuzatsu/parser_original.rb
233
+ - lib/analyst/fukuzatsu/rethink/parser.rb
234
+ - lib/analyst/fukuzatsu/version.rb
235
+ - lib/analyst/line_of_code.rb
236
+ - lib/analyst/parsed_file.rb
237
+ - lib/analyst/parsed_method.rb
238
+ - lib/analyst/parser.rb
239
+ - lib/analyst/rethink/parser.rb
57
240
  - lib/analyst/version.rb
241
+ - spec/analyzer_spec.rb
242
+ - spec/cli_spec.rb
243
+ - spec/fixtures/eg_class.rb
244
+ - spec/fixtures/eg_mod_class.rb
245
+ - spec/fixtures/eg_mod_class_2.rb
246
+ - spec/fixtures/eg_module.rb
247
+ - spec/fixtures/module_with_class.rb
248
+ - spec/fixtures/multiple_methods.rb
249
+ - spec/fixtures/nested_methods.rb
250
+ - spec/fixtures/program_1.rb
251
+ - spec/fixtures/program_2.rb
252
+ - spec/fixtures/program_3.rb
253
+ - spec/fixtures/program_4.rb
254
+ - spec/fixtures/single_class.rb
255
+ - spec/fixtures/single_method.rb
256
+ - spec/formatters/csv_spec.rb
257
+ - spec/formatters/html_index_spec.rb
258
+ - spec/formatters/html_spec.rb
259
+ - spec/formatters/text_spec.rb
260
+ - spec/parsed_file_spec.rb
261
+ - spec/parsed_method_spec.rb
262
+ - spec/spec_helper.rb
58
263
  homepage: ''
59
264
  licenses:
60
265
  - MIT
@@ -79,5 +284,27 @@ rubygems_version: 2.2.2
79
284
  signing_key:
80
285
  specification_version: 4
81
286
  summary: Engine for analyzing Ruby source code.
82
- test_files: []
287
+ test_files:
288
+ - spec/analyzer_spec.rb
289
+ - spec/cli_spec.rb
290
+ - spec/fixtures/eg_class.rb
291
+ - spec/fixtures/eg_mod_class.rb
292
+ - spec/fixtures/eg_mod_class_2.rb
293
+ - spec/fixtures/eg_module.rb
294
+ - spec/fixtures/module_with_class.rb
295
+ - spec/fixtures/multiple_methods.rb
296
+ - spec/fixtures/nested_methods.rb
297
+ - spec/fixtures/program_1.rb
298
+ - spec/fixtures/program_2.rb
299
+ - spec/fixtures/program_3.rb
300
+ - spec/fixtures/program_4.rb
301
+ - spec/fixtures/single_class.rb
302
+ - spec/fixtures/single_method.rb
303
+ - spec/formatters/csv_spec.rb
304
+ - spec/formatters/html_index_spec.rb
305
+ - spec/formatters/html_spec.rb
306
+ - spec/formatters/text_spec.rb
307
+ - spec/parsed_file_spec.rb
308
+ - spec/parsed_method_spec.rb
309
+ - spec/spec_helper.rb
83
310
  has_rdoc: