diff options
author | Curtis Windatt | 2013-02-05 16:04:51 +0000 |
---|---|---|
committer | Curtis Windatt | 2013-02-08 20:36:11 +0000 |
commit | 7a53d56ebca276be7bf4fbe60f195c37e291629a (patch) | |
tree | 9dfd6e66f351b5a68893526bf30811fc40a1a683 | |
parent | 3a7634c1cd2077b625a6942d8bfc401030457b8a (diff) | |
download | eclipse.pde.ui-7a53d56ebca276be7bf4fbe60f195c37e291629a.tar.gz eclipse.pde.ui-7a53d56ebca276be7bf4fbe60f195c37e291629a.tar.xz eclipse.pde.ui-7a53d56ebca276be7bf4fbe60f195c37e291629a.zip |
Bug 271045 - API tools should work with unresolved bundles
Incremental changes
4 files changed, 134 insertions, 135 deletions
diff --git a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java index d44b413f11..09133c3b0e 100644 --- a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java +++ b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/APIToolsAnalysisTask.java @@ -60,7 +60,6 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { List apiBundleVersionProblems = new ArrayList(); List apiCompatibilityProblems = new ArrayList(); List apiUsageProblems = new ArrayList(); - List otherProblems = new ArrayList(); String componentID; public Summary(String componentID, IApiProblem[] apiProblems) { @@ -78,7 +77,6 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { apiBundleVersionProblems.add(problem); break; default: - otherProblems.add(problem); break; } } @@ -96,7 +94,6 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { dumpProblems("Usage:", apiUsageProblems, printWriter); //$NON-NLS-1$ dumpProblems("Compatibility:", apiCompatibilityProblems, printWriter); //$NON-NLS-1$ dumpProblems("Bundle Versions:", apiBundleVersionProblems, printWriter); //$NON-NLS-1$ - dumpProblems("Other Problems:", otherProblems, printWriter); //$NON-NLS-1$ printWriter.println("=================================================================================="); //$NON-NLS-1$ printWriter.flush(); printWriter.close(); @@ -108,16 +105,13 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { printWriter.print( apiUsageProblems.size() + apiBundleVersionProblems.size() - + apiCompatibilityProblems.size() - + otherProblems.size()); + + apiCompatibilityProblems.size()); printWriter.print(" (Usage: "); //$NON-NLS-1$ printWriter.print(apiUsageProblems.size()); printWriter.print(", Compatibility: "); //$NON-NLS-1$ printWriter.print(apiCompatibilityProblems.size()); printWriter.print(", Bundle version: "); //$NON-NLS-1$ printWriter.print(apiBundleVersionProblems.size()); - printWriter.print(", Other: "); //$NON-NLS-1$ - printWriter.print(otherProblems.size()); printWriter.print(')'); printWriter.println(); } @@ -132,11 +126,8 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { printWriter.println(problem.getMessage()); } } - - - - } + /** * Stores integer counts for types of problems reported */ @@ -156,6 +147,7 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { } public static final String BUNDLE_VERSION = "bundleVersion"; //$NON-NLS-1$ public static final String COMPATIBILITY = "compatibility"; //$NON-NLS-1$ + public static final String COMPONENT_RESOLUTION = "componentResolution"; //$NON-NLS-1$ private static final Summary[] NO_SUMMARIES = new Summary[0]; public static final String USAGE = "usage"; //$NON-NLS-1$ @@ -231,6 +223,19 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { category.setAttribute(IApiXmlConstants.ATTR_VALUE, BUNDLE_VERSION); insertAPIProblems(category, document, summary.apiBundleVersionProblems, counter); report.appendChild(category); + + if (bundlesWithErrors != null && bundlesWithErrors.containsKey(componentID)){ + category = document.createElement(IApiXmlConstants.ATTR_CATEGORY); + category.setAttribute(IApiXmlConstants.ATTR_KEY, Integer.toString(IApiProblem.CATEGORY_API_COMPONENT_RESOLUTION)); + category.setAttribute(IApiXmlConstants.ATTR_VALUE, COMPONENT_RESOLUTION); + ResolverError[] errors = (ResolverError[])bundlesWithErrors.get(componentID); + for (int j = 0; j < errors.length; j++) { + Element error = document.createElement(IApiXmlConstants.ELEMENT_RESOLVER_ERROR); + error.setAttribute(IApiXmlConstants.ATTR_MESSAGE, errors[j].toString()); + category.appendChild(error); + } + report.appendChild(category); + } contents = Util.serializeDocument(document); } catch (DOMException e) { @@ -243,8 +248,8 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { } } - // Write out a list of components skipped because they aren't API Tools enabled or because they had resolver errors - if ((nonAPIBundleNames != null && nonAPIBundleNames.size() != 0) || (bundlesWithErrors != null && !bundlesWithErrors.isEmpty())) { + // Write out a list of components skipped because they aren't API Tools enabled + if (nonAPIBundleNames != null && nonAPIBundleNames.size() != 0) { String contents = null; try { Document document = Util.newDocument(); @@ -252,35 +257,14 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { report.setAttribute(IApiXmlConstants.ATTR_VERSION, IApiXmlConstants.API_REPORT_CURRENT_VERSION); document.appendChild(report); - if (nonAPIBundleNames != null){ - for (Iterator iterator = nonAPIBundleNames.iterator(); iterator.hasNext();) { - String bundleName = (String) iterator.next(); - if (!isFiltered(bundleName)){ - Element bundle = document.createElement(IApiXmlConstants.ELEMENT_BUNDLE); - bundle.setAttribute(IApiXmlConstants.ATTR_NAME, bundleName); - report.appendChild(bundle); - } - } - } - - if (bundlesWithErrors != null){ - for (Iterator iterator = bundlesWithErrors.keySet().iterator(); iterator.hasNext();) { - String bundleName = (String) iterator.next(); - if (!isFiltered(bundleName)){ - Element bundle = document.createElement(IApiXmlConstants.ELEMENT_BUNDLE); - bundle.setAttribute(IApiXmlConstants.ATTR_NAME, bundleName); - ResolverError[] errors = (ResolverError[])bundlesWithErrors.get(bundleName); - for (int i = 0; i < errors.length; i++) { - Element error = document.createElement(IApiXmlConstants.ELEMENT_RESOLVER_ERROR); - error.setAttribute(IApiXmlConstants.ATTR_MESSAGE, errors[i].toString()); - bundle.appendChild(error); - } - report.appendChild(bundle); - } + for (Iterator iterator = nonAPIBundleNames.iterator(); iterator.hasNext();) { + String bundleName = (String) iterator.next(); + if (!isFiltered(bundleName)){ + Element bundle = document.createElement(IApiXmlConstants.ELEMENT_BUNDLE); + bundle.setAttribute(IApiXmlConstants.ATTR_NAME, bundleName); + report.appendChild(bundle); } } - - contents = Util.serializeDocument(document); } catch (DOMException e) { throw new BuildException(e); @@ -415,12 +399,11 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { continue; } - // If the component has resolver errors the results may not be accurate + // If the component has resolver errors the results may not be accurate, store problems in other category try { - ResolverError[] errors = apiComponent.getErrors(); - if (errors != null && errors.length > 0){ - bundlesWithErrors.put(name, errors); - continue; + ResolverError[] resolverErrors = apiComponent.getErrors(); + if (resolverErrors != null && resolverErrors.length > 0){ + bundlesWithErrors.put(name, apiComponent.getErrors()); } } catch (CoreException e){ ApiPlugin.log(e.getStatus()); @@ -464,7 +447,7 @@ public class APIToolsAnalysisTask extends CommonUtilsTask { System.out.println(iterator.next()); } System.out.println("=========================="); //$NON-NLS-1$ - System.out.println("Total number of api tools components in current baseline that have errors :" + bundlesWithErrors.size()); //$NON-NLS-1$ + System.out.println("Total number of components with resolver errors :" + bundlesWithErrors.size()); //$NON-NLS-1$ System.out.println("Details:"); //$NON-NLS-1$ List names = new ArrayList(); names.addAll(bundlesWithErrors.keySet()); diff --git a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/AnalysisReportConversionTask.java b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/AnalysisReportConversionTask.java index a62d4b6300..e0901f3fdf 100644 --- a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/AnalysisReportConversionTask.java +++ b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/AnalysisReportConversionTask.java @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -87,9 +86,6 @@ public class AnalysisReportConversionTask extends Task { boolean debug; Report report; - String currentSkippedBundle; - List currentSkippedBundleProblems = new ArrayList(); - public ConverterDefaultHandler(boolean debug) { this.debug = debug; } @@ -119,64 +115,44 @@ public class AnalysisReportConversionTask extends Task { System.out.println("problem severity : " + severity); //$NON-NLS-1$ } this.report.addProblem(this.category, new Problem(message, severity)); - } else if (IApiXmlConstants.ELEMENT_BUNDLE.equals(name)) { - currentSkippedBundle = attributes.getValue(IApiXmlConstants.ATTR_NAME); - currentSkippedBundleProblems.clear(); + } else if (IApiXmlConstants.ELEMENT_RESOLVER_ERROR.equals(name)) { + String message = attributes.getValue(IApiXmlConstants.ATTR_MESSAGE); if (this.debug) { - System.out.println("skipped bundle name : " + currentSkippedBundle); //$NON-NLS-1$ + System.out.println("Resolver error : " + message); //$NON-NLS-1$ } - } else if (IApiXmlConstants.ELEMENT_RESOLVER_ERROR.equals(name)){ - String error = attributes.getValue(IApiXmlConstants.ATTR_MESSAGE); - currentSkippedBundleProblems.add(error); + this.report.addProblem(this.category, new Problem(message, ApiPlugin.SEVERITY_WARNING)); + } else if (IApiXmlConstants.ELEMENT_BUNDLE.equals(name)) { + String bundleName = attributes.getValue(IApiXmlConstants.ATTR_NAME); if (this.debug) { - System.out.println("skipped bundle problem : " + error); //$NON-NLS-1$ + System.out.println("bundle name : " + bundleName); //$NON-NLS-1$ } - } else if (!IApiXmlConstants.ELEMENT_PROBLEM_MESSAGE_ARGUMENTS.equals(name) - && !IApiXmlConstants.ELEMENT_PROBLEM_MESSAGE_ARGUMENT.equals(name) - && !IApiXmlConstants.ELEMENT_API_PROBLEMS.equals(name) - && !IApiXmlConstants.ELEMENT_PROBLEM_EXTRA_ARGUMENT.equals(name) - && !IApiXmlConstants.ELEMENT_PROBLEM_EXTRA_ARGUMENTS.equals(name)) { - System.out.println("unknown element : " + String.valueOf(name)); //$NON-NLS-1$ - } - - } - - public void endElement(String uri, String localName, String qName) - throws SAXException { - if (IApiXmlConstants.ELEMENT_BUNDLE.equals(qName)) { - String[] errors = null; - if (!currentSkippedBundleProblems.isEmpty()){ - errors = (String[])currentSkippedBundleProblems.toArray(new String[currentSkippedBundleProblems.size()]); + this.report.addNonApiBundles(bundleName); + } else if (this.debug) { + if (!IApiXmlConstants.ELEMENT_PROBLEM_MESSAGE_ARGUMENTS.equals(name) + && !IApiXmlConstants.ELEMENT_PROBLEM_MESSAGE_ARGUMENT.equals(name) + && !IApiXmlConstants.ELEMENT_API_PROBLEMS.equals(name) + && !IApiXmlConstants.ELEMENT_PROBLEM_EXTRA_ARGUMENT.equals(name) + && !IApiXmlConstants.ELEMENT_PROBLEM_EXTRA_ARGUMENTS.equals(name)) { + System.out.println("unknown element : " + String.valueOf(name)); //$NON-NLS-1$ } - this.report.addSkippedBundle(currentSkippedBundle, errors); - currentSkippedBundle = null; - currentSkippedBundleProblems.clear(); } } - } static private final class Report { String componentID; String link; - Map skippedBundles; + List nonApiBundles; Map problemsPerCategories; Report(String componentID) { this.componentID = componentID; } - /** - * Adds an entry for a skipped bundle, if null is provided as the problems - * it is assumed that the bundle was skipped because it isn't an API bundle. - * - * @param bundleName name of the bundle - * @param problems one or more problem messages prevent this bundle from being analyzed, can be <code>null</code> if bundle wasn't API tools enabled - */ - public void addSkippedBundle(String bundleName, String[] problems) { - if (this.skippedBundles == null) { - this.skippedBundles = new HashMap(); + public void addNonApiBundles(String bundleName) { + if (this.nonApiBundles == null) { + this.nonApiBundles = new ArrayList(); } - this.skippedBundles.put(bundleName, problems); + this.nonApiBundles.add(bundleName); } public void addProblem(String category, Problem problem) { @@ -191,14 +167,13 @@ public class AnalysisReportConversionTask extends Task { problemsList.add(problem); } - /** - * @return map of string bundle name to String[] problem messages or <code>null</code> if bundle was skipped because it isn't API Tools enabled - */ - public Map getSkippedBundles() { - if (this.skippedBundles == null || this.skippedBundles.size() == 0) { - return new HashMap(0); + public String[] getNonApiBundles() { + if (this.nonApiBundles == null || this.nonApiBundles.size() == 0) { + return NO_NON_API_BUNDLES; } - return skippedBundles; + String[] nonApiBundlesNames = new String[this.nonApiBundles.size()]; + this.nonApiBundles.toArray(nonApiBundlesNames); + return nonApiBundlesNames; } public Problem[] getProblems(String category) { @@ -230,6 +205,7 @@ public class AnalysisReportConversionTask extends Task { int apiUsageNumber; int bundleVersionNumber; int compatibilityNumber; + int componentResolutionNumber; String componentID; String link; @@ -238,22 +214,25 @@ public class AnalysisReportConversionTask extends Task { this.apiUsageNumber = report.getProblemSize(APIToolsAnalysisTask.USAGE); this.bundleVersionNumber = report.getProblemSize(APIToolsAnalysisTask.BUNDLE_VERSION); this.compatibilityNumber = report.getProblemSize(APIToolsAnalysisTask.COMPATIBILITY); + this.componentResolutionNumber = report.getProblemSize(APIToolsAnalysisTask.COMPONENT_RESOLUTION); this.componentID = report.componentID; this.link = report.link; } public String toString() { - return MessageFormat.format("{0} : compatibility {1}, api usage {2}, bundle version {3}, link {4}", //$NON-NLS-1$ + return MessageFormat.format("{0} : compatibility {1}, api usage {2}, bundle version {3}, resolution {4}, link {5}", //$NON-NLS-1$ new String[] { this.componentID, Integer.toString(this.compatibilityNumber), Integer.toString(this.apiUsageNumber), Integer.toString(this.bundleVersionNumber), + Integer.toString(this.componentResolutionNumber), this.link }); } } static final Problem[] NO_PROBLEMS = new Problem[0]; + static final String[] NO_NON_API_BUNDLES = new String[0]; boolean debug; private String htmlReportsLocation; @@ -271,6 +250,7 @@ public class AnalysisReportConversionTask extends Task { new String[] { report.componentID })); + // dump the summary writer.println( MessageFormat.format( @@ -279,7 +259,17 @@ public class AnalysisReportConversionTask extends Task { Integer.toString(report.getProblemSize(APIToolsAnalysisTask.COMPATIBILITY)), Integer.toString(report.getProblemSize(APIToolsAnalysisTask.USAGE)), Integer.toString(report.getProblemSize(APIToolsAnalysisTask.BUNDLE_VERSION)), - })); + })); + + if (report.getProblemSize(APIToolsAnalysisTask.COMPONENT_RESOLUTION) > 0){ + writer.println( + MessageFormat.format( + Messages.fullReportTask_resolutiondetails, + new String[] { + report.componentID, + Integer.toString(report.getProblemSize(APIToolsAnalysisTask.COMPONENT_RESOLUTION)) + })); + } } private void dumpIndexEntry(int i, PrintWriter writer, Summary summary) { if (debug) { @@ -308,7 +298,27 @@ public class AnalysisReportConversionTask extends Task { summary.link, })); } + if (summary.componentResolutionNumber > 0){ + if ((i % 2) == 0) { + writer.println( + MessageFormat.format( + Messages.fullReportTask_resolutionsummary_even, + new String[] { + summary.componentID, + Integer.toString(summary.componentResolutionNumber) + })); + } else { + writer.println( + MessageFormat.format( + Messages.fullReportTask_resolutionsummary_odd, + new String[] { + summary.componentID, + Integer.toString(summary.componentResolutionNumber) + })); + } + } } + private void dumpIndexFile(File reportsRoot, Summary[] summaries, Summary allNonApiBundleSummary) { File htmlFile = new File(this.htmlReportsLocation, "index.html"); //$NON-NLS-1$ PrintWriter writer = null; @@ -352,32 +362,18 @@ public class AnalysisReportConversionTask extends Task { } private void dumpNonApiBundles(PrintWriter writer, Report report) { writer.println(Messages.fullReportTask_bundlesheader); - Map nonApiBundleNames = report.getSkippedBundles(); - int count = 0; - for (Iterator iterator = nonApiBundleNames.keySet().iterator(); iterator.hasNext();) { - StringBuffer result = new StringBuffer(); - String bundleName = (String) iterator.next(); - result.append(bundleName); - String[] bundleErrors = (String[]) nonApiBundleNames.get(bundleName); - if (bundleErrors == null){ - result.append(Messages.AnalysisReportConversionTask_BundleErrorNewline); - result.append(Messages.AnalysisReportConversionTask_NotSetupForAPIAnalysis); - } else { - for (int i = 0; i < bundleErrors.length; i++) { - result.append(Messages.AnalysisReportConversionTask_BundleErrorNewline); - result.append(bundleErrors[i]); - } - } - if ((count % 2) == 0) { - writer.println(MessageFormat.format(Messages.fullReportTask_bundlesentry_even, new String[] { result.toString() })); + String[] nonApiBundleNames = report.getNonApiBundles(); + for (int i = 0; i < nonApiBundleNames.length; i++) { + String bundleName = nonApiBundleNames[i]; + if ((i % 2) == 0) { + writer.println(MessageFormat.format(Messages.fullReportTask_bundlesentry_even, new String[] { bundleName })); } else { - writer.println(MessageFormat.format(Messages.fullReportTask_bundlesentry_odd, new String[] { result.toString() })); + writer.println(MessageFormat.format(Messages.fullReportTask_bundlesentry_odd, new String[] { bundleName })); } - count++; } writer.println(Messages.fullReportTask_bundlesfooter); } - private void dumpProblems(PrintWriter writer, String categoryName, Problem[] problems) { + private void dumpProblems(PrintWriter writer, String categoryName, Problem[] problems, boolean printEmptyCategory) { if (problems != null && problems.length != 0) { writer.println( MessageFormat.format( @@ -392,6 +388,9 @@ public class AnalysisReportConversionTask extends Task { break; case ApiPlugin.SEVERITY_WARNING : writer.println(MessageFormat.format(Messages.fullReportTask_problementry_even_warning, new String[] { problem.getHtmlMessage() })); + break; + default: + break; } } else { switch(problem.severity) { @@ -400,11 +399,14 @@ public class AnalysisReportConversionTask extends Task { break; case ApiPlugin.SEVERITY_WARNING : writer.println(MessageFormat.format(Messages.fullReportTask_problementry_odd_warning, new String[] { problem.getHtmlMessage() })); + break; + default: + break; } } } writer.println(Messages.fullReportTask_categoryfooter); - } else { + } else if (printEmptyCategory) { writer.println( MessageFormat.format( Messages.fullReportTask_category_no_elements, @@ -432,12 +434,10 @@ public class AnalysisReportConversionTask extends Task { dumpNonApiBundles(writer, report); } else { dumpHeader(writer, report); - // generate compatibility category - dumpProblems(writer, Messages.fullReportTask_compatibility_header, report.getProblems(APIToolsAnalysisTask.COMPATIBILITY)); - writer.println(Messages.fullReportTask_categoryseparator); - dumpProblems(writer, Messages.fullReportTask_api_usage_header, report.getProblems(APIToolsAnalysisTask.USAGE)); - writer.println(Messages.fullReportTask_categoryseparator); - dumpProblems(writer, Messages.fullReportTask_bundle_version_header, report.getProblems(APIToolsAnalysisTask.BUNDLE_VERSION)); + dumpProblems(writer, Messages.AnalysisReportConversionTask_component_resolution_header, report.getProblems(APIToolsAnalysisTask.COMPONENT_RESOLUTION), false); + dumpProblems(writer, Messages.fullReportTask_compatibility_header, report.getProblems(APIToolsAnalysisTask.COMPATIBILITY), true); + dumpProblems(writer, Messages.fullReportTask_api_usage_header, report.getProblems(APIToolsAnalysisTask.USAGE), true); + dumpProblems(writer, Messages.fullReportTask_bundle_version_header, report.getProblems(APIToolsAnalysisTask.BUNDLE_VERSION), true); dumpFooter(writer); } writer.flush(); diff --git a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java index 03d8c3f5ed..1e9ca8af9e 100644 --- a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java +++ b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/Messages.java @@ -55,6 +55,9 @@ public class Messages extends NLS { public static String fullReportTask_indexfooter; public static String fullReportTask_indexsummary_even; public static String fullReportTask_indexsummary_odd; + public static String fullReportTask_resolutionsummary_even; + public static String fullReportTask_resolutionsummary_odd; + public static String fullReportTask_resolutiondetails; public static String missing_xml_files_location; public static String invalid_directory_name; @@ -98,9 +101,7 @@ public class Messages extends NLS { public static String AddedElement; - public static String AnalysisReportConversionTask_BundleErrorNewline; - - public static String AnalysisReportConversionTask_NotSetupForAPIAnalysis; + public static String AnalysisReportConversionTask_component_resolution_header; public static String RemovedElement; public static String ChangedElement; diff --git a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/messages.properties b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/messages.properties index cd9b38df29..89ab5f6236 100644 --- a/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/messages.properties +++ b/apitools/org.eclipse.pde.api.tools/src_ant/org/eclipse/pde/api/tools/internal/tasks/messages.properties @@ -51,7 +51,7 @@ missing_xml_files_location=The directory that contains xml reports must be speci invalid_directory_name=''{0}'' is not a valid directory name could_not_create_sax_parser=Could not create a sax parser could_not_create_file=Could not create file {0} -fullReportTask_nonApiBundleSummary=<p>List of <a href=\"{0}\">skipped bundles</a>.</p> +fullReportTask_nonApiBundleSummary=<p>List of <a href=\"{0}\">bundles not configured for API analysis</a>.</p> fullReportTask_apiBundleSummary=<p>All bundles have been converted to API tools.</p> ioexception_writing_html_file=An IOException occurred while writing html for: {0} fullReportTask_compatibility_header=Compatibility @@ -82,10 +82,10 @@ fullReportTask_bundlesheader=<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transi <html>\n\ <head>\n\ \ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n\ -\ <title>Skipped Bundles</title>\n\ +\ <title>Bundles Not Setup For API Analysis</title>\n\ </head>\n\ <body>\n\ -<h1>Skipped Bundles</h1>\n\ +<h1>Bundles Not Setup For API Analysis</h1>\n\ <table border="1">\n # {0} is the bundle name fullReportTask_bundlesentry_even=\ <tr>\n <td align="left">{0}</td>\n </tr> @@ -186,10 +186,25 @@ fullReportTask_indexsummary_odd=\ <tr>\n\ \ <td align="center" bgcolor="#FFFFCC">{2}</td>\n\ \ <td align="center" bgcolor="#FFFFCC">{3}</td>\n\ \ </tr>\n +# {0} component id +# {1} component resolution problem number +fullReportTask_resolutionsummary_even=\ <tr>\n\ +\ <td></td>\n\ +\ <td align="left" colspan="3">Reported warnings may not be accurate because {0} has {1} resolution problems.</td>\n\ +\ </tr>\n +# {0} component id +# {1} component resolution problem number +fullReportTask_resolutionsummary_odd=\ <tr>\n\ +\ <td bgcolor="#FFFFCC"></td>\n\ +\ <td align="left" bgcolor="#FFFFCC" colspan="3">Reported warnings may not be accurate because {0} has {1} resolution problems.</td>\n\ +\ </tr>\n +# {0} component id +# {1} component resolution problem number +fullReportTask_resolutiondetails=<p><b><font color="#FF0000">Reported warnings may not be accurate because {0} has {1} resolution problems. See the Component Resolution category for details.</font></b></p>\n + UseTask_no_scan_both_types_not_searched_for=Build stopping - neither API, internal nor illegal references are being searched for AddedElement=ADDED -AnalysisReportConversionTask_BundleErrorNewline=<br>\n -AnalysisReportConversionTask_NotSetupForAPIAnalysis=Not Setup For API Analysis +AnalysisReportConversionTask_component_resolution_header=Component Resolution RemovedElement=REMOVED ChangedElement=CHANGED deprecationReportTask_componentEntry=<table border="1" width="80%">\n\ |