Merge remote-tracking branch 'origin/master'

This commit is contained in:
pispis 2023-09-19 15:27:31 +03:00
commit 322e99297f
1 changed files with 21 additions and 5 deletions

View File

@ -58,16 +58,21 @@ class GuidelineEvaluation {
}
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
// The check for both status and non-applicable requirement level is redundant
// (non-applicable rules always succeed), yet it is more clear, hopefully.
logger.warn("Non-applicable: " + rule);
warnings.add(synthesizeFailureMessage(rule));
}
else if ( status == Status.FAILURE ) {
if ( getRequirementLevelOf(id) == RequirementLevel.MANDATORY ) {
else if ( status == Status.FAILURE )
{
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.
// Let's check the parent of the rule
@ -83,17 +88,28 @@ class GuidelineEvaluation {
// (a) is non-mandatory or
// (b) it was successful.
// 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));
}
} else {
// This is a warning: a non-mandatory rule has failed.
// Note that MA rules are treated as non-mandatory.
// 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));
}
}
// Else it is just "SUCCESS" for an applicable rule, which means there is no error or warning to create.
}
int returnedWeight = weight;