/** * Copyright (C) 2008-2010, Squale Project - http://www.squale.org * * This file is part of Squale. * * Squale is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or any later version. * * Squale is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Squale. If not, see <http://www.gnu.org/licenses/>. */ package org.squale.squalix.tools.mccabe; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.squale.squalix.util.csv.CSVParser; import org.squale.squalix.util.parser.J2EEParser; /** * Ex�cute l'analyse McCabe sur un projet java. L'environnement McCabe doit �tre correctement initialis� avant le * lancement de la t�che, ou la commande "cli" appel�e doit pointer vers un script qui le met en place.<br> * <br> * Il est important que la g�n�ration des rapports d�bute par celle du niveau m�thode, afin de pouvoir correctement * cr�er les composants ClassBO si n�cessaire.<br> * L'ordre des rapports dans le configuration est resp�ct�. */ public class JavaMcCabeTask extends OOMcCabeTask implements CSVParser.CSVHandler { /** * Logger */ private static final Log LOGGER = LogFactory.getLog( JavaMcCabeTask.class ); /** * Constructeur */ public JavaMcCabeTask() { mName = "JavaMcCabeTask"; } /** * {@inheritDoc} On doit utiliser un parser java * * @see org.squale.squalix.tools.mccabe.AbstractMcCabeTask#setParser() */ public void setParser() { mParser = new J2EEParser( mProject ); } /** * {@inheritDoc} * * @see org.squale.squalix.tools.mccabe.AbstractMcCabeTask#setClassTemplate() */ public void setClassTemplate() { mClassTemplate = "csv.java.template.class"; } /** * {@inheritDoc} * * @see org.squale.squalix.tools.mccabe.AbstractMcCabeTask#createReport(java.lang.String) */ protected void createReport( String pReport ) throws Exception { // G�n�ration du rapport super.createReport( pReport ); // Dans le cas d'un rapport de type classe // on va lire ce rapport pour extraire les noms de classe if ( pReport.startsWith( McCabeMessages.getString( "reports.profile.class" ) ) ) { String fileName = computeReportFileName( pReport ); LOGGER.info( McCabeMessages.getString( "logs.java.class.preprocess", fileName ) ); // Lecture du contenu de ce fichier pour en extraire les noms de // classes et les stocker dans le JavaParser CSVParser parser = new CSVParser( McCabeMessages.getString( "csv.config.file" ) ); parser.parseLines( McCabeMessages.getString( mClassTemplate ), fileName, this ); } } /** * {@inheritDoc} * * @see org.squale.squalix.util.csv.CSVParser.CSVHandler#processLine(java.util.ArrayList) */ public void processLine( List pLine ) { ( (J2EEParser) mParser ).addKnownClass( (String) pLine.get( 0 ) ); } }