コード例 #1
0
 /**
  * Prépare l'environnement d'exécution de l'analyse :
  *
  * <ul>
  *   <li>Création du dossier destination des résultats du parsing
  *   <li>Création du fichier config.pcf
  * </ul>
  *
  * @exception Exception si un probleme d'initialisation apparait
  */
 protected void initialize() throws Exception {
   // On récupère la configuration du module McCabe, personnalisée
   // avec les paramètres du projet
   mConfiguration =
       McCabeConfiguration.build(
           mProject, McCabeMessages.getString("configuration.file"), getData());
   try {
     // On tente de le créer si il n'existe pas
     mConfiguration.getErrorLogger().getParentFile().mkdirs();
     mErrorWriter = new BufferedWriter(new FileWriter(mConfiguration.getErrorLogger()));
   } catch (IOException ioe) {
     // On log l'erreur
     LOGGER.warn(
         "Erreur sur le fichier de log des erreurs : "
             + mConfiguration.getErrorLogger().getAbsolutePath());
     LOGGER.warn(ioe);
   }
   File workspace = mConfiguration.getWorkspace();
   if (!workspace.exists()
       || !workspace.isDirectory()
       || !workspace.canWrite()
       || !workspace.canRead()) {
     // On va vérifier que le workspace est disponible
     throw new Exception(McCabeMessages.getString("exception.no_workspace"));
   }
   // On crée le fichier de description de l'analyse dans le workspace
   McCabePCFFile pcfFile = new McCabePCFFile(mConfiguration, getData());
   createProjectConfigurationFile(pcfFile);
   // On crée une instance de persisteur et du template utilisant la session déjà ouverte
   setParser();
   setPersistor();
   LOGGER.info(
       McCabeMessages.getString("logs.initialized")
           + mProject.getParent().getName()
           + " - "
           + mProject.getName());
 }
コード例 #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));
   }
 }