ruleset {
  ruleset('rulesets/basic.xml') {
    EmptyCatchBlock(enabled:false)
  }
  ruleset('rulesets/braces.xml')
  ruleset('rulesets/comments.xml') {
    // Not necessarily an issue
    JavadocEmptyFirstLine(enabled:false)
    JavadocEmptyLastLine(enabled:false)
    JavadocMissingParamDescription(enabled:false)
    JavadocConsecutiveEmptyLines(enabled:false)
  }
  ruleset('rulesets/concurrency.xml') {
    // Not necessarily an issue
    BusyWait(enabled:false)
  }
  ruleset('rulesets/convention.xml') {
    // Don't need due to code readablilty
    NoDef(enabled:false)
    // Not necessarily an issue
    CompileStatic(enabled:false)
    // TBD
    CouldBeElvis(enabled:false)
    // Not necessarily an issue
    TrailingComma(enabled:false)
    // Not necessarily an issue
    VariableTypeRequired(enabled:false)
    // Not necessarily an issue
    FieldTypeRequired(enabled:false)
    // Not necessarily an issue
    MethodParameterTypeRequired(enabled:false)
    // Not necessarily an issue
    MethodReturnTypeRequired(enabled:false)
    // Not necessarily an issue
    NoJavaUtilDate(enabled:false)
  }
  ruleset('rulesets/design.xml') {
    // Don't need due to code readablilty
    BuilderMethodWithSideEffects(enabled:false)
    // Sometimes nested loop is cleaner than extracting a new method
    NestedForLoop(enabled:false)
    // TBD
    ImplementationAsType(enabled:false)
    // Not necessarily an issue
    Instanceof(enabled:false)
  }
  ruleset('rulesets/dry.xml') {
    DuplicateNumberLiteral(enabled: false)
    DuplicateStringLiteral(enabled: false)
    DuplicateMapLiteral(enabled: false)
    DuplicateListLiteral(enabled: false)
  }
//  Raises a lot of "Compilation failed" warnings
//  ruleset('rulesets/enhanced.xml')
  ruleset('rulesets/exceptions.xml') {
    // Not necessarily an issue
    CatchException(enabled:false)
    // Not necessarily an issue
    ThrowRuntimeException(enabled:false)
    // Not necessarily an issue
    ReturnNullFromCatchBlock(enabled:false)

  }
  ruleset('rulesets/formatting.xml') {
    // Don't need due to code readablilty
    ConsecutiveBlankLines(enabled:false)
    // TBD
    SpaceAfterClosingBrace(enabled:false)
    SpaceBeforeOpeningBrace(enabled:false)
    // Enforce at least one space after map entry colon
    //SpaceAroundMapEntryColon {
    //        characterAfterColonRegex = /\s/
    //        characterBeforeColonRegex = /./
    //}
    SpaceAroundMapEntryColon(enabled:false)
    //TBD
    Indentation(enabled:false)
    // TBD
    LineLength(enabled: false)
    BlockStartsWithBlankLine(enabled: false)
    BlockEndsWithBlankLine(enabled: false)
  }
  ruleset('rulesets/generic.xml')
  ruleset('rulesets/grails.xml')
  ruleset('rulesets/groovyism.xml') {
    // Not necessarily an issue
    GStringExpressionWithinString(enabled:false)
  }
  ruleset('rulesets/imports.xml')
  ruleset('rulesets/jdbc.xml')
  ruleset('rulesets/junit.xml')
  ruleset('rulesets/logging.xml') {
    // Can't be used in jenklins pipelines
    Println(enabled:false)
  }
  ruleset('rulesets/naming.xml') {
    // Don't need due to code readablilty
    FactoryMethodName(enabled:false)
    // Don't need due to code readablilty
    VariableName(enabled:false)
  }
  ruleset('rulesets/security.xml') {
    // Don't need to satisfy the Java Beans specification
    JavaIoPackageAccess(enabled:false)
  }
  ruleset('rulesets/serialization.xml')
  ruleset('rulesets/size.xml') {
    // TBD
    AbcMetric(enabled:false)
    // TBD
    MethodSize(enabled:false)
    // TBD
    NestedBlockDepth(enabled:false)
    // Not necessarily an issue
    ParameterCount(enabled:false)
    CyclomaticComplexity(enabled:false)
  }
  ruleset('rulesets/unnecessary.xml') {
    // Don't need due to code readablilty
    UnnecessaryDefInVariableDeclaration(enabled:false)
    // Not necessarily an issue
    UnnecessaryGetter(enabled:false)
    // Not necessarily an issue
    UnnecessarySetter(enabled:false)
    // Not necessarily an issue
    UnnecessaryReturnKeyword(enabled:false)
    // Not necessarily an issue
    UnnecessaryObjectReferences(enabled:false)
    // Not necessarily an issue
    UnnecessaryCollectCall(enabled:false)
  }
  ruleset('rulesets/unused.xml')
}
