1 //////////////////////////////////////////////////////////////////////////////// 2 // 3 // ObjectLab is sponsoring QALab 4 // 5 // Based in London, we are world leaders in the design and development 6 // of bespoke applications for the Securities Financing markets. 7 // 8 // <a href="http://www.objectlab.co.uk/open">Click here to learn more</a> 9 // ___ _ _ _ _ _ 10 // / _ \| |__ (_) ___ ___| |_| | __ _| |__ 11 // | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ 12 // | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | 13 // \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ 14 // |__/ 15 // 16 // http://www.ObjectLab.co.uk 17 // --------------------------------------------------------------------------- 18 // 19 //QALab is released under the GNU General Public License. 20 // 21 //QALab: Collects QA Statistics from your build over time. 22 //2005+, ObjectLab Ltd 23 // 24 //This library is free software; you can redistribute it and/or 25 //modify it under the terms of the GNU General Public 26 //License as published by the Free Software Foundation; either 27 //version 2.1 of the License, or (at your option) any later version. 28 // 29 //This library is distributed in the hope that it will be useful, 30 //but WITHOUT ANY WARRANTY; without even the implied warranty of 31 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 32 //General Public License for more details. 33 // 34 //You should have received a copy of the GNU General Public 35 //License along with this library; if not, write to the Free Software 36 //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 37 // 38 //////////////////////////////////////////////////////////////////////////////// 39 package net.objectlab.qalab.parser; 40 41 import net.objectlab.qalab.util.Util; 42 43 import org.xml.sax.Attributes; 44 45 /** 46 * This class is able to read the XDOC output from FindBugs and integrate the 47 * violation results into our qalab.xml format. 48 * 49 * @see <a href="http://findbugs.sourceforge.net/">FindBugs at SourceForge</a> 50 * @author Benoit Xhenseval 51 * @version $Revision: 187 $ 52 */ 53 public class FindBugsStatMerge extends CheckstyleOrPMDBaseMerge { 54 // ~ Methods 55 // ------------------------------------------------------------------------ 56 57 /** 58 * @return "file" 59 */ 60 protected final String getFileTag() { 61 return "file"; 62 } 63 64 /** 65 * @return classname 66 */ 67 protected final String getFileNameAttribute() { 68 return "classname"; 69 } 70 71 /** 72 * @return BugInstance 73 */ 74 protected final String getViolationTag() { 75 return "BugInstance"; 76 } 77 78 /** 79 * @return findbugs 80 */ 81 public final String getType() { 82 return "findbugs"; 83 } 84 85 /** 86 * Given the different ways that files can be stored on file system, this 87 * method will remove anything part of the path up to the 'srcDir' given, it 88 * should only retain the package name in java. For instance, for Findbugs 89 * classname="net.objectlab.X" will be stored in the compiled stats as: 90 * net/objectlab/A.java 91 * 92 * @param att 93 * the XML attribute 94 */ 95 protected final void setFileName(final Attributes att) { 96 String fileName = Util.getAttributeValue(att, getFileNameAttribute(), 97 isQuiet(), getTaskLogger()); 98 99 fileName = fileName.replace('.', '/'); 100 101 final int embeddedClass = fileName.indexOf("$"); 102 103 if (embeddedClass > 0) { 104 fileName = fileName.substring(0, embeddedClass); 105 } 106 107 fileName += ".java"; 108 109 if (!isQuiet()) { 110 getTaskLogger().log("setCurrentFileName FILE [" + fileName + "]"); 111 } 112 113 setCurrentFile(fileName); 114 } 115 } 116 /* 117 * ObjectLab is sponsoring QALab 118 * 119 * Based in London, we are world leaders in the design and development 120 * of bespoke applications for the securities financing markets. 121 * 122 * <a href="http://www.objectlab.co.uk/open">Click here to learn more about us</a> 123 * ___ _ _ _ _ _ 124 * / _ \| |__ (_) ___ ___| |_| | __ _| |__ 125 * | | | | '_ \| |/ _ \/ __| __| | / _` | '_ \ 126 * | |_| | |_) | | __/ (__| |_| |__| (_| | |_) | 127 * \___/|_.__// |\___|\___|\__|_____\__,_|_.__/ 128 * |__/ 129 * 130 * www.ObjectLab.co.uk 131 */