Class: Aidp::Watch::Reviewers::BaseReviewer

Inherits:
Object
  • Object
show all
Defined in:
lib/aidp/watch/reviewers/base_reviewer.rb

Overview

Base class for all PR reviewers

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provider_name: nil) ⇒ BaseReviewer

Returns a new instance of BaseReviewer.



13
14
15
16
17
# File 'lib/aidp/watch/reviewers/base_reviewer.rb', line 13

def initialize(provider_name: nil)
  @provider_name = provider_name
  @persona_name = self.class::PERSONA_NAME
  @focus_areas = self.class::FOCUS_AREAS
end

Instance Attribute Details

#focus_areasObject (readonly)

Returns the value of attribute focus_areas.



11
12
13
# File 'lib/aidp/watch/reviewers/base_reviewer.rb', line 11

def focus_areas
  @focus_areas
end

#persona_nameObject (readonly)

Returns the value of attribute persona_name.



11
12
13
# File 'lib/aidp/watch/reviewers/base_reviewer.rb', line 11

def persona_name
  @persona_name
end

#provider_nameObject (readonly)

Returns the value of attribute provider_name.



11
12
13
# File 'lib/aidp/watch/reviewers/base_reviewer.rb', line 11

def provider_name
  @provider_name
end

Instance Method Details

#review(pr_data:, files:, diff:) ⇒ Hash

Review the PR and return findings

Parameters:

  • pr_data (Hash)

    PR metadata (number, title, body, etc.)

  • files (Array<Hash>)

    Changed files with patches

  • diff (String)

    Full diff content

Returns:

  • (Hash)

    Review findings with structure: {

    persona: String,
    findings: [
      {
        severity: "high|major|minor|nit",
        category: String,
        message: String,
        file: String (optional),
        line: Integer (optional),
        suggestion: String (optional)
      }
    ]
    

    }

Raises:

  • (NotImplementedError)


37
38
39
# File 'lib/aidp/watch/reviewers/base_reviewer.rb', line 37

def review(pr_data:, files:, diff:)
  raise NotImplementedError, "Subclasses must implement #review"
end