Skip to content

PatchWise automates patch review and static analysis for the Linux kernel, streamlining upstream contributions and ensuring code quality.

License

Notifications You must be signed in to change notification settings

qualcomm/PatchWise

PatchWise

Python

PatchWise automates patch review and static analysis for the Linux kernel, streamlining upstream contributions and ensuring code quality.


Table of Contents


Features

  • Automated Patch Review: Runs static analysis and style checks on kernel patches.
  • Integration with Mailing Lists: Processes patches sent via email and responds automatically.
  • Flexible Review Selection: Choose which review checks to run.
  • Rich Logging: Colorized and file-based logging for easy debugging.
  • LLM Integration: Uses Artificial Intelligence for commit message analysis and suggestions.
  • AI Code Review: Leverages artificial intelligence to provide insights on code quality and potential issues. Integrated with Language Server Protocol (LSP) for context-aware code review. Support for multiple LLMs and providers, including OpenAI.

Getting Started

Prerequisites

  • Python 3.10 or newer
  • Access to a Linux kernel git repository

Installation

  1. Create and activate a virtual environment:

    python3.10 -m venv .venv
    source .venv/bin/activate
  2. Install PatchWise:

    pip install patchwise
  3. Set up your API key:

    Obtain your API key from your provider and set it as an environment variable:

    export OPENAI_API_KEY=<your-api-key>

    Add this line to your shell profile (e.g., ~/.bashrc or ~/.zshrc) for persistence.

  4. Run help message:

    patchwise --help

Usage

  1. Run PatchWise:

    Run PatchWise in the root of your kernel workspace:

    patchwise

    By default, PatchWise will review the HEAD commit. Use the --commits flag to review a specific commit:

    patchwise --commits <commit-sha>

    To run only short reviews, use:

    patchwise --short-reviews

    To run specific reviews, use the --reviews flag:

    patchwise --reviews checkpatch dt_checker

    To see available reviews and other options, run:

    patchwise --help

Example Workflow

### Create and activate a virtual environment
python3.10 -m venv .venv
# Required every time you start a new shell session
source .venv/bin/activate 
### Install PatchWise
pip install patchwise

# Required every time you start a new shell session
# unless you've added it to your shell profile (e.g., ~/.bashrc or ~/.zshrc)
# You can find your API key from your provider
export OPENAI_API_KEY=<your-api-key>

### Run PatchWise in your kernel workspace that has the patch you want to review already applied
cd linux-next
patchwise

Command-Line Options

  • -h, --help: Show help message and exit

Patch Review Options

  • --commits: Space separated list of commit SHAs/refs, or a single commit range in start..end format. (default: [HEAD])
  • --repo-path: Path to the kernel workspace root. Uses your current directory if not specified. (default: $PWD)
  • --reviews: Space-separated list of reviews to run. (default: all available reviews)
  • --short-reviews: Run only short reviews. Overrides --reviews.
  • --install: Install missing dependencies for the specified reviews. This will not run any reviews, only install dependencies.

Ai Review Options

  • --model: Specify the AI model to use for code review. (default: openai/Pro).
  • --provider: The base URL for the AI model API. (default: https://api.openai.com/v1)
  • --api-key: The API key for the AI model API. If not provided, it will be read from the OPENAI_API_KEY environment variable.

Logging Options

  • --log-level: Set the logging level. (default: INFO)
  • --log-file: Path to the log file (default: <package_path>/sandbox/patchwise.log)

Development

If you'd like to develop new features or fix existing issues:

  • Fork the repository and create a new branch for your changes.
  • Make your changes with clear, descriptive commit messages.
  • Ensure your code follows the project's coding standards and passes all tests.
  • Submit a pull request (PR) with a detailed description of your changes to pull your changes into the staging branch in the main repository.

Please make sure to follow our contribution guidelines before submitting a pull request. CONTRIBUTING.md

Getting in Contact

License

PatchWise is licensed under the BSD-3-clause License. See LICENSE.txt for the full license text.

About

PatchWise automates patch review and static analysis for the Linux kernel, streamlining upstream contributions and ensuring code quality.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Contributors 7