• Get Review Board
  • What's New
  • Products
  • Review Board Code review, image review, and document review
  • Documentation
  • Release Notes
  • Power Pack Enterprise integrations, reports, and enhanced document review
  • Try for 60 Days
  • Purchase
  • RBCommons Review Board as a Service, hosted by us
  • Pricing
  • RBTools Command line tools and Python API for Review Board
  • Documentation
  • Release Notes
  • Review Bot Automated code review, connecting tools you already use
  • Documentation
  • Release Notes
  • RB Gateway Manage Git and Mercurial repositories in your network
  • Documentation
  • Release Notes
  • Learn and Explore
  • What is Code Review?
  • Documentation
  • Frequently Asked Questions
  • Support Options
  • Third-Party Integrations
  • Demo
  • Review Board RBTools Power Pack Review Bot Djblets RB Gateway
    1. Review Bot 4.x
    2. Version 4.x
    3. Version 3.0
    4. Version 2.0
    5. Version 1.0
    6. Module and Class Reference
    7. reviewbot.tools.base.tool
  • Home
  • Installation
  • Manually Installing Review Bot
  • Review Bot Docker Images
  • Upgrading Review Bot
  • Configuring Review Bot
  • Review Bot Tools
  • Cargo Tool
  • Checkstyle
  • Clang Static Analyzer
  • Cppcheck
  • Cpplint
  • Doc8
  • FBInfer
  • Flake8
  • Go Fmt
  • Go Tool
  • JSHint
  • PMD
  • Pycodestyle
  • Pydocstyle
  • Pyflakes
  • RuboCop
  • Rust Fmt
  • Secret Scanner
  • ShellCheck
  • Module and Class Reference
  • reviewbot.tools.base
  • reviewbot.tools.base.mixins
  • reviewbot.tools.base.registry
  • reviewbot.tools.base.tool
  • reviewbot.testing.testcases
  • reviewbot.testing.utils
  • reviewbot.tools.testing
  • reviewbot.tools.testing.decorators
  • reviewbot.tools.testing.testcases
  • reviewbot.processing.review
  • reviewbot.utils.api
  • reviewbot.utils.filesystem
  • reviewbot.utils.log
  • reviewbot.utils.process
  • reviewbot.utils.text
  • reviewbot.celery
  • reviewbot.config
  • reviewbot.deprecation
  • reviewbot.errors
  • reviewbot.repositories
  • reviewbot.tasks
  • reviewbot.tools.cargotool
  • reviewbot.tools.checkstyle
  • reviewbot.tools.clang
  • reviewbot.tools.cppcheck
  • reviewbot.tools.cpplint
  • reviewbot.tools.doc8
  • reviewbot.tools.fbinfer
  • reviewbot.tools.flake8
  • reviewbot.tools.gofmt
  • reviewbot.tools.gotool
  • reviewbot.tools.jshint
  • reviewbot.tools.pmd
  • reviewbot.tools.pycodestyle
  • reviewbot.tools.pydocstyle
  • reviewbot.tools.pyflakes
  • reviewbot.tools.rbsecretscanner
  • reviewbot.tools.rubocop
  • reviewbot.tools.rustfmt
  • reviewbot.tools.shellcheck
  • General Index
  • Python Module Index
  • Release Notes
  • reviewbot.tools.base.tool¶

    Base support for creating code checking tools.

    Classes

    BaseTool([settings])

    The base class all Review Bot tools should inherit from.

    class BaseTool(settings=None, **kwargs)[source]¶

    Bases: object

    The base class all Review Bot tools should inherit from.

    This class provides base functionality specific to tools which process each file separately.

    Most tools will override handle_file(), performing a code review on the provided file.

    If a tool would like to perform a different style of analysis, it can override handle_files().

    settings¶

    Settings configured for this tool in Review Board, based on options.

    Type:

    dict

    name = ''[source]¶

    The displayed name of the tool.

    Type:

    str

    description = ''[source]¶

    A short description of the tool.

    Type:

    str

    version = '1'[source]¶

    The compatibility version of the tool.

    This should only be changed for major breaking updates. It will break compatibility with existing integration configurations, requiring manual updates to those configurations. Any existing configurations referencing the old version will not be run, unless an older version of the tool is being handled through another Review Bot worker providing the older tool.

    Type:

    str

    exe_dependencies = [][source]¶

    A list of executable tools required by the tool.

    Each is the name of an executable on the filesystem, either in the PATH or defined in the exe_paths configuration.

    These will be checked when the worker starts. If a dependency for a tool is missing, the worker will not enable it.

    New in version 3.0: Tools that previously implemented check_dependencies() may want to be updated to use this.

    Type:

    dict

    file_patterns = [][source]¶

    A list of filename patterns this tool can process.

    This is intended for tools that have a fixed list of file extensions or specific filenames they should process. Each entry is a glob file pattern (e.g., *.py, .config/*.xml, dockerfile, etc.), and must be lowercase (as filenames will be normalized to lowercase for comparison). See fnmatch for pattern rules.

    Tools can leave this empty to process all files, or can override get_can_handle_file() to implement custom logic (e.g., basing matching off a tool’s settings, or providing case-sensitive matches).

    New in version 3.0.

    Type:

    list of str

    options = [][source]¶

    Configurable options defined for the tool.

    Each item in the list is a dictionary representing a form field to display in the Review Board administration UI. Keys include:

    field_type (str):

    The full path as a string to a Django form field class to render.

    name (str):

    The name/ID of the field. This will map to the key in the settings provided to handle_files() and handle_file().

    default (object, optional):

    The default value for the field.

    field_options (dict, optional):

    Additional options to pass to the form field’s constructor.

    widget (dict, optional):

    Information on the Django form field widget class used to render the field. This dictionary includes the following keys:

    type (str):

    The full path as a string to a Django form field widget class.

    attrs (dict, optional):

    A dictionary of attributes passed to the widget’s constructor.

    Type:

    list

    working_directory_required = False[source]¶

    Whether this tool requires a full checkout and working directory to run.

    Type:

    bool

    timeout = None[source]¶

    Timeout for tool execution, in seconds.

    Type:

    int

    __init__(settings=None, **kwargs)[source]¶

    Initialize the tool.

    Changed in version 3.0: Added settings and **kwargs arguments. Subclasses must provide this by Review Bot 4.0.

    Parameters:
    • settings (dict, optional) – Settings provided to the tool.

    • **kwargs (dict) – Additional keyword arguments, for future expansion.

    property logger[source]¶

    The logger for the tool.

    This logger will contain information on the process, the task (if it’s running in a task), and the tool name.

    New in version 3.0.

    Type:

    logging.Logger

    check_dependencies(**kwargs)[source]¶

    Verify the tool’s dependencies are installed.

    By default, this will check exe_dependencies, ensuring each is available to the tool.

    For each entry in exe_dependencies, PATH will be checked. If the dependency name is found in the exe_paths mapping in the Review Bot configuration, that path will be checked.

    Subclasses can implement this if they need more advanced checks.

    Parameters:

    **kwargs (dict, unused) – Additional keyword arguments. This is intended for future expansion.

    Returns:

    True if all dependencies for the tool are satisfied. If this returns False, the worker will not listen for this Tool’s queue, and a warning will be logged.

    Return type:

    bool

    get_can_handle_file(review_file, **kwargs)[source]¶

    Return whether this tool can handle a given file.

    By default, this checks the full path of the destination file against the patterns in file_patterns. If the file path matches, or that list is empty, this will allow the file to be handled.

    Subclasses can override this to provide custom matching logic.

    New in version 3.0.

    Parameters:
    • review_file (reviewbot.processing.review.File) – The file to check.

    • **kwargs (dict, unused) – Additional keyword arguments passed to execute(). This is intended for future expansion.

    Returns:

    True if the file can be handled. False if it cannot.

    Return type:

    bool

    execute(review, repository=None, base_commit_id=None, **kwargs)[source]¶

    Perform a review using the tool.

    Changed in version 3.0: settings is deprecated in favor of the settings attribute on the instance. It’s still provided in 3.0.

    **kwargs is now expected.

    Parameters:
    • review (reviewbot.processing.review.Review) – The review object.

    • repository (reviewbot.repositories.Repository, optional) – The repository.

    • base_commit_id (str, optional) – The ID of the commit that the patch should be applied to.

    • **kwargs (dict, unused) – Additional keyword arguments, for future expansion.

    build_base_command(**kwargs)[source]¶

    Build the base command line used to review files.

    This will be passed to handle_file() for each file. It’s useful for constructing a common command line and arguments that will apply to each file in a diff.

    New in version 3.0.

    Parameters:

    **kwargs (dict, unused) – Additional keyword arguments, for future expansion.

    Returns:

    The base command line.

    Return type:

    list of str

    handle_files(files, **kwargs)[source]¶

    Perform a review of all files.

    This may be overridden by subclasses for tools that process all files at once.

    Changed in version 3.0: settings is deprecated in favor of the settings attribute on the instance. It’s still provided in 3.0.

    **kwargs is now expected.

    These will be enforced in Review Bot 4.0.

    Parameters:
    • files (list of reviewbot.processing.review.File) – The files to process.

    • **kwargs (dict) – Additional keyword arguments passed to execute(). This is intended for future expansion.

    handle_file(f, path=None, base_command=None, **kwargs)[source]¶

    Perform a review of a single file.

    This method may be overridden by subclasses to process an individual file.

    Changed in version 3.0: settings is deprecated in favor of the settings attribute on the instance. It’s still provided in 3.0.

    path is added, which is the result of a get_patched_file_path() command, and must be valid for this method to be called.

    base_command is added, which would be the result of build_base_command().

    **kwargs is now expected.

    These will be enforced in Review Bot 4.0.

    Parameters:
    • f (reviewbot.processing.review.File) – The file to process.

    • path (str, optional) –

      The local path to the patched file to review.

      This won’t be passed for legacy tools.

    • base_command (list of str, optional) – The common base command line used for reviewing a file, if returned from build_base_command().

    • **kwargs (dict) – Additional keyword arguments passed to handle_files(). This is intended for future expansion.

    __annotations__ = {}¶

    Keep up with the latest Review Board releases, security updates, and helpful information.

    About
    News
    Demo
    RBCommons Hosting
    Integrations
    Happy Users
    Support Options
    Documentation
    FAQ
    User Manual
    RBTools
    Administration Guide
    Power Pack
    Release Notes
    Downloads
    Review Board
    RBTools
    Djblets
    Power Pack
    Package Store
    PGP Signatures
    Contributing
    Bug Tracker
    Submit Patches
    Development Setup
    Wiki
    Follow Us
    Mailing Lists
    Reddit
    Twitter
    Mastodon
    Facebook
    YouTube

    Copyright © 2006-2025 Beanbag, Inc. All rights reserved.

    Terms of Service — Privacy Policy — AI Ethics Policy — Branding

    On this page

    • [Top]
    • BaseTool
      • BaseTool.settings
      • BaseTool.name
      • BaseTool.description
      • BaseTool.version
      • BaseTool.exe_dependencies
      • BaseTool.file_patterns
      • BaseTool.options
      • BaseTool.working_directory_required
      • BaseTool.timeout
      • BaseTool.__init__()
      • BaseTool.logger
      • BaseTool.check_dependencies()
      • BaseTool.get_can_handle_file()
      • BaseTool.execute()
      • BaseTool.build_base_command()
      • BaseTool.handle_files()
      • BaseTool.handle_file()
      • BaseTool.__annotations__