Search code examples
spring-bootgradlecheckstyle

When running checkstyle, it throws an error saying can't process some files, preventing the HTML report from getting generatred


I am trying to run a checktyle main check, and it says that an error occoured when it tried to run the files.

This is the exact error:

Execution failed for task ':checkstyleMain'.
> A failure occurred while executing org.gradle.api.plugins.quality.internal.CheckstyleAction
   > An unexpected error occurred configuring and executing Checkstyle.
      > Unable to process files: [F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\config\HttpsSetup.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\config\MyUserDetails.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\config\WebSecurity.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\CommunityController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\ExceptionHandlerController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\FamilyTreeController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\CommunityForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\FamilyTreeForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\RecipeForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\RegistrationForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\HomeController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\LoginController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\RecipeController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\RegistrationController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\UnitConversionsController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\community\Community.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Event.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Family.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Individual.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Tree.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Image.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Ingredient.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Instruction.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Recipe.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Tag.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\TagInitializationRunner.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\unitConversions\ConvertedUnit.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\PasswordRules.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\Role.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\User.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\UserRole.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\CommunityRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\FamilyTreeRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\IndividualRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\RecipeRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\TagRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\UserRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\RnRApplication.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\community\CommunityCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\community\CommunityService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\community\CommunityServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\emailService\EmailService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\emailService\EmailServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\FamilyTreeService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\FamilyTreeServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\StandardiseDate.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\TreeCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\genericService\GenericService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\genericService\GenericServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\image\ImageService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\image\ImageServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\recipe\RecipeCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\recipe\RecipeService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\recipe\RecipeServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromCup.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromFluidOunce.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromGallon.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromLiter.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromMilliliter.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromPint.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromTbsp.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromTsp.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromGram.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromKilogram.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromMilligram.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromOunce.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromPound.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromStone.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\UnitConversionsService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\UnitConversionsServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\MyUserDetailsService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\UserCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\UserService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\UserServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\CONSTANTS.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\DoubleCheck\DoubleCheck.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\DoubleCheck\DoubleValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\FileExtensionCheck\FileExtensionCheck.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\FileExtensionCheck\FileExtensionValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\IntegerCheck\IntegerCheck.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\IntegerCheck\IntegerValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\PasswordMatcher\PasswordMatcher.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\PasswordMatcher\PasswordMatcherValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidateString\StringValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidateString\ValidateString.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\LowercaseConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\LowercaseValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\NumbersConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\NumbersValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\SpecialCharConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\SpecialCharValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\UppercaseConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\UppercaseValidator.java]

However, it is able to identify a few of the errors before failing, so I am not sure why this happens (roughly 70).

This is how my build.gradle file looks:

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.0'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'checkstyle'
}

group = 'FamilyFusion'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    // Spring Boot Starters
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'

    // Validation
    implementation 'org.springframework.boot:spring-boot-starter-validation:3.0.6'

    // Thymeleaf Extras
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
    implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.2.1'

    // File Upload
    implementation 'commons-fileupload:commons-fileupload:1.5'

    // Gedcom4j
    implementation 'org.gedcom4j:gedcom4j:4.0.1'

    // JSON
    implementation 'org.json:json:20230618'

    // Checkstyle
    implementation 'checkstyle:checkstyle:5.0'

    // Lombok
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    // Development Tools
    developmentOnly 'org.springframework.boot:spring-boot-devtools'

    // Database Connector
    runtimeOnly 'com.mysql:mysql-connector-j'

    // Testing
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

checkstyle {
    toolVersion = 8.25
    checkstyleTest.enabled = false
    ignoreFailures = false
}

tasks.named('test') {
    useJUnitPlatform()
}

Am I doing anything wrong in the setup process? It used to work in the beginning, however for some reason, it stopped working at some point and I haven't been able to get it to work since.

I have the checkstyle xml files in a config/checkstyle folder that is in the same directory as the build.gradle file.


Solution

  • I am not sure why this worked for me, but I stumbled on this by pure chance. If someone knows why this works, please tell me. I am trying to learn checkstyle:

    checkstyle {
        toolVersion = 8.40
        maxWarnings = 0
        ignoreFailures = false
    }
    
    tasks.withType(Checkstyle).configureEach {
        reports {
            xml.required = true
            html.required = true
        }
    }
    

    I used this website: https://datamify.medium.com/java-checkstyle-how-to-format-your-java-code-with-checkstyle-929565ce39a3

    I only used the gradle settings, not the checkstyle file. I used my own for that