Skip to content

Conversation

@tsanders-rh
Copy link

@tsanders-rh tsanders-rh commented Oct 25, 2025

Summary

Add a comprehensive CONTRIBUTING.md guide to help new contributors get started with the analyzer-lsp project.

What's Included

  • Development environment setup and prerequisites
  • Building the project (local and container-based)
  • Container-based development workflow for testing with all providers
  • Adding new rules with provider-specific examples (builtin vs nodejs provider)
  • Adding new language support with file extension examples
  • Common issues and solutions (OOM, macOS sed, connection errors)
  • Pull request process with commit conventions and emoji prefixes
  • Resource requirements (12GB RAM minimum for all providers)

Why This Helps

This guide documents best practices learned from real contributor experience, including:

  • The recommended container-based workflow for regenerating demo-output.yaml
  • When to use nodejs vs builtin providers for rules
  • How to avoid common pitfalls (Java OOM, macOS compatibility)
  • Proper commit conventions with emoji prefixes

Changes

  • Add CONTRIBUTING.md with detailed contributor guidance
  • Update README.md to link to the contributing guide

Checklist

  • Signed commits with DCO
  • Follows emoji commit conventions
  • Documentation only (no code changes)
  • Links verified and working

Summary by CodeRabbit

  • Documentation
    • Added comprehensive contributor documentation covering environment setup, building and testing workflows (local and containerized), provider-specific prerequisites, debugging tips, CI expectations, and the pull request checklist.
    • Updated project README to link to contributor guidance and summarize steps for adding new rules and language support, common issues, and how to get help.

Add CONTRIBUTING.md with detailed guidance for new contributors including:
- Development environment setup and prerequisites
- Building the project (local and containers)
- Container-based development workflow for testing all providers
- Adding new rules with provider-specific examples
- Adding new language support with file extension examples
- Common issues and solutions (OOM, sed errors, connection issues)
- Pull request process with commit conventions
- Resource requirements (12GB RAM for all providers)

This guide documents best practices learned from real contributor
experience, including the recommended container-based workflow for
regenerating demo-output.yaml with all providers.

Signed-off-by: tsanders <[email protected]>
Link to new CONTRIBUTING.md guide to help contributors find
development setup, testing workflows, and PR guidelines.

Signed-off-by: tsanders <[email protected]>
@coderabbitai
Copy link

coderabbitai bot commented Oct 25, 2025

Walkthrough

Added a new CONTRIBUTING.md with detailed contributor guidance (development setup, build/test, container workflows, adding rules/languages, troubleshooting, PR process). Updated README.md to include two Contributing sections linking to the new guide and summarizing key contributor steps.

Changes

Cohort / File(s) Change Summary
New contributor documentation
CONTRIBUTING.md
Added a comprehensive contributor guide covering prerequisites, development environment setup, local and container-based build and test workflows, provider-specific notes (Go/Java/Node/Python), adding rules and language support, debugging tips, PR checklist, and license/code of conduct.
README updates
README.md
Added two "Contributing" sections that link to CONTRIBUTING.md and summarize development setup, build/test instructions, adding rules/language support, common issues/solutions, and the pull request process.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

  • Documentation-only additions; no source code or API changes.

Poem

🐇 A keyboard hop, a tiny cheer,
A CONTRIBUTING guide now appears,
Steps to build, test, and play,
For rules, languages, and PRs all day,
Hooray — a rabbit’s hop to help you stay!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title ":book: Add comprehensive contributor guide" is fully related to the main changes in the changeset. The primary modifications are the addition of a comprehensive CONTRIBUTING.md file and updates to README.md to link to the new guide. The title clearly and specifically communicates that this PR adds a contributor guide, which accurately summarizes the developer's main objective. The title is concise, avoids generic language, and provides sufficient clarity for someone scanning the repository history to understand the changeset's purpose without needing to examine the details.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
CONTRIBUTING.md (4)

342-342: Use a heading instead of emphasis for "Best Practice".

