archruby 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/README.md +1 -1
  4. data/Rakefile +46 -0
  5. data/TODO.rtf +20 -0
  6. data/architecture.yml +51 -0
  7. data/archruby.gemspec +3 -0
  8. data/bin/archruby +1 -0
  9. data/lib/archruby.rb +14 -2
  10. data/lib/archruby/architecture/architecture.rb +6 -6
  11. data/lib/archruby/architecture/config_definition.rb +13 -13
  12. data/lib/archruby/architecture/constraint_break.rb +1 -1
  13. data/lib/archruby/architecture/dependency.rb +3 -1
  14. data/lib/archruby/architecture/file_content.rb +2 -2
  15. data/lib/archruby/architecture/module_definition.rb +33 -20
  16. data/lib/archruby/architecture/parser.rb +25 -11
  17. data/lib/archruby/architecture/type_inference_checker.rb +29 -13
  18. data/lib/archruby/presenters/dsm.rb +163 -0
  19. data/lib/archruby/presenters/dsm/cell_dsm.rb +17 -0
  20. data/lib/archruby/presenters/dsm/dsm_css.css +77 -0
  21. data/lib/archruby/presenters/graph.rb +12 -9
  22. data/lib/archruby/ruby/parser.rb +131 -125
  23. data/lib/archruby/ruby/type_inference/dependency_organizer.rb +53 -0
  24. data/lib/archruby/ruby/type_inference/ruby/class_dependency.rb +22 -0
  25. data/lib/archruby/ruby/type_inference/ruby/internal_method_invocation.rb +20 -0
  26. data/lib/archruby/ruby/type_inference/ruby/method_definition.rb +20 -0
  27. data/lib/archruby/ruby/type_inference/ruby/parser_for_typeinference.rb +537 -0
  28. data/lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb +155 -0
  29. data/lib/archruby/ruby/type_inference/ruby/process_method_body.rb +427 -0
  30. data/lib/archruby/ruby/type_inference/ruby/process_method_params.rb +276 -0
  31. data/lib/archruby/ruby/type_inference/type_inference_checker.rb +126 -0
  32. data/lib/archruby/version.rb +1 -1
  33. data/spec/architecture/file_content_spec.rb +2 -1
  34. data/spec/architecture/module_definition_spec.rb +9 -9
  35. data/spec/dummy_app/lib/teste_class.rb +6 -0
  36. data/spec/ruby/type_inference/dependency_organizer_spec.rb +20 -0
  37. data/spec/ruby/type_inference/fixtures/homebrew_bottles_class.rb +139 -0
  38. data/spec/ruby/type_inference/fixtures/homebrew_brew_teste.rb +1323 -0
  39. data/spec/ruby/type_inference/fixtures/rails_action_view_class_teste.rb +89 -0
  40. data/spec/ruby/type_inference/fixtures/rails_active_record_class.rb +99 -0
  41. data/spec/ruby/type_inference/fixtures/rails_teste_active_record.rb +55 -0
  42. data/spec/ruby/type_inference/fixtures/teste2.rb +16 -0
  43. data/spec/ruby/type_inference/fixtures/teste_class_and_args.rb +49 -0
  44. data/spec/ruby/type_inference/fixtures/teste_class_and_args2.rb +11 -0
  45. data/spec/ruby/type_inference/parser_for_typeinference_spec.rb +69 -0
  46. data/spec/ruby/type_inference/type_inference_checker_spec.rb +47 -0
  47. metadata +84 -3
