Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions lib/rubyzen/collections/methods_collection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ module Collections
class MethodsCollection < BaseCollection
include Rubyzen::Providers::CollectionFilterProvider

def parameters
ParametersCollection.new(
flat_map do |method|
method.parameters
end
)
end

def if_statements
DeclarationCollection.new(
flat_map do |method|
Expand Down
7 changes: 7 additions & 0 deletions lib/rubyzen/collections/parameters_collection.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module Rubyzen
module Collections
class ParametersCollection < BaseCollection
include Rubyzen::Providers::CollectionFilterProvider
end
end
end
11 changes: 11 additions & 0 deletions lib/rubyzen/declarations/method_declaration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,17 @@ def name
node.method_name.to_s
end

def parameters
Collections::ParametersCollection.new(
node.arguments.map do |arg|
ParameterDeclaration.new(arg, self)
end
)
end

def parameters?
node.arguments.any?
end
end
end
end
24 changes: 24 additions & 0 deletions lib/rubyzen/declarations/parameter_declaration.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module Rubyzen
module Declarations
class ParameterDeclaration
include Rubyzen::Providers::FilePathProvider
include Rubyzen::Providers::LineNumberProvider
include Rubyzen::Providers::ClassNameProvider

attr_reader :node, :parent

def initialize(node, parent)
@node = node
@parent = parent
end

def name
node.name
end

def default_value
node.children[1]&.value
end
end
end
end
11 changes: 11 additions & 0 deletions sample_project/spec/models/no_arguments_named_biz_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require_relative '../spec_helper'

RSpec.describe 'No complex logic in models' do
it 'has no methods with arguments named biz' do
expect(models.all_methods.parameters.with_name(:biz).empty?).to be true
end

it 'has no methods with arguments named biz that have a default value' do
expect(models.all_methods.parameters.with_name(:biz).first.default_value.empty?).to be true
end
end
12 changes: 8 additions & 4 deletions sample_project/src/models/user.rb
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
class User < ActiveRecord::BaseAurora
attr_reader :name, :email

private

attr_writer :password

public

def active?
true
end

def foo
true
end

def bar(biz: "Bizzzz")
"#{biz}"
end
end
Loading