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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c24311c800c635316406aa7807888ed89f653ee
4
- data.tar.gz: f7b2dbd14b1a69aadf72a8b79a6c85cfd85a37d4
3
+ metadata.gz: fe948eb8572448ad33c453de7e0263ebd0ec608e
4
+ data.tar.gz: 66941f5d195f8dfb24cbfc08f509751908725538
5
5
  SHA512:
6
- metadata.gz: 612292c83300ff5930f47a2a7dd7d00d3e567036898bb7ac5471903e99c7d6884fc4b8a2e5738928ad99215317ba35b1098f580a0458fca099b3df6bf54f9bb3
7
- data.tar.gz: f9b35b46ce70a018f8123a75b6a4989971d9dd5f9cc53914b7a76a840cb111524582ea6d7cbd3f987ede21fdefa8c89eff802332452b48f1f435b8206b930f5e
6
+ metadata.gz: 822d38a5200a2b6896b1bf1f6cba896b72e34f6f23cec1f7d414628eded75baa62a52a2330d7fdac529aa2c58c4704b8e6283867276303e1a0bc80f3659e747d
7
+ data.tar.gz: 31110e03b3e2f36091945b3a9ad6d913b6725569fadfa1ea84084eae7bf7ee121309b198e5206c52329dfee4cd7c3f2653a17e7fc1b4927b6b233920c75b6718
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0-p195
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Archruby
2
2
 
3
- This gem aims to verify whether the system architecture is being respected by the developers. The application architecture is defined by the Software Architect through a YML file. After defining the architecture, you can use the tool to analyze if any part of the architecture is being broken in the system. To do this analysis it is necessary to pass the architecture definition file and the root path of the application to the ArchChecker executable. The ArchChecker will do an static scan in the application and generate an yaml file containing the violations. One picture of the entire application with all the communications will be generated either.
3
+ This gem aims to verify whether the system architecture is being respected by the developers. The application architecture is defined by the Software Architect through a YML file. After defining the architecture, you can use the tool to analyze if any part of the architecture is being broken in the system. To do this analysis it is necessary to pass the architecture definition file and the root path of the application to the archruby executable. The archruby executable will do an static scan in the application and generate an yaml file containing the violations. One picture of the entire application with all the communications will be generated either.
4
4
 
5
5
  ## Installation
6
6
 
