コード例 #1
0
  /**
   * L'analyse complète consiste en :
   *
   * <ul>
   *   <li>Lancement du parsing sur l'application
   *   <li>Création des rapports
   *   <li>Création des beans à partir des rapports
   *   <li>Transformation des beans en beans persistants
   *   <li>Persistance des beans
   * </ul>
   *
   * A la fin de l'analyse on effectue les opérations de cloture de tache
   *
   * @throws TaskException Si un problème d'exécution apparaît.
   */
  public void execute() throws TaskException {
    try {
      initialize();
      LOGGER.info(
          McCabeMessages.getString("logs.analyzing")
              + mProject.getParent().getName()
              + " - "
              + mProject.getName());
      int resultParse = parseSource();
      if (0 == resultParse) {
        // Si le parsing s'est bien déroulé, on génère les rapports
        // Creation de la base de rapports
        createSpcFile(mConfiguration);
        String reportName = null;
        for (int i = 0; i < mConfiguration.getReports().size(); i++) {
          // Pour chaque nom de rapport configurés dans le fichier de configuration
          // McCabe, on va le créer, le parser et le mapper sur les objets
          reportName = (String) mConfiguration.getReports().get(i);
          createReport(reportName);
        }
        // On parse maintenant les rapports
        for (int i = 0; i < mConfiguration.getReports().size(); i++) {
          // Pour chaque nom de rapport configurés dans le fichier de configuration
          // McCabe, on va le créer, le parser et le mapper sur les objets
          reportName = (String) mConfiguration.getReports().get(i);
          parseReport(reportName);
        }

        // Une fois que tous les rapports ont été générés et parsés,
        // on peut générer les résultats de niveau projet
        persistProjectResult();
      }

      // positionne les données sur la taille du file System
      affectFileSystemSize(mConfiguration.getSubWorkspace(), true);

      // Lance les opérations de cloture de la tâche
      FileUtility.deleteRecursively(mConfiguration.getSubWorkspace());
      if (0 != resultParse) {
        // Si le parsing ne s'est pas bien déroulé, on lance une exception
        throw new Exception(McCabeMessages.getString("exception.parsing_error"));
      }
      if (mErrorWriter != null) {
        mErrorWriter.close();
      }
    } catch (Exception e) {
      throw new TaskException(e);
    }
  }
コード例 #2
0
 /**
  * Création du fichier de configuration McCabe Ce fichier de configuration contient la liste des
  * fichiers
  *
  * @param pFile fichier
  * @throws Exception si erreur
  */
 protected void createProjectConfigurationFile(McCabePCFFile pFile) throws Exception {
   pFile.build();
   // On copie le PCF sous le nom <projet>.pcf si le nombre de fichiers .pcf dans le workspace
   // est < 10
   File backupDir =
       new File(
           mConfiguration.getWorkspace()
               + File.separator
               + McCabeMessages.getString("pcf.log.dir"));
   backupDir.mkdirs();
   File[] backupDirFiles = backupDir.listFiles();
   if (backupDirFiles != null) {
     // On tri selon le nom du fichier décroissant pour ne pas écraser les fichiers qui porte sur
     // le
     // même projet.
     List files = Arrays.asList(backupDirFiles);
     Collections.sort(files);
     Collections.reverse(files);
     // On renomme tous les fichiers avec l'extension ext+1
     String fileName;
     String newFileName;
     File backUpFile = null;
     int ext;
     for (int i = 0; i < files.size(); i++) {
       fileName = ((File) files.get(i)).getName();
       // Si un fichier porte l'extension max, on le supprime
       if (fileName.matches(".*\\." + (McCabeConfiguration.MAX_PCF_SAVED - 1))) {
         ((File) files.get(i)).delete();
       } else {
         ext = 0;
         // On récupère l'extension
         int lastDot = fileName.lastIndexOf(".");
         if (lastDot > 0) {
           try {
             ext = Integer.parseInt(fileName.substring(lastDot + 1)) + 1;
             // On renomme le fichier
             newFileName = fileName.substring(0, lastDot + 1) + ext;
             ((File) files.get(i))
                 .renameTo(
                     new File(
                         backupDirFiles[i].getParentFile().getAbsoluteFile()
                             + File.separator
                             + newFileName));
           } catch (NumberFormatException nbfe) {
             // On renommera le fichier avec l'extension 1 (pour ne pas écraser celui
             // qui existe)
             backUpFile = (File) files.get(i);
           }
         }
       }
     }
     // On copie le fichier pcf dans le répertoire de sauvegarde
     String backupName =
         backupDir.getAbsolutePath() + File.separator + mProject.getName() + ".pcf";
     // On renomme le fichier extension.1 si il existe
     if (backUpFile != null) {
       backUpFile.renameTo(new File(backUpFile.getAbsolutePath() + ".1"));
     }
     FileUtility.copyFile(pFile.getPcfFile(), new File(backupName));
   }
 }