From 8d581743f82603b43e72d32f70668792d1e3d8e8 Mon Sep 17 00:00:00 2001 From: Eric Silverberg Date: Sat, 25 Apr 2026 17:59:02 -0400 Subject: [PATCH 1/2] [GH-6976] Expose params passed into a method --- lib/rubyzen/declarations/method_declaration.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/rubyzen/declarations/method_declaration.rb b/lib/rubyzen/declarations/method_declaration.rb index f144bd9..5fbafdc 100644 --- a/lib/rubyzen/declarations/method_declaration.rb +++ b/lib/rubyzen/declarations/method_declaration.rb @@ -25,6 +25,14 @@ def name node.method_name.to_s end + def parameters + node.arguments + end + + def parameters? + node.arguments.any? + end + end end end From 12567b27a3ba3af6f29b767f82dc4ca7acd7de47 Mon Sep 17 00:00:00 2001 From: Eric Silverberg Date: Mon, 27 Apr 2026 17:27:21 -0400 Subject: [PATCH 2/2] PR feedback --- lib/rubyzen/collections/methods_collection.rb | 8 +++++++ .../collections/parameters_collection.rb | 7 ++++++ .../declarations/method_declaration.rb | 7 ++++-- .../declarations/parameter_declaration.rb | 24 +++++++++++++++++++ .../models/no_arguments_named_biz_spec.rb | 11 +++++++++ sample_project/src/models/user.rb | 12 ++++++---- 6 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 lib/rubyzen/collections/parameters_collection.rb create mode 100644 lib/rubyzen/declarations/parameter_declaration.rb create mode 100644 sample_project/spec/models/no_arguments_named_biz_spec.rb diff --git a/lib/rubyzen/collections/methods_collection.rb b/lib/rubyzen/collections/methods_collection.rb index ae32995..d75d700 100644 --- a/lib/rubyzen/collections/methods_collection.rb +++ b/lib/rubyzen/collections/methods_collection.rb @@ -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| diff --git a/lib/rubyzen/collections/parameters_collection.rb b/lib/rubyzen/collections/parameters_collection.rb new file mode 100644 index 0000000..0094c20 --- /dev/null +++ b/lib/rubyzen/collections/parameters_collection.rb @@ -0,0 +1,7 @@ +module Rubyzen + module Collections + class ParametersCollection < BaseCollection + include Rubyzen::Providers::CollectionFilterProvider + end + end +end diff --git a/lib/rubyzen/declarations/method_declaration.rb b/lib/rubyzen/declarations/method_declaration.rb index 5fbafdc..47ee1f8 100644 --- a/lib/rubyzen/declarations/method_declaration.rb +++ b/lib/rubyzen/declarations/method_declaration.rb @@ -26,13 +26,16 @@ def name end def parameters - node.arguments + Collections::ParametersCollection.new( + node.arguments.map do |arg| + ParameterDeclaration.new(arg, self) + end + ) end def parameters? node.arguments.any? end - end end end diff --git a/lib/rubyzen/declarations/parameter_declaration.rb b/lib/rubyzen/declarations/parameter_declaration.rb new file mode 100644 index 0000000..b28d295 --- /dev/null +++ b/lib/rubyzen/declarations/parameter_declaration.rb @@ -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 \ No newline at end of file diff --git a/sample_project/spec/models/no_arguments_named_biz_spec.rb b/sample_project/spec/models/no_arguments_named_biz_spec.rb new file mode 100644 index 0000000..c39cbbc --- /dev/null +++ b/sample_project/spec/models/no_arguments_named_biz_spec.rb @@ -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 diff --git a/sample_project/src/models/user.rb b/sample_project/src/models/user.rb index d5fe667..2b548cf 100644 --- a/sample_project/src/models/user.rb +++ b/sample_project/src/models/user.rb @@ -1,12 +1,12 @@ class User < ActiveRecord::BaseAurora attr_reader :name, :email - + private - + attr_writer :password - + public - + def active? true end @@ -14,4 +14,8 @@ def active? def foo true end + + def bar(biz: "Bizzzz") + "#{biz}" + end end