Separate warn-log-messages depending on the "requirementLevel" of each rule.
This commit is contained in:
parent
ac717d4846
commit
e5cd36f869
|
@ -58,16 +58,21 @@ class GuidelineEvaluation {
|
||||||
}
|
}
|
||||||
|
|
||||||
String id = rule.getContext().getIdProperty().getValue();
|
String id = rule.getContext().getIdProperty().getValue();
|
||||||
|
RequirementLevel requirementLevel = getRequirementLevelOf(id);
|
||||||
|
|
||||||
if ( status == Status.SUCCESS && getRequirementLevelOf(id) == RequirementLevel.NOT_APPLICABLE ) {
|
if ( status == Status.SUCCESS
|
||||||
|
&& (requirementLevel == RequirementLevel.NOT_APPLICABLE) ) {
|
||||||
// Report the non-applicability of a rule as a warning
|
// Report the non-applicability of a rule as a warning
|
||||||
// The check for both status and non-applicable requirement level is redundant
|
// The check for both status and non-applicable requirement level is redundant
|
||||||
// (non-applicable rules always succeed), yet it is more clear, hopefully.
|
// (non-applicable rules always succeed), yet it is more clear, hopefully.
|
||||||
logger.warn("Non-applicable: " + rule);
|
logger.warn("Non-applicable: " + rule);
|
||||||
warnings.add(synthesizeFailureMessage(rule));
|
warnings.add(synthesizeFailureMessage(rule));
|
||||||
}
|
}
|
||||||
else if ( status == Status.FAILURE ) {
|
else if ( status == Status.FAILURE )
|
||||||
if ( getRequirementLevelOf(id) == RequirementLevel.MANDATORY ) {
|
{
|
||||||
|
if ( requirementLevel == RequirementLevel.MANDATORY
|
||||||
|
|| requirementLevel == RequirementLevel.MANDATORY_IF_APPLICABLE )
|
||||||
|
{
|
||||||
// A mandatory rule has failed, yet we don't know whether we should report is as such.
|
// A mandatory rule has failed, yet we don't know whether we should report is as such.
|
||||||
|
|
||||||
// Let's check the parent of the rule
|
// Let's check the parent of the rule
|
||||||
|
@ -83,17 +88,28 @@ class GuidelineEvaluation {
|
||||||
// (a) is non-mandatory or
|
// (a) is non-mandatory or
|
||||||
// (b) it was successful.
|
// (b) it was successful.
|
||||||
// Thus, here we need only to warn and not to err, allowing the evaluation loop to proceed.
|
// Thus, here we need only to warn and not to err, allowing the evaluation loop to proceed.
|
||||||
logger.warn("Mandatory failure: " + rule);
|
if ( requirementLevel == RequirementLevel.MANDATORY )
|
||||||
|
logger.warn("Mandatory failure: " + rule);
|
||||||
|
else
|
||||||
|
logger.warn("Mandatory_If_Applicable failure: " + rule);
|
||||||
|
|
||||||
warnings.add(synthesizeFailureMessage(rule));
|
warnings.add(synthesizeFailureMessage(rule));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// This is a warning: a non-mandatory rule has failed.
|
// This is a warning: a non-mandatory rule has failed.
|
||||||
// Note that MA rules are treated as non-mandatory.
|
// Note that MA rules are treated as non-mandatory.
|
||||||
// We let the evaluation loop proceed.
|
// We let the evaluation loop proceed.
|
||||||
logger.warn("Optional/Recommended failure: " + rule);
|
if ( requirementLevel == RequirementLevel.RECOMMENDED )
|
||||||
|
logger.warn("Recommended failure: " + rule);
|
||||||
|
else if ( requirementLevel == RequirementLevel.OPTIONAL )
|
||||||
|
logger.warn("Optional failure: " + rule);
|
||||||
|
else // This should never happen, but better catch this case, than leave it be.
|
||||||
|
logger.error("UNKNOWN failure: " + rule); // It is not "Mandatory", in any form, though.
|
||||||
|
|
||||||
warnings.add(synthesizeFailureMessage(rule));
|
warnings.add(synthesizeFailureMessage(rule));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Else it is just "SUCCESS" for an applicable rule, which means there is no error or warning to create.
|
||||||
}
|
}
|
||||||
|
|
||||||
int returnedWeight = weight;
|
int returnedWeight = weight;
|
||||||
|
|
Loading…
Reference in New Issue