[GitHub] Add Copilot review instructions for LLDB (#165783)
This is an experiment to encode the LLVM Coding Standards [1] as instructions for the Copilot reviewer on GitHub. Ideally, this will catch common issues automatically and reduce the review burden. Adding Copilot as a reviewer is entirely opt-in. Initially, I will add it as a reviewer to test this. If the experiment is successful, we can explore how to integrate this into other parts of LLVM. [1]: https://llvm.org/docs/CodingStandards.html
This commit is contained in:
parent
7c01a90545
commit
230e8b6498
79
.github/instructions/lldb.instructions.md
vendored
Normal file
79
.github/instructions/lldb.instructions.md
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
---
|
||||
applyTo: lldb/**/*
|
||||
---
|
||||
|
||||
When reviewing code, focus on:
|
||||
|
||||
## Language, Libraries & Standards
|
||||
|
||||
- Target C++17 and avoid vendor-specific extensions.
|
||||
- For Python scripts, follow PEP 8.
|
||||
- Prefer standard library or LLVM support libraries instead of reinventing data structures.
|
||||
|
||||
## Comments & Documentation
|
||||
|
||||
- Each source file should include the standard LLVM file header.
|
||||
- Header files must have proper header guards.
|
||||
- Non-trivial classes and public methods should have Doxygen documentation.
|
||||
- Use `//` or `///` comments normally; avoid block comments unless necessary.
|
||||
- Non-trivial code should have comments explaining what it does and why. Avoid comments that explain how it does it at a micro level.
|
||||
|
||||
## Language & Compiler Issues
|
||||
|
||||
- Write portable code; wrap non-portable code in interfaces.
|
||||
- Do not use RTTI or exceptions.
|
||||
- Prefer C++-style casts over C-style casts.
|
||||
- Do not use static constructors.
|
||||
- Use `class` or `struct` consistently; `struct` only for all-public data.
|
||||
- When then same class is declared or defined multiple times, make sure it's consistently done using either `class` or `struct`.
|
||||
|
||||
## Headers & Library Layering
|
||||
|
||||
- Include order: module header → local/private headers → project headers → system headers.
|
||||
- Headers must compile standalone (include all dependencies).
|
||||
- Maintain proper library layering; avoid circular dependencies.
|
||||
- Include minimally; use forward declarations where possible.
|
||||
- Keep internal headers private to modules.
|
||||
- Use full namespace qualifiers for out-of-line definitions.
|
||||
|
||||
## Control Flow & Structure
|
||||
|
||||
- Prefer early exits over deep nesting.
|
||||
- Do not use `else` after `return`, `continue`, `break`, or `goto`.
|
||||
- Encapsulate loops that compute predicates into helper functions.
|
||||
|
||||
## Naming
|
||||
|
||||
- LLDB's code style differs from LLVM's coding style.
|
||||
- Variables are `snake_case`.
|
||||
- Functions and methods are `UpperCamelCase`.
|
||||
- Static, global and member variables have `s_`, `g_` and `m_` prefixes respectively.
|
||||
|
||||
## General Guidelines
|
||||
|
||||
- Use `assert` liberally; prefer `llvm_unreachable` for unreachable states.
|
||||
- Do not use `using namespace std;` in headers.
|
||||
- Provide a virtual method anchor for classes defined in headers.
|
||||
- Do not use default labels in fully covered switches over enumerations.
|
||||
- Use range-based for loops wherever possible.
|
||||
- Capture `end()` outside loops if not using range-based iteration.
|
||||
- Including `<iostream>` is forbidded. Use LLVM’s `raw_ostream` instead.
|
||||
- Don’t use `inline` when defining a function in a class definition.
|
||||
|
||||
## Microscopic Details
|
||||
|
||||
- Preserve existing style in modified code.
|
||||
- Prefer pre-increment (`++i`) when value is unused.
|
||||
- Use `private`, `protected`, or `public` keyword as appropriate to restrict class member visibility.
|
||||
- Omit braces for single-statement `if`, `else`, `while`, `for` unless needed.
|
||||
|
||||
## Review Style
|
||||
|
||||
- Be specific and actionable in feedback.
|
||||
- Explain the "why" behind recommendations.
|
||||
- Link back to the LLVM Coding Standards: https://llvm.org/docs/CodingStandards.html.
|
||||
- Ask clarifying questions when code intent is unclear.
|
||||
|
||||
Ignore formatting and assume that's handled by external tools like `clang-format` and `black`.
|
||||
Remember that these standards are **guidelines**.
|
||||
Always prioritize consistency with the style that is already being used by the surrounding code.
|
||||
Loading…
x
Reference in New Issue
Block a user