import net.jaekl.cfb.analyze.Analysis;
import net.jaekl.cfb.analyze.Analyzer;
import net.jaekl.cfb.analyze.Delta;
+import net.jaekl.cfb.analyze.FBMsgFileNotFoundException;
import net.jaekl.cfb.analyze.HtmlReport;
import net.jaekl.cfb.analyze.MessageMap;
import net.jaekl.cfb.analyze.Notifier;
import net.jaekl.cfb.db.driver.PostgresqlDriver;
import net.jaekl.cfb.store.DbStore;
import net.jaekl.cfb.store.StoreException;
+import net.jaekl.cfb.util.Env;
import net.jaekl.qd.xml.XmlParseException;
import org.apache.commons.cli.CommandLine;
import org.xml.sax.SAXException;
public class CFB {
+ public static final String FINDBUGS_HOME = "FINDBUGS_HOME"; // name of the FINDBUGS_HOME environment variable
+
DbDriver m_driver;
CfbSchema m_schema;
volatile static CfbBundle m_bundle = null;
help.printHelp(pw, 80, getClass().getName(), "", opt, 0, 0, "", true);
}
- String trans(String key) {
- return getBundle(m_locale).get(key);
+ String trans(String key, Object... params) {
+ return getBundle(m_locale).get(key, params);
}
String getenv(String varName) {
File findBugsDir = getFindBugsDir();
File workDir = new File(".");
MessageMap messageMap = new MessageMap();
- messageMap.load(findBugsDir, Locale.getDefault(Category.DISPLAY));
+ try {
+ messageMap.load(findBugsDir, Locale.getDefault(Category.DISPLAY));
+ }
+ catch (FBMsgFileNotFoundException exc) {
+ reportException(pw, exc);
+ return;
+ }
if (!ensureDbInitialized(pw, messageMap)) {
return;
reportUnableToConnect(pw, exc);
}
}
+
+ void reportException(PrintWriter pw, FBMsgFileNotFoundException exc) {
+ exc.printStackTrace(pw);
+
+ pw.println(trans(CfbBundle.CANNOT_LOAD_FBMSG_FILE, exc.getFilename()));
+
+ String fbHome = Env.get(FINDBUGS_HOME);
+ if (null == fbHome) {
+ pw.println(trans(CfbBundle.FINDBUGS_HOME_IS_NOT_SET, FINDBUGS_HOME));
+ }
+ else {
+ pw.println(trans(CfbBundle.FINDBUGS_HOME_IS_SET_TO, FINDBUGS_HOME, fbHome));
+ }
+
+ }
private void reportUnableToConnect(PrintWriter pw, SQLException exc) {
String cannotConnectFormat = trans(CfbBundle.CANNOT_CONNECT);