/** * 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); } }
/** * 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)); } }