/* * FindBugs - Find Bugs in Java programs * Copyright (C) 2010, University of Maryland * * This library 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 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package edu.umd.cs.findbugs.workflow; import java.io.IOException; import edu.umd.cs.findbugs.BugCollection; import edu.umd.cs.findbugs.BugInstance; import edu.umd.cs.findbugs.FindBugs; import edu.umd.cs.findbugs.Obfuscate; import edu.umd.cs.findbugs.Project; import edu.umd.cs.findbugs.ProjectPackagePrefixes; import edu.umd.cs.findbugs.SortedBugCollection; public class ObfuscateBugs { BugCollection bugCollection; public ObfuscateBugs() { } public ObfuscateBugs(BugCollection bugCollection) { this.bugCollection = bugCollection; } public void setBugCollection(BugCollection bugCollection) { this.bugCollection = bugCollection; } public ObfuscateBugs execute() { ProjectPackagePrefixes foo = new ProjectPackagePrefixes(); for(BugInstance b : bugCollection.getCollection()) foo.countBug(b); foo.report(); return this; } static class CommandLine extends edu.umd.cs.findbugs.config.CommandLine { @Override public void handleOption(String option, String optionalExtraPart) { throw new IllegalArgumentException("unknown option: " + option); } /* (non-Javadoc) * @see edu.umd.cs.findbugs.config.CommandLine#handleOptionWithArgument(java.lang.String, java.lang.String) */ @Override protected void handleOptionWithArgument(String option, String argument) throws IOException { throw new IllegalArgumentException("Unknown option : " + option); } } public static void main(String[] args) throws Exception { FindBugs.setNoAnalysis(); CommandLine commandLine = new CommandLine(); int argCount = commandLine .parse(args, 0, 2, "Usage: " + ObfuscateBugs.class.getName() + " [options] [<xml results>] "); SortedBugCollection bugCollection = new SortedBugCollection(); if (argCount < args.length) bugCollection.readXML(args[argCount++]); else bugCollection.readXML(System.in); SortedBugCollection results = bugCollection.createEmptyCollectionWithMetadata(); Project project = results.getProject(); project.getSourceDirList().clear(); project.getFileList().clear(); project.getAuxClasspathEntryList().clear(); results.getProjectStats().getPackageStats().clear(); results.clearMissingClasses(); results.clearErrors(); for(BugInstance bug : bugCollection) { results.add(Obfuscate.obfuscate(bug), false); } if (argCount == args.length) { results.writeXML(System.out); } else { results.writeXML(args[argCount++]); } } }