@@ -0,0 +1,89 @@
1
+ require 'active_support/core_ext/module/attr_internal'
2
+ require 'active_support/core_ext/module/attribute_accessors'
3
+ require 'active_support/ordered_options'
4
+ require 'action_view/log_subscriber'
5
+ require 'action_view/helpers'
6
+ require 'action_view/context'
7
+ require 'action_view/template'
8
+ require 'action_view/lookup_context'
9
+
10
+ module ActionView #:nodoc:
11
+ class Base
12
+ include Helpers, ::ERB::Util, Context
13
+
14
+ # Specify the proc used to decorate input tags that refer to attributes with errors.
15
+ cattr_accessor :field_error_proc
16
+ @@field_error_proc = Proc.new{ |html_tag, instance| "<div class=\"field_with_errors\">#{html_tag}</div>".html_safe }
17
+
18
+ # How to complete the streaming when an exception occurs.
19
+ # This is our best guess: first try to close the attribute, then the tag.
20
+ cattr_accessor :streaming_completion_on_exception
21
+ @@streaming_completion_on_exception = %("><script>window.location = "/500.html"</script></html>)
22
+
23
+ # Specify whether rendering within namespaced controllers should prefix
24
+ # the partial paths for ActiveModel objects with the namespace.
25
+ # (e.g., an Admin::PostsController would render @post using /admin/posts/_post.erb)
26
+ cattr_accessor :prefix_partial_path_with_controller_namespace
27
+ @@prefix_partial_path_with_controller_namespace = true
28
+
29
+ # Specify default_formats that can be rendered.
30
+ cattr_accessor :default_formats
31
+
32
+ # Specify whether an error should be raised for missing translations
33
+ cattr_accessor :raise_on_missing_translations
34
+ @@raise_on_missing_translations = false
35
+
36
+ # Specify whether submit_tag should automatically disable on click
37
+ cattr_accessor :automatically_disable_submit_tag
38
+ @@automatically_disable_submit_tag = true
39
+
40
+ class_attribute :_routes
41
+ class_attribute :logger
42
+
43
+ class << self
44
+ delegate :erb_trim_mode=, :to => 'ActionView::Template::Handlers::ERB'
45
+
46
+ def cache_template_loading
47
+ ActionView::Resolver.caching?
48
+ end
49
+
50
+ def cache_template_loading=(value)
51
+ ActionView::Resolver.caching = value
52
+ end
53
+
54
+ def xss_safe? #:nodoc:
55
+ true
56
+ end
57
+ end
58
+
59
+ attr_accessor :view_renderer
60
+ attr_internal :config, :assigns
61
+
62
+ delegate :lookup_context, :to => :view_renderer
63
+ delegate :formats, :formats=, :locale, :locale=, :view_paths, :view_paths=, :to => :lookup_context
64
+
65
+ def assign(new_assigns) # :nodoc:
66
+ @_assigns = new_assigns.each { |key, value| instance_variable_set("@#{key}", value) }
67
+ end
68
+
69
+ def initialize(context = nil, assigns = {}, controller = nil, formats = nil) #:nodoc:
70
+ @_config = ActiveSupport::InheritableOptions.new
71
+
72
+ if context.is_a?(ActionView::Renderer)
73
+ @view_renderer = context
74
+ else
75
+ lookup_context = context.is_a?(ActionView::LookupContext) ?
76
+ context : ActionView::LookupContext.new(context)
77
+ lookup_context.formats = formats if formats
78
+ lookup_context.prefixes = controller._prefixes if controller
79
+ @view_renderer = ActionView::Renderer.new(lookup_context)
80
+ end
81
+
82
+ assign(assigns)
83
+ assign_controller(controller)
84
+ _prepare_context
85
+ end
86
+
87
+ ActiveSupport.run_load_hooks(:action_view, self)
88
+ end
89
+ end
@@ -0,0 +1,99 @@
1
+ require 'active_model/forbidden_attributes_protection'
2
+
3
+ module ActiveRecord
4
+ module AttributeAssignment
5
+ extend ActiveSupport::Concern
6
+ include ActiveModel::AttributeAssignment
7
+
8
+ # Alias for `assign_attributes`. See +ActiveModel::AttributeAssignment+.
9
+ def attributes=(attributes)
10
+ assign_attributes(attributes)
11
+ end
12
+
13
+ private
14
+
15
+ def _assign_attributes(attributes) # :nodoc:
16
+ multi_parameter_attributes = {}
17
+ nested_parameter_attributes = {}
18
+
19
+ attributes.each do |k, v|
20
+ if k.include?("(")
21
+ multi_parameter_attributes[k] = attributes.delete(k)
22
+ elsif v.is_a?(Hash)
23
+ nested_parameter_attributes[k] = attributes.delete(k)
24
+ end
25
+ end
26
+ super(attributes)
27
+
28
+ assign_nested_parameter_attributes(nested_parameter_attributes) unless nested_parameter_attributes.empty?
29
+ assign_multiparameter_attributes(multi_parameter_attributes) unless multi_parameter_attributes.empty?
30
+ end
31
+
32
+ # Tries to assign given value to given attribute.
33
+ # In case of an error, re-raises with the ActiveRecord constant.
34
+ def _assign_attribute(k, v) # :nodoc:
35
+ super
36
+ rescue ActiveModel::UnknownAttributeError
37
+ raise UnknownAttributeError.new(self, k)
38
+ end
39
+
40
+ # Assign any deferred nested attributes after the base attributes have been set.
41
+ def assign_nested_parameter_attributes(pairs)
42
+ pairs.each { |k, v| _assign_attribute(k, v) }
43
+ end
44
+
45
+ # Instantiates objects for all attribute classes that needs more than one constructor parameter. This is done
46
+ # by calling new on the column type or aggregation type (through composed_of) object with these parameters.
47
+ # So having the pairs written_on(1) = "2004", written_on(2) = "6", written_on(3) = "24", will instantiate
48
+ # written_on (a date type) with Date.new("2004", "6", "24"). You can also specify a typecast character in the
49
+ # parentheses to have the parameters typecasted before they're used in the constructor. Use i for Fixnum and
50
+ # f for Float. If all the values for a given attribute are empty, the attribute will be set to +nil+.
51
+ def assign_multiparameter_attributes(pairs)
52
+ execute_callstack_for_multiparameter_attributes(
53
+ extract_callstack_for_multiparameter_attributes(pairs)
54
+ )
55
+ end
56
+
57
+ def execute_callstack_for_multiparameter_attributes(callstack)
58
+ errors = []
59
+ callstack.each do |name, values_with_empty_parameters|
60
+ begin
61
+ if values_with_empty_parameters.each_value.all?(&:nil?)
62
+ values = nil
63
+ else
64
+ values = values_with_empty_parameters
65
+ end
66
+ send("#{name}=", values)
67
+ rescue => ex
68
+ errors << AttributeAssignmentError.new("error on assignment #{values_with_empty_parameters.values.inspect} to #{name} (#{ex.message})", ex, name)
69
+ end
70
+ end
71
+ unless errors.empty?
72
+ error_descriptions = errors.map(&:message).join(",")
73
+ raise MultiparameterAssignmentErrors.new(errors), "#{errors.size} error(s) on assignment of multiparameter attributes [#{error_descriptions}]"
74
+ end
75
+ end
76
+
77
+ def extract_callstack_for_multiparameter_attributes(pairs)
78
+ attributes = {}
79
+
80
+ pairs.each do |(multiparameter_name, value)|
81
+ attribute_name = multiparameter_name.split("(").first
82
+ attributes[attribute_name] ||= {}
83
+
84
+ parameter_value = value.empty? ? nil : type_cast_attribute_value(multiparameter_name, value)
85
+ attributes[attribute_name][find_parameter_position(multiparameter_name)] ||= parameter_value
86
+ end
87
+
88
+ attributes
89
+ end
90
+
91
+ def type_cast_attribute_value(multiparameter_name, value)
92
+ multiparameter_name =~ /\([0-9]*([if])\)/ ? value.send("to_" + $1) : value
93
+ end
94
+
95
+ def find_parameter_position(multiparameter_name)
96
+ multiparameter_name.scan(/\(([0-9]*).*\)/).first.first.to_i
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,55 @@
1
+ module ActiveRecord
2
+ module AttributeMethods
3
+ module Serialization
4
+ extend ActiveSupport::Concern
5
+
6
+ module ClassMethods
7
+ # If you have an attribute that needs to be saved to the database as an
8
+ # object, and retrieved as the same object, then specify the name of that
9
+ # attribute using this method and it will be handled automatically. The
10
+ # serialization is done through YAML. If +class_name+ is specified, the
11
+ # serialized object must be of that class on assignment and retrieval.
12
+ # Otherwise <tt>SerializationTypeMismatch</tt> will be raised.
13
+ #
14
+ # ==== Parameters
15
+ #
16
+ # * +attr_name+ - The field name that should be serialized.
17
+ # * +class_name_or_coder+ - Optional, a coder object, which responds to `.load` / `.dump`
18
+ # or a class name that the object type should be equal to.
19
+ #
20
+ # ==== Example
21
+ #
22
+ # # Serialize a preferences attribute.
23
+ # class User < ActiveRecord::Base
24
+ # serialize :preferences
25
+ # end
26
+ #
27
+ # # Serialize preferences using JSON as coder.
28
+ # class User < ActiveRecord::Base
29
+ # serialize :preferences, JSON
30
+ # end
31
+ #
32
+ # # Serialize preferences as Hash using YAML coder.
33
+ # class User < ActiveRecord::Base
34
+ # serialize :preferences, Hash
35
+ # end
36
+ def serialize(attr_name, class_name_or_coder = Object)
37
+ # When ::JSON is used, force it to go through the Active Support JSON encoder
38
+ # to ensure special objects (e.g. Active Record models) are dumped correctly
39
+ # using the #as_json hook.
40
+ coder = if class_name_or_coder == ::JSON
41
+ Coders::JSON
42
+ elsif [:load, :dump].all? { |x| class_name_or_coder.respond_to?(x) }
43
+ class_name_or_coder
44
+ else
45
+ Coders::YAMLColumn.new(class_name_or_coder)
46
+ end
47
+
48
+ decorate_attribute_type(attr_name, :serialize) do |type|
49
+ Type::Serialized.new(type, coder)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,16 @@
1
+ class Teste
2
+ def a(param1=Professor.new, param2=Student.new)
3
+ b = School.new
4
+ b.some_method(param1)
5
+ c = Exame.new
6
+ c.another_method(b)
7
+ s = QI.new
8
+ s.some_other_method(A::T)
9
+ end
10
+ end
11
+
12
+ class Teste2
13
+ def teste(a = Teste, b = RubyTeste)
14
+ a = 1
15
+ end
16
+ end
@@ -0,0 +1,49 @@
1
+ a = 2
2
+ puts a
3
+ a.send(:+, 'b')
4
+
5
+ z = Teste.new
6
+
7
+
8
+ class Teste
9
+ def a(param1=D::A::Z.new, param2=Z::A.new)
10
+ h = Sergio.call
11
+ b = C::D.new
12
+ b.some_method(param1)
13
+ c = Z.new
14
+ c.another_method(b)
15
+ s = S.new
16
+ s.some_other_method(A::T)
17
+ end
18
+ end
19
+
20
+ class Teste
21
+ def b (arg1, arg2)
22
+ a = FoundText.new
23
+ puts a.get_text
24
+
25
+ end
26
+ end
27
+
28
+ class Teste2
29
+ def teste(a = Teste, b = RubyTeste)
30
+ a = 1
31
+ end
32
+ end
33
+
34
+ class Teste3
35
+ def b
36
+ y = Y.new
37
+ g = G.new
38
+ class_teste = Teste.new
39
+ class_teste.a(y, g)
40
+ end
41
+ end
42
+
43
+
44
+ a = [A.new, B.new]
45
+ # b = B.new
46
+ # c = C.new
47
+ #
48
+ # t = Teste.new
49
+ # t.a(c,b)
@@ -0,0 +1,11 @@
1
+ module ActionView #:nodoc:
2
+ class Base
3
+ def initialize(context = nil, assigns = {}, controller = nil, formats = nil) #:nodoc:
4
+ lookup_context = context.is_a?(ActionView::LookupContext) ?
5
+ context : ActionView::LookupContext.new(context)
6
+ @view_renderer = ActionView::Renderer.new(lookup_context)
7
+ end
8
+
9
+ ActiveSupport.run_load_hooks(:action_view, self)
10
+ end
11
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference do
4
+ before do
5
+ @fixtures_path = File.expand_path('../fixtures', __FILE__)
6
+ end
7
+
8
+ it "parse the file correctly" do
9
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
10
+ file_content = File.read("#{@fixtures_path}/teste_class_and_args.rb")
11
+ dependencies, methods = parser.parse(file_content)
12
+ first_parsed_class = methods[0]
13
+ expect(first_parsed_class.class_name).to eql("Teste")
14
+ expect(first_parsed_class.method_calls.count).to eql(7)
15
+ method_calls = first_parsed_class.method_calls
16
+ expect(method_calls[2].class_name).to eql("C::D")
17
+ expect(method_calls[2].method_name).to eql(:some_method)
18
+ expect(method_calls[2].params[0]).to eql(:param1)
19
+ end
20
+
21
+ it "parse the file correctly 2" do
22
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
23
+ file_content = File.read("#{@fixtures_path}/teste_class_and_args2.rb")
24
+ dependencies, methods = parser.parse(file_content)
25
+ expect(dependencies.size).to be_eql(2)
26
+ expect(methods.size).to be_eql(1)
27
+ method = methods[0]
28
+ expect(method.method_name).to be_eql(:initialize)
29
+ method_calls = method.method_calls
30
+ expect(method_calls.size).to be_eql(3)
31
+ expect(method_calls[0].method_name).to be_eql(:is_a?)
32
+ expect(method_calls[0].params).to include("ActionView::LookupContext")
33
+ expect(method_calls[1].method_name).to be_eql(:new)
34
+ expect(method_calls[1].params).to include(:context)
35
+ expect(method_calls[2].method_name).to be_eql(:new)
36
+ expect(method_calls[2].params).to include("ActionView::LookupContext")
37
+ end
38
+
39
+ it "parse the file correctly 3" do
40
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
41
+ file_content = File.read("#{@fixtures_path}/rails_action_view_class_teste.rb")
42
+ dependencies, methods = parser.parse(file_content)
43
+ expect(dependencies.first.dependencies).to include("Helpers")
44
+ expect(dependencies[8].dependencies).to include("ActiveSupport::InheritableOptions")
45
+ expect(dependencies[8].dependencies).to include("ActionView::LookupContext")
46
+ expect(dependencies[8].dependencies).to include("ActionView::Renderer")
47
+ end
48
+
49
+ it "parse the file correctly 4" do
50
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
51
+ file_content = File.read("#{@fixtures_path}/rails_active_record_class.rb")
52
+ dependencies, methods = parser.parse(file_content)
53
+ end
54
+
55
+ it "parse the file correclty 5" do
56
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
57
+ file_content = File.read("#{@fixtures_path}/homebrew_bottles_class.rb")
58
+ dependencies, methods = parser.parse(file_content)
59
+ expect(dependencies.last.dependencies).to include("MacOS::Version")
60
+ end
61
+
62
+ it "parse the file correclty 6" do
63
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
64
+ file_content = File.read("#{@fixtures_path}/homebrew_brew_teste.rb")
65
+ dependencies, methods = parser.parse(file_content)
66
+
67
+ end
68
+
69
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe Archruby::Ruby::TypeInference::TypeInferenceChecker do
4
+ before do
5
+ @fixtures_path = File.expand_path('../fixtures', __FILE__)
6
+ end
7
+
8
+ it "mantains the dependencies and methods invocations correctly" do
9
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
10
+ file_content = File.read("#{@fixtures_path}/teste_class_and_args.rb")
11
+ dependencies, methods_calls = parser.parse(file_content)
12
+ dependency_organizer = Archruby::Ruby::TypeInference::DependencyOrganizer.new
13
+ dependency_organizer.add_dependencies(dependencies)
14
+ dependency_organizer.add_method_calls(methods_calls)
15
+ verify_type = Archruby::Ruby::TypeInference::TypeInferenceChecker.new(
16
+ dependency_organizer.dependencies,
17
+ dependency_organizer.method_definitions
18
+ )
19
+ verify_type.add_dependency_based_on_calls
20
+ verify_type.add_dependency_based_on_internal_calls
21
+ new_deps = verify_type.dependencies
22
+ new_methods = verify_type.method_definitions
23
+ expect(new_deps["Teste"]).to include("Y")
24
+ expect(new_deps["Teste"]).to include("G")
25
+ expect(new_deps["C::D"]).to include("Y")
26
+ expect(new_methods["Teste"].first.args[:param1]).to include("Y")
27
+ expect(new_methods["Teste"].first.args[:param2]).to include("G")
28
+ end
29
+
30
+ it "return the number of dependencies correctly" do
31
+ parser = Archruby::Ruby::TypeInference::Ruby::ParserForTypeinference.new
32
+ file_content = File.read("#{@fixtures_path}/teste_class_and_args.rb")
33
+ dependencies, methods_calls = parser.parse(file_content)
34
+ dependency_organizer = Archruby::Ruby::TypeInference::DependencyOrganizer.new
35
+ dependency_organizer.add_dependencies(dependencies)
36
+ dependency_organizer.add_method_calls(methods_calls)
37
+ verify_type = Archruby::Ruby::TypeInference::TypeInferenceChecker.new(
38
+ dependency_organizer.dependencies,
39
+ dependency_organizer.method_definitions
40
+ )
41
+ expect(verify_type.total_deps).to eql(12)
42
+ verify_type.add_dependency_based_on_calls
43
+ verify_type.add_dependency_based_on_internal_calls
44
+ expect(verify_type.total_deps).to eql(18)
45
+ end
46
+
47
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: archruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Henrique
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-24 00:00:00.000000000 Z
11
+ date: 2016-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: ruby_parser
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,34 @@ dependencies:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: imgkit
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: wkhtmltoimage-binary
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
97
139
  description: Compliance and Architectural Visualization in Ruby systems
98
140
  email:
99
141
  - sergiohenriquetp@gmail.com
@@ -103,11 +145,14 @@ extensions: []
103
145
  extra_rdoc_files: []
104
146
  files:
105
147
  - ".gitignore"
148
+ - ".travis.yml"
106
149
  - CHANGELOG.md
107
150
  - Gemfile
108
151
  - LICENSE.txt
109
152
  - README.md
110
153
  - Rakefile
154
+ - TODO.rtf
155
+ - architecture.yml
111
156
  - archruby.gemspec
112
157
  - bin/archruby
113
158
  - lib/archruby.rb
@@ -119,12 +164,24 @@ files:
119
164
  - lib/archruby/architecture/module_definition.rb
120
165
  - lib/archruby/architecture/parser.rb
121
166
  - lib/archruby/architecture/type_inference_checker.rb
167
+ - lib/archruby/presenters/dsm.rb
168
+ - lib/archruby/presenters/dsm/cell_dsm.rb
169
+ - lib/archruby/presenters/dsm/dsm_css.css
122
170
  - lib/archruby/presenters/graph.rb
123
171
  - lib/archruby/presenters/text.rb
124
172
  - lib/archruby/presenters/yaml.rb
125
173
  - lib/archruby/ruby/core_library.rb
126
174
  - lib/archruby/ruby/parser.rb
127
175
  - lib/archruby/ruby/std_library.rb
176
+ - lib/archruby/ruby/type_inference/dependency_organizer.rb
177
+ - lib/archruby/ruby/type_inference/ruby/class_dependency.rb
178
+ - lib/archruby/ruby/type_inference/ruby/internal_method_invocation.rb
179
+ - lib/archruby/ruby/type_inference/ruby/method_definition.rb
180
+ - lib/archruby/ruby/type_inference/ruby/parser_for_typeinference.rb
181
+ - lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb
182
+ - lib/archruby/ruby/type_inference/ruby/process_method_body.rb
183
+ - lib/archruby/ruby/type_inference/ruby/process_method_params.rb
184
+ - lib/archruby/ruby/type_inference/type_inference_checker.rb
128
185
  - lib/archruby/ruby/type_inference_dep.rb
129
186
  - lib/archruby/ruby/var_propagation.rb
130
187
  - lib/archruby/version.rb
@@ -178,6 +235,7 @@ files:
178
235
  - spec/dummy_app/lib/fetch_facebook_info.rb
179
236
  - spec/dummy_app/lib/integracao_twitter.rb
180
237
  - spec/dummy_app/lib/tasks/.keep
238
+ - spec/dummy_app/lib/teste_class.rb
181
239
  - spec/dummy_app/log/.keep
182
240
  - spec/dummy_app/public/404.html
183
241
  - spec/dummy_app/public/422.html
@@ -197,6 +255,17 @@ files:
197
255
  - spec/fixtures/ruby_example.rb
198
256
  - spec/fixtures/ruby_example_typeinference.rb
199
257
  - spec/ruby/parser_spec.rb
258
+ - spec/ruby/type_inference/dependency_organizer_spec.rb
259
+ - spec/ruby/type_inference/fixtures/homebrew_bottles_class.rb
260
+ - spec/ruby/type_inference/fixtures/homebrew_brew_teste.rb
261
+ - spec/ruby/type_inference/fixtures/rails_action_view_class_teste.rb
262
+ - spec/ruby/type_inference/fixtures/rails_active_record_class.rb
263
+ - spec/ruby/type_inference/fixtures/rails_teste_active_record.rb
264
+ - spec/ruby/type_inference/fixtures/teste2.rb
265
+ - spec/ruby/type_inference/fixtures/teste_class_and_args.rb
266
+ - spec/ruby/type_inference/fixtures/teste_class_and_args2.rb
267
+ - spec/ruby/type_inference/parser_for_typeinference_spec.rb
268
+ - spec/ruby/type_inference/type_inference_checker_spec.rb
200
269
  - spec/ruby/var_propagation_spec.rb
201
270
  - spec/spec_helper.rb
202
271
  homepage: http://aserg.labsoft.dcc.ufmg.br/archruby/
@@ -219,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
288
  version: '0'
220
289
  requirements: []
221
290
  rubyforge_project:
222
- rubygems_version: 2.2.2
291
+ rubygems_version: 2.4.5
223
292
  signing_key:
224
293
  specification_version: 4
225
294
  summary: Compliance and Architectural Visualization in Ruby systems
@@ -274,6 +343,7 @@ test_files:
274
343
  - spec/dummy_app/lib/fetch_facebook_info.rb
275
344
  - spec/dummy_app/lib/integracao_twitter.rb
276
345
  - spec/dummy_app/lib/tasks/.keep
346
+ - spec/dummy_app/lib/teste_class.rb
277
347
  - spec/dummy_app/log/.keep
278
348
  - spec/dummy_app/public/404.html
279
349
  - spec/dummy_app/public/422.html
@@ -293,5 +363,16 @@ test_files:
293
363
  - spec/fixtures/ruby_example.rb
294
364
  - spec/fixtures/ruby_example_typeinference.rb
295
365
  - spec/ruby/parser_spec.rb
366
+ - spec/ruby/type_inference/dependency_organizer_spec.rb
367
+ - spec/ruby/type_inference/fixtures/homebrew_bottles_class.rb
368
+ - spec/ruby/type_inference/fixtures/homebrew_brew_teste.rb
369
+ - spec/ruby/type_inference/fixtures/rails_action_view_class_teste.rb
370
+ - spec/ruby/type_inference/fixtures/rails_active_record_class.rb
371
+ - spec/ruby/type_inference/fixtures/rails_teste_active_record.rb
372
+ - spec/ruby/type_inference/fixtures/teste2.rb
373
+ - spec/ruby/type_inference/fixtures/teste_class_and_args.rb
374
+ - spec/ruby/type_inference/fixtures/teste_class_and_args2.rb
375
+ - spec/ruby/type_inference/parser_for_typeinference_spec.rb
376
+ - spec/ruby/type_inference/type_inference_checker_spec.rb
296
377
  - spec/ruby/var_propagation_spec.rb
297
378
  - spec/spec_helper.rb