GithubHelp home page GithubHelp logo

oliviernotteghem / bazel_rules_detekt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from buildfoundation/bazel_rules_detekt

0.0 0.0 0.0 214 KB

Bazel rules for Detekt (Kotlin static analysis tool)

License: Apache License 2.0

Shell 7.32% Java 48.52% Kotlin 0.26% Starlark 43.91%

bazel_rules_detekt's Introduction

bazel_rules_detekt

The Detekt (a Kotlin static analysis tool) integration for the Bazel build system.

Features

Usage

MODULE.bazel Configuration

bazel_dep(name = "rules_detekt", version = "...")

WORKSPACE Configuration

First of all you need to declare the rule in the WORKSPACE file. Please refer to GitHub releases for the version and the SHA-256 hashsum.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

rules_detekt_version = "see-github-releases-page"
rules_detekt_sha = "see-github-releases-page"

http_archive(
    name = "rules_detekt",
    sha256 = rules_detekt_sha,
    strip_prefix = "bazel_rules_detekt-{v}".format(v = rules_detekt_version),
    url = "https://github.com/buildfoundation/bazel_rules_detekt/archive/v{v}.tar.gz".format(v = rules_detekt_version),
)

load("@rules_detekt//detekt:dependencies.bzl", "rules_detekt_dependencies")
rules_detekt_dependencies()

load("@rules_detekt//detekt:toolchains.bzl", "rules_detekt_toolchains")
rules_detekt_toolchains()

bazelrc Configuration

Users on Bazel releases prior to 5.1.0 need to enable the JSON Persistent Worker protocol in their .bazelrc like so:

build --experimental_worker_allow_json_protocol

This option became stable and enabled by default for newer Bazel releases.

BUILD Configuration

Once declared in the WORSKPACE or MODULE.bazel file, the rule can be loaded in the BUILD file.

load("@rules_detekt//detekt:defs.bzl", "detekt_test")

detekt_test(
    name = "my_detekt",
    srcs = glob(["src/main/kotlin/**/*.kt"]),
)

See available attributes.

Execution

$ bazel build //mypackage:my_detekt

Results will be cached on successful runs.

Advanced Configuration

Detekt Version

Change the MODULE.bazel file:

detekt = use_extension("//detekt:extensions.bzl", "detekt")
detekt.detekt_version(
    version = "x.x.x",
    sha256 = "x.x.x.sha256",
)
use_repo(detekt, "detekt_cli_all")

Or change the WORKSPACE file:

load("@rules_detekt//detekt:versions.bzl", "detekt_version")
load("@rules_detekt//detekt:dependencies.bzl", "rules_detekt_dependencies")

rules_detekt_dependencies(
    detekt_version = detekt_version(
        version = "x.x.x",
        sha256 = "x.x.x.sha256",
    )
)

JVM Flags

Define a toolchain in a BUILD file:

load("@rules_detekt//detekt:toolchain.bzl", "detekt_toolchain")

detekt_toolchain(
    name = "my_detekt_toolchain_impl",
    jvm_flags = ["-Xms16m", "-Xmx128m"],
)

toolchain(
    name = "my_detekt_toolchain",
    toolchain = "my_detekt_toolchain_impl",
    toolchain_type = "@rules_detekt//detekt:toolchain_type",
)

Change the WORKSPACE file:

load("@rules_detekt//detekt:toolchains.bzl", "rules_detekt_toolchains")

rules_detekt_toolchains(toolchain = "//mypackage:my_detekt_toolchain")

bazel_rules_detekt's People

Contributors

arturdryomov avatar bencodes avatar artem-zinnatullin avatar dependabot[bot] avatar davidkurkov avatar kernald avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.