/** * Génère un rapport de métriques McCabe. * * @param pReport le nom de rapport à générer. * @throws Exception si un problème d'exécution apparaît. */ protected void createReport(final String pReport) throws Exception { LOGGER.info(McCabeMessages.getString("logs.create.report", pReport)); // Lancement de la création de tous les rapports String reportFileName = computeReportFileName(pReport); ArrayList params = new ArrayList(); params.add(mConfiguration.getCliCommand()); String param = null; for (int j = 0; j < mConfiguration.getMetricsCommand().length; j++) { // Remplacer les paramètres configurables (%...%), ce sont des paramètres // qui remplacent des clés dans les paramètres de configuration // des analyses McCabe (classpath pour Java,...) param = mConfiguration.getMetricsCommand()[j].replaceAll( McCabeMessages.getString("key.substition.report_name"), pReport); param = param.replaceAll(McCabeMessages.getString("key.substition.report_out"), reportFileName); params.add(param); } String type[] = new String[0]; String modifiedParams[] = (String[]) params.toArray(type); mProcess = createProcessManager( modifiedParams, mConfiguration.getSubWorkspace(), mConfiguration.getLogger()); // On veut gérer les informations lancées par le processus en sortie mProcess.setOutputHandler(this); int resultMetrics = mProcess.startProcess(this); if (resultMetrics != 0) { throw new McCabeException( McCabeMessages.getString("error.processing") + " #" + resultMetrics); } }
/** * Parse les fichiers sources afin d'en extraire les métriques. * * @return le résultat du process de parsing. * @throws Exception si un problème de parsing apparaît. */ protected int parseSource() throws Exception { // Execute le parsing des sources avec McCabe String[] parseCommand = new String[mConfiguration.getParserCommand().length + 1]; parseCommand[0] = mConfiguration.getCliCommand(); for (int i = 1; i < parseCommand.length; i++) { // On met en forme la liste des paramètres pour la passer au process parseCommand[i] = mConfiguration.getParserCommand()[i - 1]; } LOGGER.info( McCabeMessages.getString( "logs.running_parsing", new Object[] {mProject.getParent().getName(), mProject.getName()})); mProcess = createProcessManager( parseCommand, mConfiguration.getSubWorkspace(), mConfiguration.getLogger()); // On veut gérer les informations lancées par le processus en sortie mProcess.setOutputHandler(this); // On cherche à avoir un comportement synchrone pour être sûr de ne pas // avoir un état des données incohérent int resultParse = mProcess.startProcess(this); LOGGER.info( McCabeMessages.getString( "logs.return_parsing", new Object[] { mProject.getParent().getName(), mProject.getName(), new Integer(resultParse) })); return resultParse; }