code: public static ProjectValidationResult validateProject( File appDirectory ) {
  
  		// Determine whether the project is a recipe one.
  
  		// Since a Roboconf project is not mandatory a Maven project,
  		// we cannot rely on the POM. But we make the hypothesis that
  		// if the project has neither a descriptor file, nor instances,
  		// then it can be considered as a recipe project.
  
  		// If there is a POM that indicates it is (or not) a recipe
  		// project, then errors will appear during the Maven build.
  		File instancesDir = new File( appDirectory, Constants.PROJECT_DIR_INSTANCES );
  		boolean isRecipe =
  				! new File( appDirectory, Constants.PROJECT_DIR_DESC + "/" + Constants.PROJECT_FILE_DESCRIPTOR ).exists()
  				&& (! instancesDir.isDirectory() || Utils.listAllFiles( instancesDir ).isEmpty());
  
  		// Validate the project then
  		return validateProject( appDirectory, isRecipe );
  	}
docs: Validates a project.
  <p>
  Whereas {@link #validateProject(File, boolean)}, this method tries to
  guess whether the project is a recipe one or not. It assumes that
  if the project has neither a descriptor file, nor instances,
  then it can be considered as a recipe project
  </p>
  
  @param appDirectory the application's directory (must exist)
  @return a non-null list of errors, with the resolved location (sorted by error code)