analyst 0.0.1 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
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: