cyberark/secretless-broker

View on GitHub
.codeclimate.yml

Summary

Maintainability
Test Coverage
# This is our default .CodeClimate.yml, broken out by language. Uncomment the
# sections at the bottom that apply to your project. ACTION comments indicate
# places where config might need to be tweaked.

version: "2"

checks:

  #----------------
  # These maintainability checks are language independent and check against all languages

  method-lines:
    config:
      threshold: 70
  return-statements:
    config:
      threshold: 7

plugins:

# ---------------
# Cross-language plugins. Should always be on.

  duplication: # Looks for similar and identical code blocks
    enabled: true
    config:
      languages:
        go:
        java:
        javascript:
        php:
        python:
          python_version: 3  # ACTION Comment this out if using Python 2
        ruby:
        swift:
        typescript:
    exclude_patterns:
      # Exclude individual tests that have code duplication
      - "internal/util/health_test.go"
      - "test/connector/tcp/mysql/tests/init_test.go"
      - "test/connector/tcp/mysql/tests/essentials_test.go"
      - "test/connector/tcp/pg/tests/init_test.go"
      - "test/connector/tcp/pg/tests/essentials_test.go"

  fixme: # Flags any FIXME, TODO, BUG, XXX, HACK comments so they can be fixed
    enabled: true
    config:
      strings:
      - FIXME
      - TODO
      - HACK
      - XXX
      - BUG
    exclude_patterns:
      # Exclude `context.T O D O()` false positives
      - "internal/configurationmanagers/kubernetes/"
      - "internal/providers/kubernetessecrets/"
      - "test/providers/kubernetessecrets/"

# ---------------
# Commonly-used languages - run time is minimal and all of these will work
# whether files of that language are found or not. In general, leave uncommented

  # Markdown
  markdownlint:
    enabled: true
    # ... CONFIG CONTENT ...
    checks:
      MD034:
        enabled: false

  # Go
  gofmt:
    enabled: true
  golint:
    enabled: true
    exclude_patterns:
      - "**/"                # exclude all
      - "!./cmd/"            # unexclude just the ones we want to lint
      - "!./internal/"
      - "!./pkg/"
      - "!./test/"
  govet:
    enabled: true

  # Ruby
  flog:
    enabled: true
  reek:
    enabled: true
  rubocop:
    enabled: true
    channel: rubocop-0-79 # As of March 10, 2020, rubocop 0.80.1 is the latest
                          # However, it does not work with CodeClimate - throws
                          # an Invalid JSON error.
  # ACTION uncomment bundler-audit below if using Gemfile/Gemfile.lock
  # ACTION uncomment brakeman below if using Rails

  # Shell scripts
  shellcheck:
   enabled: true
   checks:
    # Disable 'Not following' check - it doesn't handle ". ./script.sh" properly
    SC1091:
      enabled: false
    SC2148:
      enabled: false

# ---------------
# Other languages - will work with or without language files present. Again,
# runtime is minimal, so OK to leave uncommented.

  # CoffeeScript
  coffeelint:
    enabled: true

  # CSS
  csslint:
    enabled: true

  # Groovy
  codenarc:
    enabled: true

  # Java
  pmd:
    enabled: true
  sonar-java:
    enabled: true
    config:
      sonar.java.source: "7" # ACTION set this to the major version of Java used
  # ACTION uncomment checkstyle below if Java code exists in repo

  # Node.js
  nodesecurity:
    enabled: true
  # ACTION uncomment eslint below if JavaScript already exists and .eslintrc
  # file exists in repo

  # PHP
  phan:
    enabled: true
    config:
      file_extensions: "php"
  phpcodesniffer:
    enabled: true
    config:
      file_extensions: "php,inc,lib"
      # Using Wordpress standards as our one PHP repo is a Wordpress theme
      standards: "PSR1,PSR2,WordPress,WordPress-Core,WordPress-Extra"
  phpmd:
    enabled: true
    config:
      file_extensions: "php,inc,lib"
      rulesets: "cleancode,codesize,controversial,naming,unusedcode"
  sonar-php:
    enabled: true

  # Python
  bandit:
    enabled: true
  pep8:
    enabled: true
  radon:
    enabled: true
    # config:
    #   python_version: 2 # ACTION Uncomment these 2 lines if using Python 2
  sonar-python:
    enabled: true

# ---------------
# Configuration Required Language specific - these will error and abort the
# codeclimate run if they are turned on and certain files or configuration are
# missing. Should be commented out unless the project already includes the
# necessary files that the linter looks at

  # Ruby - requires presence of Gemfile and Gemfile.lock
  # bundler-audit:
  #   enabled: true

  # Rails - requires detecting a Rails application
  # brakeman:
  #   enabled: true

  # Chef - requires detecting a cookbook
  # foodcritic:
  #   enabled: true

  # Java - might require Java code? Errored when run without
  # checkstyle:
  #   enabled: true

  # JavaScript - requires an eslintrc to be created and added to project
  # eslint:
  #   enabled: true
  #   channel: "eslint-6"

# ---------------
# List any files/folders to exclude from checking. Wildcards accepted. Leave
# commented if no files to exclude as an empty array will error
exclude_patterns:
  - ".gitignore"
  # Exclude autogenerated code
  - "pkg/k8sclient/"