docs: @Override
      protected void checkParameters() {
          super.checkParameters();
  
          if (projectFile == null && classLocations.size() == 0 && filesets.size() == 0 && dirsets.size() == 0 && auxAnalyzepath == null) {
              throw new BuildException("either projectfile, <class/>, <fileset/> or <auxAnalyzepath/> child "
                      + "elements must be defined for task <" + getTaskName() + "/>", getLocation());
          }
  
          if (outputFormat != null
                  && !("xml".equalsIgnoreCase(outputFormat.trim()) || "xml:withMessages".equalsIgnoreCase(outputFormat.trim())
                          || "html".equalsIgnoreCase(outputFormat.trim()) || "text".equalsIgnoreCase(outputFormat.trim())
                          || "xdocs".equalsIgnoreCase(outputFormat.trim()) || "emacs".equalsIgnoreCase(outputFormat.trim()))) {
              throw new BuildException("output attribute must be either " + "'text', 'xml', 'html', 'xdocs' or 'emacs' for task <"
                      + getTaskName() + "/>", getLocation());
          }
  
          if (reportLevel != null
                  && !("experimental".equalsIgnoreCase(reportLevel.trim()) || "low".equalsIgnoreCase(reportLevel.trim())
                          || "medium".equalsIgnoreCase(reportLevel.trim()) || "high".equalsIgnoreCase(reportLevel.trim()))) {
              throw new BuildException("reportlevel attribute must be either "
                      + "'experimental' or 'low' or 'medium' or 'high' for task <" + getTaskName() + "/>", getLocation());
          }
  
          // FindBugs allows both, so there's no apparent reason for this check
          // if ( excludeFile != null && includeFile != null ) {
          // throw new BuildException("only one of excludeFile and includeFile " +
          // " attributes may be used in task <" + getTaskName() + "/>",
          // getLocation());
          // }
  
          List<String> efforts = Arrays.asList( "min", "less", "default", "more", "max");
          if (effort != null && !efforts.contains(effort)) {
              throw new BuildException("effort attribute must be one of " + efforts);
          }
      }