@Override
  public void validate() throws CmdlineArgsValidationException {
    // project path
    final String projectPath = determineProjectPath();
    if (projectPath == null) {
      throw new CmdlineArgsValidationException("Project not found.");
    }
    else if (!new File(projectPath).exists()) {
      throw new CmdlineArgsValidationException("Project '" + projectPath + "' not found.");
    }

    // Dir to inspect: check only if set
    if (getDirToInspectProperty() != null) {
      final String dirToInspect = determineDirectoryToInspect(projectPath);
      if (dirToInspect == null) {
        throw new CmdlineArgsValidationException("Directory to inspect for project '" + projectPath + "' not found.");
      }
    }

    final String xsltSchemePath = getXSLTSchemePathProperty();
    if (xsltSchemePath != null) {
      final File xsltScheme = new File(xsltSchemePath);
      if (!xsltScheme.exists()) {
        throw new CmdlineArgsValidationException("XSLT scheme '" + xsltSchemePath + "' not found.");
      }
    }

    final String outputFormat = getOutputFormatProperty();
    if (outputFormat != null) {
      StringBuilder builder = new StringBuilder();
      for (InspectionsReportConverter converter : InspectionsReportConverter.EP_NAME.getExtensionList()) {
        final String converterFormat = converter.getFormatName();
        if (outputFormat.equals(converterFormat)) {
          builder = null;
          break;
        }
        else {
          if (!builder.isEmpty()) {
            builder.append(", ");
          }
          builder.append(converterFormat);
        }
      }
      // report error if converter isn't registered.
      if (builder != null) {
        throw new CmdlineArgsValidationException("Unsupported format option '" + outputFormat + "'. Please use one of: " + builder);
      }
    }
  }
@Override
  public void validate()