Skip to content

Dead code: unreachable null check on @Parameter(required=true) in ToolchainMojo #175

Description

@elharo

Summary

ToolchainMojo.execute() contains a null check on the toolchains field that is annotated with @Parameter(required = true). Maven enforces required parameters before the mojo executes, making this check dead code.

Location

ToolchainMojo.java:58-61

https://github.com/apache/maven-toolchains-plugin/blob/master/src/main/java/org/apache/maven/plugins/toolchain/ToolchainMojo.java#L58-L61

Code

@Parameter(required = true)
private ToolchainsRequirement toolchains;

@Override
public void execute() throws MojoExecutionException, MojoFailureException {
    if (toolchains == null) {
        // should not happen since parameter is required...
        getLog().warn("No toolchains requirements configured.");
        return;
    }
    // ...
}

Problem

  1. @Parameter(required = true) means Maven will fail the build with an error if the toolchains configuration is not provided
  2. The null check guard is unreachable because execution never reaches the mojo if a required parameter is missing
  3. The comment // should not happen since parameter is required... confirms the developer knew this was dead code
  4. If it did somehow execute, silently returning with just a warning is the wrong behavior for a missing required config

Impact

Dead code increases maintenance burden and gives a false impression that the plugin handles missing configuration gracefully (it doesn't - Maven handles it beforehand).

Suggested Fix

Remove the null check block entirely.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions