Skip to content

Config: Add Go-Specific Review Instructions to .coderabbit.yaml #95

@coderabbitai

Description

@coderabbitai

Overview

golangci-lint is already enabled in .coderabbit.yaml, but there are no Go-specific path_instructions to guide CodeRabbit's review logic for .go files. This issue tracks adding a dedicated Go review instruction block to improve the quality and depth of reviews on AOSSIE's Go-based projects.


Proposed Change

Add the following block to the path_instructions section in .coderabbit.yaml:

path_instructions:
  - path: "**/*.go"
    instructions: |
      Go code review guidelines:

      **Naming & Style**
      - Follow Effective Go naming conventions (MixedCaps, not underscores).
      - Package names should be lowercase, single-word, and descriptive.
      - Exported functions, types, and variables must have godoc comments.

      **Error Handling**
      - Errors must not be silently ignored (no bare `_` discards for error returns).
      - Prefer wrapping errors with `fmt.Errorf("...: %w", err)` to preserve stack context.
      - Avoid `panic` except in truly unrecoverable situations; prefer returning errors.

      **Goroutine & Concurrency Hygiene**
      - Every goroutine must have a clear lifetime and ownership.
      - Ensure `sync.WaitGroup` or context cancellation is used to manage goroutine teardown.
      - Flag potential data races: shared state accessed from multiple goroutines without synchronization.
      - Prefer channels for communication over shared memory where appropriate.

      **Context Propagation**
      - Functions that perform I/O, network calls, or long computations should accept `context.Context` as the first parameter.
      - Ensure contexts are not stored in structs; pass them explicitly.
      - Check that context cancellation/deadlines are respected in loops and blocking calls.

      **Testing**
      - Prefer table-driven tests using `[]struct{...}` test case slices.
      - Test function names should follow the `TestFunctionName_Scenario` pattern.
      - Ensure test coverage for error paths and edge cases, not just happy paths.
      - Flag missing tests for exported functions.

      **Initialization**
      - Flag usage of `init()` functions unless there is clear justification (e.g., driver registration).
      - Prefer explicit initialization over side-effect imports.

      **Performance & Resource Management**
      - Ensure `defer` is used correctly for resource cleanup (files, mutexes, connections).
      - Flag unnecessary allocations inside hot loops.
      - Prefer pre-allocated slices (`make([]T, 0, n)`) when the size is known in advance.

      **Security**
      - Flag use of `unsafe` package and require justification.
      - Check for SQL injection risks in dynamically constructed queries.
      - Ensure sensitive data is not logged.

Acceptance Criteria

  • .coderabbit.yaml updated with the above path_instructions block for **/*.go files.
  • The template-sync.yml workflow propagates the updated config to child repos using this template.
  • Verified that CodeRabbit applies the Go-specific instructions when reviewing .go files.

References

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions