private Result getResult()

in core/org.openjdk.jmc.flightrecorder.rules.jdk/src/main/java/org/openjdk/jmc/flightrecorder/rules/jdk/general/OptionsCheckRule.java [479:554]


	private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
		String optionList = items.getAggregate(JdkAggregators.JVM_ARGUMENTS);
		if (optionList != null) {
			JavaVersion usedVersion = RulesToolkit.getJavaVersion(items);

			List<String> undocumentedList = new ArrayList<>();
			List<OptionWarning> deprecatedList = new ArrayList<>();
			List<OptionWarning> notRecommendedList = new ArrayList<>();
			checkOptions(optionList, usedVersion, undocumentedList, deprecatedList, notRecommendedList,
					getUserAcceptedOptions(valueProvider));
			StringBuilder sb = new StringBuilder();
			boolean problemFound = false;
			int combinedScore = 0;
			if (undocumentedList.size() > 0) {
				sb.append(undocumentedList.size() == 1
						? Messages.getString(Messages.OptionsCheckRule_TEXT_OPTION_NOT_DOCUMENTED)
						: Messages.getString(Messages.OptionsCheckRule_TEXT_OPTIONS_NOT_DOCUMENTED));
				sb.append(" "); //$NON-NLS-1$
				sb.append(Messages.getString(Messages.OptionsCheckRule_TEXT_UNDOCUMENTED_WARNING));
				sb.append("<ul>"); //$NON-NLS-1$
				for (int i = 0; i < undocumentedList.size(); i++) {
					sb.append("<li>" + Encode.forHtmlContent(undocumentedList.get(i)) + "</li>"); //$NON-NLS-1$ //$NON-NLS-2$
				}
				sb.append("</ul>"); //$NON-NLS-1$
				problemFound = true;
				combinedScore = 50; // Use Math.max if we ever put
			}
			if (deprecatedList.size() > 0) {
				if (problemFound) {
					sb.append("<p>"); //$NON-NLS-1$
				}
				sb.append(deprecatedList.size() == 1
						? Messages.getString(Messages.OptionsCheckRule_TEXT_OPTION_DEPRECATED)
						: Messages.getString(Messages.OptionsCheckRule_TEXT_OPTIONS_DEPRECATED));
				sb.append(" "); //$NON-NLS-1$
				sb.append(Messages.getString(Messages.OptionsCheckRule_TEXT_DEPRECATED_WARNING));
				sb.append("<ul>"); //$NON-NLS-1$
				int score = 0;
				for (int i = 0; i < deprecatedList.size(); i++) {
					sb.append("<li>" + Encode.forHtmlContent(deprecatedList.get(i).getOption()) + ": " //$NON-NLS-1$ //$NON-NLS-2$
							+ deprecatedList.get(i).getWarning() + "</li>"); //$NON-NLS-1$
					score = Math.max(score, deprecatedList.get(i).getScore());
				}
				sb.append("</ul>"); //$NON-NLS-1$
				problemFound = true;
				combinedScore = Math.max(combinedScore, score);
			}
			if (notRecommendedList.size() > 0) {
				if (problemFound) {
					sb.append("<p>"); //$NON-NLS-1$
				}
				sb.append(notRecommendedList.size() == 1
						? Messages.getString(Messages.OptionsCheckRule_TEXT_OPTION_NOT_RECOMMENDED)
						: Messages.getString(Messages.OptionsCheckRule_TEXT_OPTIONS_NOT_RECOMMENDED));
				sb.append("<ul>"); //$NON-NLS-1$
				int score = 0;
				for (int i = 0; i < notRecommendedList.size(); i++) {
					sb.append("<li>" + Encode.forHtmlContent(notRecommendedList.get(i).getOption()) + ": " //$NON-NLS-1$ //$NON-NLS-2$
							+ notRecommendedList.get(i).getWarning() + "</li>"); //$NON-NLS-1$
					score = Math.max(score, deprecatedList.get(i).getScore());
				}
				sb.append("</ul>"); //$NON-NLS-1$
				problemFound = true;
				combinedScore = Math.max(combinedScore, score);
			}

			if (problemFound) {
				String shortMessage = composeShortMessage(undocumentedList, deprecatedList, notRecommendedList);
				return new Result(this, combinedScore, shortMessage, sb.toString());
			} else {
				return new Result(this, 0, Messages.getString(Messages.OptionsCheckRule_TEXT_OK));
			}
		} else {
			return RulesToolkit.getNotApplicableResult(this, Messages.getString(Messages.OptionsCheckRule_TEXT_NA));
		}
	}