data/Rakefile CHANGED
@@ -1 +1,47 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ begin
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task :default => :spec
9
+ rescue LoadError
10
+ # no rspec available
11
+ end
12
+
13
+ def name
14
+ @name ||= File.basename(Dir['*.gemspec'].first, ".*")
15
+ end
16
+
17
+ def gemspec_file
18
+ "#{name}.gemspec"
19
+ end
20
+
21
+ def version
22
+ Archruby::VERSION
23
+ end
24
+
25
+ def gem_file
26
+ "#{name}-#{Gem::Version.new(version).to_s}.gem"
27
+ end
28
+
29
+ desc "Release #{name} v#{version}"
30
+ task :release => :build do
31
+ unless `git branch` =~ /^\* master$/
32
+ puts "You must be on the master branch to release!"
33
+ exit!
34
+ end
35
+ sh "git commit --allow-empty -m 'Release :gem: #{version}'"
36
+ sh "git tag v#{version}"
37
+ sh "git push origin master"
38
+ sh "git push origin v#{version}"
39
+ sh "gem push pkg/#{name}-#{version}.gem"
40
+ end
41
+
42
+ desc "Build #{name} v#{version} into pkg/"
43
+ task :build do
44
+ mkdir_p "pkg"
45
+ sh "gem build #{gemspec_file}"
46
+ sh "mv #{gem_file} pkg"
47
+ end
@@ -0,0 +1,20 @@
1
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
2
+ {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
3
+ {\colortbl;\red255\green255\blue255;}
4
+ \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
5
+ \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural
6
+
7
+ \f0\fs24 \cf0 TODO Archruby\
8
+ \
9
+ * Melhorar os exemplos de heurisca de infer\'eancia de tipo.\
10
+ * Conferir se o algoritmo est\'e1 se comportando como o esperado \
11
+ * Criar novos specs para garantir isso\
12
+ * Garantir que o caso self.class adicione dependencia da classe correte\
13
+ * \'e9 o exemplo que est\'e1 sendo utilizado no artigo.\
14
+ * Melhorar valida\'e7\'f5es (executar archruby em branco tem q aparecer um help)\
15
+ * Melhorar c\'f3digo que foi criado para heur\'edstica\
16
+ \
17
+ PARSER\
18
+ * Estudar melhor a gem: {\field{\*\fldinst{HYPERLINK "https://github.com/whitequark/parser"}}{\fldrslt https://github.com/whitequark/parser}}\
19
+ * Talvez seja melhor trocar por ela\
20
+ }
@@ -0,0 +1,51 @@
1
+ config_definition:
2
+ files: 'lib/archruby/architecture/config_definition.rb'
3
+
4
+ module_definition:
5
+ files: 'lib/archruby/architecture/module_definition.rb'
6
+ allowed: 'config_definition, ruby_parser, dependency, constraint_break, file_extractor'
7
+
8
+ architecture:
9
+ files: 'lib/archruby/architecture/architecture.rb'
10
+ forbidden: 'type_inference'
11
+
12
+ architecture_parser:
13
+ files: 'lib/archruby/architecture/parser.rb'
14
+ allowed: 'config_definition, module_definition, type_inference, yaml_parser'
15
+
16
+ constraint_break:
17
+ files: 'lib/archruby/architecture/constraint_break.rb'
18
+
19
+ dependency:
20
+ files: 'lib/archruby/architecture/dependency.rb'
21
+
22
+ type_inference:
23
+ files: 'lib/archruby/architecture/type_inference_checker.rb'
24
+
25
+ presenters:
26
+ files: 'lib/archruby/presenters/**/*.rb'
27
+ allowed: 'architecture, graphviz'
28
+
29
+ ruby_parser:
30
+ files: 'lib/archruby/ruby/parser.rb'
31
+ allowed: 'dependency, parser_ruby'
32
+ required: 'sexp_processor'
33
+
34
+ sexp_processor:
35
+ gems: 'SexpInterpreter'
36
+
37
+ yaml_parser:
38
+ gems: 'YAML'
39
+
40
+ graphviz:
41
+ gems: 'GraphViz'
42
+
43
+ parser_ruby:
44
+ gems: 'RubyParser'
45
+
46
+ file_extractor:
47
+ files: 'lib/archruby/architecture/file_content.rb'
48
+
49
+ multiple_constraints_validator:
50
+ files: 'lib/archruby.rb'
51
+ forbidden: 'architecture'
@@ -21,8 +21,11 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "pry"
24
25
  spec.add_runtime_dependency "ruby_parser"
25
26
  spec.add_runtime_dependency "sexp_processor"
26
27
  spec.add_runtime_dependency "ruby-graphviz"
28
+ spec.add_runtime_dependency "imgkit"
29
+ spec.add_runtime_dependency "wkhtmltoimage-binary"
27
30
 
28
31
  end
@@ -18,3 +18,4 @@ constraints_breaks = arch_checker.verify
18
18
 
19
19
  Archruby::Presenters::Yaml.new.render(arch_checker.architecture)
20
20
  Archruby::Presenters::Graph.new.render(arch_checker.architecture)
21
+ Archruby::Presenters::DSM.new.render(arch_checker.architecture)
@@ -1,4 +1,5 @@
1
1
  require "archruby/version"
2
+ require 'pry'
2
3
 
3
4
  require 'archruby/architecture/parser'
4
5
  require 'archruby/architecture/config_definition'
@@ -7,6 +8,15 @@ require 'archruby/ruby/std_library'
7
8
  require 'archruby/ruby/core_library'
8
9
  require 'archruby/ruby/var_propagation'
9
10
  require 'archruby/ruby/type_inference_dep'
11
+ require 'archruby/ruby/type_inference/dependency_organizer'
12
+ require 'archruby/ruby/type_inference/type_inference_checker'
13
+ require 'archruby/ruby/type_inference/ruby/class_dependency'
14
+ require 'archruby/ruby/type_inference/ruby/internal_method_invocation'
15
+ require 'archruby/ruby/type_inference/ruby/method_definition'
16
+ require 'archruby/ruby/type_inference/ruby/parser_for_typeinference'
17
+ require 'archruby/ruby/type_inference/ruby/process_method_arguments'
18
+ require 'archruby/ruby/type_inference/ruby/process_method_body'
19
+ require 'archruby/ruby/type_inference/ruby/process_method_params'
10
20
  require 'archruby/architecture/file_content'
11
21
  require 'archruby/architecture/module_definition'
12
22
  require 'archruby/architecture/type_inference_checker'
@@ -15,16 +25,18 @@ require 'archruby/architecture/constraint_break'
15
25
  require 'archruby/architecture/architecture'
16
26
  require 'archruby/presenters/text'
17
27
  require 'archruby/presenters/graph'
28
+ require 'archruby/presenters/dsm'
18
29
  require 'archruby/presenters/yaml'
19
30
 
20
31
  module Archruby
21
32
  class ExtractArchitecture
22
33
  attr_reader :architecture
23
34
 
24
- def initialize config_file_path = "", base_directory = ""
35
+ def initialize(config_file_path = "", base_directory = "")
25
36
  @config_file_path = config_file_path
26
37
  @base_directory = base_directory
27
- @architecture_definition = Archruby::Architecture::Parser.new(File.expand_path(@config_file_path, __FILE__), @base_directory)
38
+ config_path = File.expand_path(@config_file_path, __FILE__)
39
+ @architecture_definition = Archruby::Architecture::Parser.new(config_path, @base_directory)
28
40
  @architecture = Archruby::Architecture::Architecture.new(@architecture_definition.modules)
29
41
  @constraints_breaks = []
30
42
  end
@@ -4,7 +4,7 @@ module Archruby
4
4
  class Architecture
5
5
  attr_reader :constraints_breaks, :modules, :unknown_module
6
6
 
7
- def initialize modules
7
+ def initialize(modules)
8
8
  @modules = modules
9
9
  @constraints_breaks = []
10
10
  @unknown_module = @modules.select{ |module_definition| module_definition.name == "unknown" }.first
@@ -21,7 +21,7 @@ module Archruby
21
21
  @constraints_breaks
22
22
  end
23
23
 
24
- def how_many_break module_name, module_target, constraint_type
24
+ def how_many_break(module_name, module_target, constraint_type)
25
25
  raise ArchitectureNotVerified if @constraints_breaks.empty?
26
26
  count = 0
27
27
  @constraints_breaks.each do |constraint_break|
@@ -32,7 +32,7 @@ module Archruby
32
32
  count
33
33
  end
34
34
 
35
- def module_name class_name
35
+ def module_name(class_name)
36
36
  module_name_to_return = ''
37
37
  @modules.each do |module_name|
38
38
  if module_name.is_mine? class_name
@@ -47,7 +47,7 @@ module Archruby
47
47
  end
48
48
  end
49
49
 
50
- def how_many_access_to module_origin, module_dest
50
+ def how_many_access_to(module_origin, module_dest)
51
51
  module_origin = search_module module_origin
52
52
  count = 0
53
53
  module_origin.classes_and_dependencies.each do |class_dependencies|
@@ -63,13 +63,13 @@ module Archruby
63
63
  count
64
64
  end
65
65
 
66
- def is_ruby_internals? module_name
66
+ def is_ruby_internals?(module_name)
67
67
  module_name == Archruby::Ruby::STD_LIB_NAME || module_name == Archruby::Ruby::CORE_LIB_NAME
68
68
  end
69
69
 
70
70
  private
71
71
 
72
- def search_module module_name
72
+ def search_module(module_name)
73
73
  @modules.each do |module_definition|
74
74
  if module_definition.name == module_name
75
75
  return module_definition
@@ -7,37 +7,37 @@ module Archruby
7
7
 
8
8
  attr_reader :module_name, :files, :gems, :allowed_modules, :required_modules, :forbidden_modules
9
9
 
10
- def initialize module_name, definitions
10
+ def initialize(module_name, definitions)
11
11
  @module_name = module_name
12
- @files = parse_files definitions['files']
13
- @gems = parse_gems definitions['gems']
14
- parse_constraints definitions
12
+ @files = parse_files(definitions['files'])
13
+ @gems = parse_gems(definitions['gems'])
14
+ parse_constraints(definitions)
15
15
  end
16
16
 
17
- def parse_files files
17
+ def parse_files(files)
18
18
  files = '' if files.nil?
19
19
  files = files.split(',')
20
- normalize_string_spaces files
20
+ normalize_string_spaces(files)
21
21
  files
22
22
  end
23
23
 
24
- def parse_gems gems
24
+ def parse_gems(gems)
25
25
  gems = '' if gems.nil?
26
26
  gems = gems.split(',')
27
- normalize_string_spaces gems
27
+ normalize_string_spaces(gems)
28
28
  gems
29
29
  end
30
30
 
31
- def parse_constraints definitions
32
- check_constraints definitions
31
+ def parse_constraints(definitions)
32
+ check_constraints(definitions)
33
33
  ALLOWED_CONSTRAINTS.each do |constraint|
34
34
  constraint_definition = definitions[constraint]
35
35
  constraint_definition = '' if constraint_definition.nil?
36
- send "#{constraint}_modules=", normalize_string_spaces(constraint_definition.split(','))
36
+ send("#{constraint}_modules=", normalize_string_spaces(constraint_definition.split(',')))
37
37
  end
38
38
  end
39
39
 
40
- def normalize_string_spaces array_of_strings
40
+ def normalize_string_spaces(array_of_strings)
41
41
  array_of_strings.map! {|element| element.strip }
42
42
  end
43
43
 
@@ -55,7 +55,7 @@ module Archruby
55
55
 
56
56
  private
57
57
 
58
- def check_constraints definitions
58
+ def check_constraints(definitions)
59
59
  raise MultipleConstraints if definitions['allowed'] && !definitions['allowed'].empty? && definitions['forbidden'] && !definitions['forbidden'].empty?
60
60
  end
61
61
 
@@ -7,7 +7,7 @@ module Archruby
7
7
  ABSENSE = "absence"
8
8
  DIVERGENCE = "divergence"
9
9
 
10
- def initialize options
10
+ def initialize(options)
11
11
  @type = options[:type]
12
12
  @class_origin = options[:class_origin]
13
13
  @line_origin = options[:line_origin]
@@ -2,10 +2,12 @@ module Archruby
2
2
  module Architecture
3
3
  class Dependency
4
4
  attr_reader :class_name, :line_number
5
- def initialize class_name, line_number
5
+
6
+ def initialize(class_name, line_number)
6
7
  @class_name = class_name.to_s
7
8
  @line_number = line_number
8
9
  end
10
+
9
11
  end
10
12
  end
11
13
  end
@@ -2,12 +2,12 @@ module Archruby
2
2
  module Architecture
3
3
  class FileContent
4
4
 
5
- def initialize base_directory
5
+ def initialize(base_directory)
6
6
  # base_directory "/Users/sergiomiranda/Labs/ruby_arch_checker/arch_checker/spec/dummy_app/app"
7
7
  @base_directory = base_directory
8
8
  end
9
9
 
10
- def all_content_from_directory directory
10
+ def all_content_from_directory(directory)
11
11
  return if directory.nil? || directory.eql?("")
12
12
  content = {}
13
13
  file_paths = Dir.glob("#{@base_directory}/#{directory}")
@@ -3,15 +3,16 @@ module Archruby
3
3
 
4
4
  class ModuleDefinition
5
5
 
6
- ALLOWED_CONSTRAINTS = ['required', 'allowed', 'forbidden']
6
+ ALLOWED_CONSTRAINTS = %w(required allowed forbidden)
7
7
 
8
8
  attr_reader :name, :allowed_modules, :required_modules, :forbidden_modules,
9
- :dependencies, :classes_and_dependencies, :class_methods_and_deps,
10
- :class_methods_calls
9
+ :dependencies, :classes_and_dependencies, :class_methods_and_deps,
10
+ :class_methods_calls, :type_inference_dependencies,
11
+ :type_inference_methods_calls
11
12
 
12
13
  attr_accessor :classes
13
14
 
14
- def initialize config_definition, base_directory
15
+ def initialize(config_definition, base_directory)
15
16
  @config_definition = config_definition
16
17
  @name = @config_definition.module_name
17
18
  @allowed_modules = @config_definition.allowed_modules
@@ -24,20 +25,23 @@ module Archruby
24
25
  @classes_and_dependencies = []
25
26
  @class_methods_and_deps = []
26
27
  @class_methods_calls = []
28
+ @type_inference_dependencies = []
29
+ @type_inference_methods_calls =[]
27
30
  extract_content_of_files
28
31
  extract_dependencies
32
+ #break type = TypeInferenceChecker.new
29
33
  end
30
34
 
31
- def extract_content_of_files file_extractor = Archruby::Architecture::FileContent
35
+ def extract_content_of_files(file_extractor = Archruby::Architecture::FileContent)
32
36
  return if !@classes.empty?
33
37
  file_extractor = file_extractor.new(@base_directory)
34
38
  @config_definition.files.each do |file|
35
- file_content = file_extractor.all_content_from_directory file
39
+ file_content = file_extractor.all_content_from_directory(file)
36
40
  @files_and_contents << file_content
37
41
  end
38
42
  end
39
43
 
40
- def extract_dependencies ruby_parser = Archruby::Ruby::Parser
44
+ def extract_dependencies(ruby_parser = Archruby::Ruby::Parser)
41
45
  return if !@classes.empty?
42
46
  @files_and_contents.each do |file_and_content|
43
47
  file_and_content.each do |file_name, content|
@@ -47,6 +51,8 @@ module Archruby
47
51
  @classes_and_dependencies << parser.classes_and_dependencies
48
52
  @class_methods_and_deps << parser.type_inference
49
53
  @class_methods_calls << parser.method_calls
54
+ @type_inference_dependencies << parser.type_propagation_parser.dependencies
55
+ @type_inference_methods_calls << parser.type_propagation_parser.method_definitions
50
56
  end
51
57
  end
52
58
  @classes << @config_definition.gems
@@ -54,21 +60,27 @@ module Archruby
54
60
  @dependencies.flatten!
55
61
  @class_methods_and_deps.flatten!
56
62
  @class_methods_calls.flatten!
63
+ @type_inference_dependencies.flatten!
64
+ @type_inference_methods_calls.flatten!
57
65
  end
58
66
 
59
- def add_new_dep class_name, type_inference_dep
60
- if !type_inference_dep.class_dep.nil? && !already_has_dependency?(class_name, type_inference_dep.class_dep)
61
- new_dep = Archruby::Architecture::Dependency.new(type_inference_dep.class_dep, nil)
62
- @dependencies << type_inference_dep.class_dep
67
+ def add_new_dep(class_name, type_inference_dep)
68
+ if !type_inference_dep.nil? && !already_has_dependency?(class_name, type_inference_dep)
69
+ new_dep = Archruby::Architecture::Dependency.new(type_inference_dep, nil)
70
+ @dependencies << type_inference_dep
63
71
  @classes_and_dependencies.each do |class_and_dep|
64
72
  if class_and_dep.keys.first.eql?(class_name)
65
73
  class_and_dep[class_and_dep.keys.first].push(new_dep)
66
74
  end
67
75
  end
68
76
  end
77
+ # aqui precisamos tomar cuidado quando a classe ainda não está na estrutura
78
+ # classes and dependencies (tem exemplo disso no findmeontwitter)
79
+ # precisamos verificar se a dependencia foi adicionada, e caso não tenha sido
80
+ # devemos adicionar ao final do loop
69
81
  end
70
82
 
71
- def already_has_dependency? class_name, class_dep
83
+ def already_has_dependency?(class_name, class_dep)
72
84
  has_dep = false
73
85
  @classes_and_dependencies.each do |class_and_dep|
74
86
  if class_and_dep.keys.first.eql?(class_name)
@@ -83,7 +95,8 @@ module Archruby
83
95
  has_dep
84
96
  end
85
97
 
86
- def is_mine? class_name
98
+ def is_mine?(class_name)
99
+ #binding.pry
87
100
  splited_class_name = class_name.split('::')
88
101
  first_class_name = splited_class_name.first
89
102
  is_mine = false
@@ -150,10 +163,10 @@ module Archruby
150
163
  @classes.empty?
151
164
  end
152
165
 
153
- def verify_constraints architecture
154
- required_breaks = verify_required architecture
155
- forbidden_breaks = verify_forbidden architecture
156
- allowed_breaks = verify_allowed architecture
166
+ def verify_constraints(architecture)
167
+ required_breaks = verify_required(architecture)
168
+ forbidden_breaks = verify_forbidden(architecture)
169
+ allowed_breaks = verify_allowed(architecture)
157
170
  all_constraints_breaks = [required_breaks, forbidden_breaks, allowed_breaks].flatten
158
171
  all_constraints_breaks.delete(nil)
159
172
  all_constraints_breaks
@@ -161,7 +174,7 @@ module Archruby
161
174
 
162
175
  # Verifica todas as classes do modulo
163
176
  # Cada uma deve, de alguma forma, depender dos modulos que estao listados como required
164
- def verify_required architecture
177
+ def verify_required(architecture)
165
178
  return if @config_definition.required_modules.empty?
166
179
  breaks = []
167
180
  @classes_and_dependencies.each_with_index do |class_and_depencies, index|
@@ -197,7 +210,7 @@ module Archruby
197
210
  breaks
198
211
  end
199
212
 
200
- def verify_forbidden architecture
213
+ def verify_forbidden(architecture)
201
214
  return if @config_definition.forbidden_modules.empty?
202
215
  breaks = []
203
216
  @classes_and_dependencies.each do |class_and_depencies|
@@ -222,7 +235,7 @@ module Archruby
222
235
  breaks
223
236
  end
224
237
 
225
- def verify_allowed architecture
238
+ def verify_allowed(architecture)
226
239
  return if @config_definition.allowed_modules.empty?
227
240
  breaks = []
228
241
  @classes_and_dependencies.each do |class_and_depencies|