The line using "Best Practice:" should be formatted as a proper heading (### Best Practice:) rather than bold text for consistency with markdown structure and linting standards (MD036).

-**Best Practice:** Use semantic providers (nodejs, java, go, python) for symbol references, and builtin provider for patterns they cannot detect.
+### Best Practice
+
+Use semantic providers (nodejs, java, go, python) for symbol references, and builtin provider for patterns they cannot detect.

431-431: Specify language for error output code block.

The code fence at line 431 should specify a language (MD040). Since this shows error output, use ```txt or ```bash.

 **Error:**
-```
+```txt
 sed: 1: "external-providers/gene ...": invalid command code e

---

`455-455`: **Specify language for error output code block.**

The code fence at line 455 should specify a language (MD040). This shows error output, so use ` ```txt `.


```diff
 **Problem:**
-```
+```txt
 Error: volume with name test-data already exists
 Error: pod analyzer already exists

---

`600-601`: **Format bare URLs as markdown links.**

Lines 600-601 contain bare URLs that should be formatted as markdown links (MD034) for better readability and maintainability.


```diff
-  - **GitHub Issues:** https://github.com/konveyor/analyzer-lsp/issues
-  - **Konveyor Slack:** https://kubernetes.slack.com/archives/CR85S82A2
+  - **GitHub Issues:** [https://github.com/konveyor/analyzer-lsp/issues](https://github.com/konveyor/analyzer-lsp/issues)
+  - **Konveyor Slack:** [https://kubernetes.slack.com/archives/CR85S82A2](https://kubernetes.slack.com/archives/CR85S82A2)

Alternatively, if you prefer a cleaner look:

-  - **GitHub Issues:** https://github.com/konveyor/analyzer-lsp/issues
-  - **Konveyor Slack:** https://kubernetes.slack.com/archives/CR85S82A2
+  - [GitHub Issues](https://github.com/konveyor/analyzer-lsp/issues)
+  - [Konveyor Slack](https://kubernetes.slack.com/archives/CR85S82A2)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ff18ecd and 153e9a4.

📒 Files selected for processing (2)
  • CONTRIBUTING.md (1 hunks)
  • README.md (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
CONTRIBUTING.md

342-342: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


431-431: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


455-455: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


600-600: Bare URL used

(MD034, no-bare-urls)


601-601: Bare URL used

(MD034, no-bare-urls)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: test
  • GitHub Check: benchmark (ubuntu-latest, linux)
  • GitHub Check: benchmark (macos-latest, mac)
  • GitHub Check: benchmark (windows-latest, windows)
  • GitHub Check: test (windows-latest)
🔇 Additional comments (2)
README.md (1)

69-77: Clear and concise contribution section addition.

The new Contributing section provides a helpful entry point to the comprehensive guide with well-chosen bullet points that highlight key topics. Link formatting is correct and well-placed in the README.

CONTRIBUTING.md (1)

1-611: Comprehensive and well-structured contributor guide.

This is an excellent addition to the project. The guide covers all essential areas for contributors: setup, building, testing, container workflows, rule development, language support, troubleshooting, and PR processes. The examples are practical and helpful, and the troubleshooting section addresses real pain points (Java OOM, macOS sed issues, container connectivity). The resource requirements are clearly documented, and the container-based development workflow is thorough.

Beyond the minor markdown linting issues noted above, the content quality is high and will significantly help new contributors get productive quickly.

@tsanders-rh tsanders-rh changed the title 📝 Add comprehensive contributor guide 📖 Add comprehensive contributor guide Oct 25, 2025
Fix emoji prefix list to use the project's required prefixes:
- Use 📖 for docs (not 📝)
- Use 🌱 for infra/tests
- Use ⚠️ for breaking changes
- Add note that PR titles must use text codes, not emoji characters

Signed-off-by: tsanders <[email protected]>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
CONTRIBUTING.md (4)

342-342: Convert emphasis to a proper heading.

Line 342 uses bold text ("Best Practice:") where a heading would be more semantically correct and improve document structure.

-**Best Practice:** Use semantic providers (nodejs, java, go, python) for symbol references, and builtin provider for patterns they cannot detect.
+### Best Practice
+
+Use semantic providers (nodejs, java, go, python) for symbol references, and builtin provider for patterns they cannot detect.

431-433: Specify language for error output code block.

Fenced code blocks should declare their language for syntax highlighting. The error shown here is shell output.

-**Error:**
-```
+**Error:**
+```bash
 sed: 1: "external-providers/gene ...": invalid command code e
-```
+```

455-457: Specify language for error output code block.

This error block also lacks a language declaration.

-**Problem:**
-```
+**Problem:**
+```text
 Error: volume with name test-data already exists
 Error: pod analyzer already exists
-```
+```

605-606: Convert bare URLs to markdown links.

Lines 605–606 use bare URLs, which should be wrapped in markdown link syntax for better readability and maintainability.

 ## Getting Help
 
-- **GitHub Issues:** https://github.com/konveyor/analyzer-lsp/issues
-- **Konveyor Slack:** https://kubernetes.slack.com/archives/CR85S82A2
+- **GitHub Issues:** [GitHub Issues](https://github.com/konveyor/analyzer-lsp/issues)
+- **Konveyor Slack:** [Konveyor Slack](https://kubernetes.slack.com/archives/CR85S82A2)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 153e9a4 and 26dff2f.

📒 Files selected for processing (1)
  • CONTRIBUTING.md (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
CONTRIBUTING.md

342-342: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


431-431: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


455-455: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


605-605: Bare URL used

(MD034, no-bare-urls)


606-606: Bare URL used

(MD034, no-bare-urls)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: e2e / e2e-api-integration-tests
🔇 Additional comments (2)
CONTRIBUTING.md (2)

1-618: Documentation is comprehensive and well-structured.

This contributor guide effectively covers the full contributor journey from setup through PR submission. Strengths include:

  • Clear distinction between builtin, nodejs, and java providers with practical use-case guidance
  • Explicit resource requirements (12GB RAM) and troubleshooting for common pain points
  • Step-by-step container-based workflow documented for reproducible testing
  • Commit and PR title conventions with concrete examples matching the PR emoji prefix system
  • Practical debugging guidance with specific commands for checking provider logs and pod status

The guide successfully bridges the gap between local development and container-based testing, which aligns well with the PR objective of documenting "best practices from contributor experience."


603-618: All referenced documentation files exist—no action needed.

Verification confirms that all documentation files referenced in the "Getting Help" section are present in the repository: README.md, docs/rules.md, docs/providers.md, docs/labels.md, and LICENSE. The CONTRIBUTING.md changes are correct as-is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants