+++ /dev/null
--doc_begin="Set 1 of Xen MISRA C guidelines"
--enable=MC3R1.R9.1
--enable=MC3R1.R12.5
--enable=MC3R1.R17.3
--enable=MC3R1.R17.4
--enable=MC3R1.R17.6
--enable=MC3R1.R19.1
--enable=MC3R1.R21.13
--enable=MC3R1.R21.17
--enable=MC3R1.R21.18
--enable=MC3R1.R21.19
--enable=MC3R1.R21.20
--enable=MC3R1.R21.21
--enable=MC3R1.R22.2
--enable=MC3R1.R22.4
--enable=MC3R1.R22.5
--enable=MC3R1.R22.6
--enable=MC3R1.D1.1
--enable=MC3R1.D2.1
--enable=MC3R1.D4.1
--enable=MC3R1.D4.3
--enable=MC3R1.D4.7
--enable=MC3R1.D4.10
--enable=MC3R1.D4.11
--enable=MC3R1.D4.14
--enable=MC3R1.R1.1
--enable=MC3R1.R1.3
--enable=MC3R1.R1.4
--enable=MC3R1.R2.1
--enable=MC3R1.R2.2
--enable=MC3R1.R3.1
--enable=MC3R1.R3.2
--enable=MC3R1.R4.1
--enable=MC3R1.R5.1
--enable=MC3R1.R5.2
--enable=MC3R1.R5.3
--enable=MC3R1.R5.4
--enable=MC3R1.R5.6
--enable=MC3R1.R6.1
--enable=MC3R1.R6.2
--enable=MC3R1.R7.1
--enable=MC3R1.R7.2
--enable=MC3R1.R7.3
--enable=MC3R1.R7.4
--enable=MC3R1.R8.1
--enable=MC3R1.R8.2
--enable=MC3R1.R8.3
--enable=MC3R1.R8.4
--enable=MC3R1.R8.5
--enable=MC3R1.R8.6
--enable=MC3R1.R8.8
--enable=MC3R1.R8.10
--enable=MC3R1.R8.12
--enable=MC3R1.R8.14
--enable=MC3R1.R9.2
--enable=MC3R1.R9.3
--enable=MC3R1.R9.4
--enable=MC3R1.R9.5
--doc_end
+++ /dev/null
--doc_begin="Set 2 of Xen MISRA C guidelines"
--enable=MC3R1.R10.1
--enable=MC3R1.R10.2
--enable=MC3R1.R10.3
--enable=MC3R1.R10.4
--enable=MC3R1.R10.6
--enable=MC3R1.R10.7
--enable=MC3R1.R10.8
--enable=MC3R1.R11.1
--enable=MC3R1.R11.2
--enable=MC3R1.R11.3
--enable=MC3R1.R11.6
--enable=MC3R1.R11.7
--enable=MC3R1.R11.8
--enable=MC3R1.R11.9
--enable=MC3R1.R12.2
--enable=MC3R1.R13.1
--enable=MC3R1.R13.2
--enable=MC3R1.R13.5
--enable=MC3R1.R13.6
--enable=MC3R1.R14.1
--enable=MC3R1.R14.2
--enable=MC3R1.R14.3
--enable=MC3R1.R14.4
--doc_end
+++ /dev/null
--doc_begin="Set 3 of Xen MISRA C guidelines"
--enable=MC3R1.D4.12
--enable=MC3R1.R5.5
--enable=MC3R1.R5.7
--enable=MC3R1.R5.8
--enable=MC3R1.R15.2
--enable=MC3R1.R15.3
--enable=MC3R1.R15.6
--enable=MC3R1.R15.7
--enable=MC3R1.R16.1
--enable=MC3R1.R16.2
--enable=MC3R1.R16.3
--enable=MC3R1.R16.4
--enable=MC3R1.R16.5
--enable=MC3R1.R16.6
--enable=MC3R1.R16.7
--enable=MC3R1.R17.1
--enable=MC3R1.R17.2
--enable=MC3R1.R17.5
--enable=MC3R1.R17.7
--enable=MC3R1.R18.1
--enable=MC3R1.R18.2
--enable=MC3R1.R18.3
--enable=MC3R1.R18.6
--enable=MC3R1.R18.7
--enable=MC3R1.R18.8
--enable=MC3R1.R20.2
--enable=MC3R1.R20.3
--enable=MC3R1.R20.4
--enable=MC3R1.R20.6
--enable=MC3R1.R20.7
--enable=MC3R1.R20.8
--enable=MC3R1.R20.9
--enable=MC3R1.R20.11
--enable=MC3R1.R20.12
--enable=MC3R1.R20.13
--enable=MC3R1.R20.14
--enable=MC3R1.R21.1
--enable=MC3R1.R21.2
--enable=MC3R1.R21.3
--enable=MC3R1.R21.4
--enable=MC3R1.R21.5
--enable=MC3R1.R21.6
--enable=MC3R1.R21.7
--enable=MC3R1.R21.8
--enable=MC3R1.R21.9
--enable=MC3R1.R21.10
--enable=MC3R1.R21.12
--enable=MC3R1.R21.14
--enable=MC3R1.R21.15
--enable=MC3R1.R21.16
--enable=MC3R1.R22.1
--enable=MC3R1.R22.3
--enable=MC3R1.R22.7
--enable=MC3R1.R22.8
--enable=MC3R1.R22.9
--enable=MC3R1.R22.10
--enable=MC3R1.R2.6
--enable=MC3R1.R4.2
--doc_end
-
--doc_begin="Guidelines added with Xen MISRA C Task (a): Xen Coding Guidelines v1.1, June 1, 2023"
--enable=MC3R1.R21.11
--enable=MC3R1.D4.4
--enable=MC3R1.R8.9
--enable=MC3R1.R12.4
--doc_end
--- /dev/null
+#!/bin/bash
+# Stop immediately if any executed command has exit status different from 0.
+set -eu
+
+script_dir="$(
+ cd "$(dirname "$0")"
+ echo "${PWD}"
+)"
+
+accepted_rst=$1
+
+grep -Eo "\`(Dir|Rule) [0-9]+\.[0-9]+" ${accepted_rst} \
+ | sed -e 's/`Rule /MC3R1.R/' -e 's/`Dir /MC3R1.D/' -e 's/.*/-enable=&/' > ${script_dir}/accepted.ecl
fi
case ${ci} in
github)
- cat "${summaryTxt}" >"${GITHUB_STEP_SUMMARY}"
+ cat "${summaryTxt}" "${cleanRegressionsLog}" >"${GITHUB_STEP_SUMMARY}"
;;
gitlab)
open_section ECLAIR_summary "ECLAIR analysis summary" ""
${currentReportsMsgLog}
${referenceReportsMsgLog}
EOF
+ cat ${cleanRegressionsLog}
close_section ECLAIR_summary
;;
jenkins)
jobDir="${artifactsDir}/${subDir}/${jobId}"
updateLog="${analysisOutputDir}/update.log"
+cleanRegressionsLog="${analysisOutputDir}/clean_regressions.log"
commentLog="${analysisOutputDir}/comment.json"
indexHtmlUrl="${eclairReportUrlPrefix}/fs${jobDir}/index.html"
summaryTxt="${analysisOutputDir}/summary.txt"
--- /dev/null
+#!/bin/sh
+
+set -eu
+
+usage() {
+ echo "Usage: $0 ANALYSIS_OUTPUT_DIR" >&2
+ exit 2
+}
+
+[ $# -eq 1 ] || usage
+
+analysisOutputDir=$1
+
+# Load settings and helpers
+. "$(dirname "$0")/action.helpers"
+. "$(dirname "$0")/action.settings"
+
+cleanRegressionsTxt=${analysisOutputDir}/clean_regressions.txt
+
+cleanRegressionCount=$("${ECLAIR_BIN_DIR}eclair_report" \
+ "-db='${analysisOutputDir}/PROJECT.ecd'" \
+ "-sel_unfixed=unfixed" \
+ "-sel_tag_glob=violation_only,kind,violation" \
+ "-sel_tag_glob=clean_added,clean,added" \
+ "-report_counts_txt=service,'${cleanRegressionsTxt}'" \
+ "-print='',reports_count()")
+
+if [ "${cleanRegressionCount}" -gt 0 ]; then
+ {
+ echo "Failure: ${cleanRegressionCount} regressions found for clean guidelines"
+ sed -n '/^Number of.*$/,/^$/{ /^Number of.*$/! { /^$/! p } }' ${cleanRegressionsTxt}
+ } > ${cleanRegressionsLog}
+ rm ${cleanRegressionsTxt}
+ exit 1
+else
+ echo "Success: No regressions for clean guidelines" > ${cleanRegressionsLog}
+ rm ${cleanRegressionsTxt}
+fi
+++ /dev/null
-#!/bin/sh
-
-set -eu
-
-usage() {
- echo "Usage: $0 ANALYSIS_OUTPUT_DIR" >&2
- exit 2
-}
-
-[ $# -eq 1 ] || usage
-
-analysisOutputDir=$1
-
-cleanAddedTxt="${analysisOutputDir}/clean_added.log"
-
-# Load settings and helpers
-. "$(dirname "$0")/action.helpers"
-. "$(dirname "$0")/action.settings"
-
-unexpectedReports=$("${ECLAIR_BIN_DIR}eclair_report" \
- "-db='${analysisOutputDir}/PROJECT.ecd'" \
- "-sel_unfixed=unfixed" \
- "-sel_tag_glob=clean_added,clean,added" \
- "-print='',reports_count()")
-
-if [ "${unexpectedReports}" -gt 0 ]; then
- cat <<EOF >"${cleanAddedTxt}"
-Failure: ${unexpectedReports} unexpected reports found.
-Unexpected reports are tagged 'clean:added'.
-EOF
- exit 1
-else
- cat <<EOF >"${cleanAddedTxt}"
-Success: No unexpected reports.
-EOF
-fi
# Used in analysis.ecl
case "$2" in
-Set0|Set1|Set2|Set3)
+accepted|monitored)
export SET="$2"
;;
*)
)"
exclude_list="${ECLAIR_PROJECT_ROOT}/docs/misra/exclude-list.json"
+accepted_rst="${ECLAIR_PROJECT_ROOT}/docs/misra/rules.rst"
# Generate the exclude list file
"${script_dir}/adopted.sh" "${exclude_list}"
+
+# Generate accepted guidelines
+"${script_dir}/accepted_guidelines.sh" "${accepted_rst}"
--- /dev/null
+-doc_begin="A set of guidelines that are clean or that only have few violations left."
+-enable=MC3R1.D1.1
+-enable=MC3R1.D2.1
+-enable=MC3R1.D4.1
+-enable=MC3R1.D4.10
+-enable=MC3R1.D4.11
+-enable=MC3R1.D4.12
+-enable=MC3R1.D4.14
+-enable=MC3R1.D4.3
+-enable=MC3R1.D4.7
+-enable=MC3R1.R10.1
+-enable=MC3R1.R10.2
+-enable=MC3R1.R1.1
+-enable=MC3R1.R11.1
+-enable=MC3R1.R11.7
+-enable=MC3R1.R11.8
+-enable=MC3R1.R11.9
+-enable=MC3R1.R12.5
+-enable=MC3R1.R1.3
+-enable=MC3R1.R13.6
+-enable=MC3R1.R1.4
+-enable=MC3R1.R14.1
+-enable=MC3R1.R14.4
+-enable=MC3R1.R16.2
+-enable=MC3R1.R16.6
+-enable=MC3R1.R16.7
+-enable=MC3R1.R17.1
+-enable=MC3R1.R17.3
+-enable=MC3R1.R17.4
+-enable=MC3R1.R17.5
+-enable=MC3R1.R17.6
+-enable=MC3R1.R19.1
+-enable=MC3R1.R20.12
+-enable=MC3R1.R20.13
+-enable=MC3R1.R20.14
+-enable=MC3R1.R20.4
+-enable=MC3R1.R20.9
+-enable=MC3R1.R2.1
+-enable=MC3R1.R21.13
+-enable=MC3R1.R21.17
+-enable=MC3R1.R21.18
+-enable=MC3R1.R21.19
+-enable=MC3R1.R21.20
+-enable=MC3R1.R21.21
+-enable=MC3R1.R2.2
+-enable=MC3R1.R22.2
+-enable=MC3R1.R22.4
+-enable=MC3R1.R22.5
+-enable=MC3R1.R22.6
+-enable=MC3R1.R2.6
+-enable=MC3R1.R3.1
+-enable=MC3R1.R3.2
+-enable=MC3R1.R4.1
+-enable=MC3R1.R4.2
+-enable=MC3R1.R5.1
+-enable=MC3R1.R5.2
+-enable=MC3R1.R5.3
+-enable=MC3R1.R5.4
+-enable=MC3R1.R5.6
+-enable=MC3R1.R6.1
+-enable=MC3R1.R6.2
+-enable=MC3R1.R7.1
+-enable=MC3R1.R7.2
+-enable=MC3R1.R7.3
+-enable=MC3R1.R7.4
+-enable=MC3R1.R8.1
+-enable=MC3R1.R8.10
+-enable=MC3R1.R8.12
+-enable=MC3R1.R8.14
+-enable=MC3R1.R8.2
+-enable=MC3R1.R8.3
+-enable=MC3R1.R8.4
+-enable=MC3R1.R8.5
+-enable=MC3R1.R8.6
+-enable=MC3R1.R8.8
+-enable=MC3R1.R9.2
+-enable=MC3R1.R9.3
+-enable=MC3R1.R9.4
+-enable=MC3R1.R9.5
+-doc_end
-doc="Hide reports marked as disapplied."
-remap_rtag={disapplied,hide}
-#######################
-# Accepted guidelines #
-#######################
-
--doc="Accepted guidelines as reported in XEN/docs/misra/rules.rst"
--service_selector={accepted_guidelines,
- "MC3R1.D1.1||MC3R1.D2.1||MC3R1.D4.1||MC3R1.D4.3||MC3R1.D4.7||MC3R1.D4.10||MC3R1.D4.11||MC3R1.D4.14||MC3R1.R1.1||MC3R1.R1.3||MC3R1.R1.4||MC3R1.R2.1||MC3R1.R2.2||MC3R1.R2.6||MC3R1.R3.1||MC3R1.R3.2||MC3R1.R4.1||MC3R1.R4.2||MC3R1.R5.1||MC3R1.R5.2||MC3R1.R5.3||MC3R1.R5.4||MC3R1.R5.6||MC3R1.R6.1||MC3R1.R6.2||MC3R1.R7.1||MC3R1.R7.2||MC3R1.R7.3||MC3R1.R7.4||MC3R1.R8.1||MC3R1.R8.2||MC3R1.R8.3||MC3R1.R8.4||MC3R1.R8.5||MC3R1.R8.6||MC3R1.R8.8||MC3R1.R8.10||MC3R1.R8.12||MC3R1.R8.14||MC3R1.R9.1||MC3R1.R9.2||MC3R1.R9.3||MC3R1.R9.4||MC3R1.R9.5||MC3R1.R10.1||MC3R1.R10.2||MC3R1.R10.3||MC3R1.R10.4||MC3R1.R11.7||MC3R1.R11.8||MC3R1.R11.9||MC3R1.R12.5||MC3R1.R13.1||MC3R1.R13.5||MC3R1.R13.6||MC3R1.R14.1||MC3R1.R14.2||MC3R1.R14.3||MC3R1.R16.7||MC3R1.R17.3||MC3R1.R17.4||MC3R1.R17.6||MC3R1.R18.3||MC3R1.R19.1||MC3R1.R20.7||MC3R1.R20.13||MC3R1.R20.14||MC3R1.R21.13||MC3R1.R21.17||MC3R1.R21.18||MC3R1.R21.19||MC3R1.R21.20||MC3R1.R21.21||MC3R1.R22.2||MC3R1.R22.4||MC3R1.R22.5||MC3R1.R22.6"
-}
--doc="All reports of accepted guidelines are tagged as accepted."
--reports+={status:accepted,"service(accepted_guidelines)"}
-
####################
# Clean guidelines #
####################
-doc_begin="Clean guidelines: new violations for these guidelines are not accepted."
--service_selector={clean_guidelines_common,"MC3R1.D1.1||MC3R1.D2.1||MC3R1.D4.11||MC3R1.D4.14||MC3R1.R1.1||MC3R1.R1.3||MC3R1.R1.4||MC3R1.R2.2||MC3R1.R3.1||MC3R1.R3.2||MC3R1.R4.1||MC3R1.R4.2||MC3R1.R5.1||MC3R1.R5.2||MC3R1.R5.4||MC3R1.R5.6||MC3R1.R6.1||MC3R1.R6.2||MC3R1.R7.1||MC3R1.R8.1||MC3R1.R8.2||MC3R1.R8.5||MC3R1.R8.6||MC3R1.R8.8||MC3R1.R8.10||MC3R1.R8.12||MC3R1.R8.14||MC3R1.R9.2||MC3R1.R9.4||MC3R1.R9.5||MC3R1.R12.5||MC3R1.R17.3||MC3R1.R17.4||MC3R1.R17.6||MC3R1.R20.13||MC3R1.R20.14||MC3R1.R21.13||MC3R1.R21.19||MC3R1.R21.21||MC3R1.R22.2||MC3R1.R22.4||MC3R1.R22.5||MC3R1.R22.6"
+-service_selector={clean_guidelines_common,"MC3R1.D1.1||MC3R1.D2.1||MC3R1.D4.1||MC3R1.D4.11||MC3R1.D4.14||MC3R1.R1.1||MC3R1.R11.7||MC3R1.R11.9||MC3R1.R12.5||MC3R1.R1.3||MC3R1.R1.4||MC3R1.R14.1||MC3R1.R16.7||MC3R1.R17.1||MC3R1.R17.3||MC3R1.R17.4||MC3R1.R17.5||MC3R1.R17.6||MC3R1.R20.13||MC3R1.R20.14||MC3R1.R20.4||MC3R1.R20.9||MC3R1.R21.13||MC3R1.R21.19||MC3R1.R21.21||MC3R1.R2.2||MC3R1.R22.2||MC3R1.R22.4||MC3R1.R22.5||MC3R1.R22.6||MC3R1.R2.6||MC3R1.R3.1||MC3R1.R3.2||MC3R1.R4.1||MC3R1.R4.2||MC3R1.R5.1||MC3R1.R5.2||MC3R1.R5.4||MC3R1.R5.6||MC3R1.R6.1||MC3R1.R6.2||MC3R1.R7.1||MC3R1.R7.4||MC3R1.R8.1||MC3R1.R8.10||MC3R1.R8.12||MC3R1.R8.14||MC3R1.R8.2||MC3R1.R8.5||MC3R1.R8.6||MC3R1.R8.8||MC3R1.R9.2||MC3R1.R9.3||MC3R1.R9.4||MC3R1.R9.5"
}
-setq=target,getenv("XEN_TARGET_ARCH")
)
if(string_equal(target,"arm64"),
- service_selector({"additional_clean_guidelines","MC3R1.R5.3||MC3R1.R7.2||MC3R1.R7.3||MC3R1.R8.6||MC3R1.R9.3"})
+ service_selector({"additional_clean_guidelines","MC3R1.R16.6||MC3R1.R20.12||MC3R1.R2.1||MC3R1.R5.3||MC3R1.R7.2||MC3R1.R7.3||MC3R1.R8.6||MC3R1.R9.3"})
)
-reports+={clean:added,"service(clean_guidelines_common||additional_clean_guidelines)"}
variables:
LOGFILE: "eclair-x86_64.log"
VARIANT: "X86_64"
- RULESET: "Set1"
+ RULESET: "monitored"
eclair-ARM64:
extends: .eclair-analysis:triggered
variables:
LOGFILE: "eclair-ARM64.log"
VARIANT: "ARM64"
- RULESET: "Set1"
+ RULESET: "monitored"
.eclair-analysis:on-schedule:
extends: .eclair-analysis
when: never
- !reference [.eclair-analysis, rules]
-eclair-x86_64-Set1:on-schedule:
+eclair-x86_64:on-schedule:
extends: .eclair-analysis:on-schedule
variables:
VARIANT: "X86_64"
- RULESET: "Set1"
+ RULESET: "accepted"
ANALYSIS_KIND: "${RULESET}-scheduled"
LOGFILE: "eclair-${VARIANT}-${RULESET}.log"
allow_failure: true
-eclair-x86_64-Set2:on-schedule:
- extends: .eclair-analysis:on-schedule
- variables:
- VARIANT: "X86_64"
- RULESET: "Set2"
- ANALYSIS_KIND: "${RULESET}-scheduled"
- LOGFILE: "eclair-${VARIANT}-${RULESET}.log"
- allow_failure: true
-
-eclair-x86_64-Set3:on-schedule:
- extends: .eclair-analysis:on-schedule
- variables:
- VARIANT: "X86_64"
- RULESET: "Set3"
- ANALYSIS_KIND: "${RULESET}-scheduled"
- LOGFILE: "eclair-${VARIANT}-${RULESET}.log"
- allow_failure: true
-
-eclair-ARM64-Set1:on-schedule:
- extends: .eclair-analysis:on-schedule
- variables:
- VARIANT: "ARM64"
- RULESET: "Set1"
- ANALYSIS_KIND: "${RULESET}-scheduled"
- LOGFILE: "eclair-${VARIANT}-${RULESET}.log"
- allow_failure: true
-
-eclair-ARM64-Set2:on-schedule:
- extends: .eclair-analysis:on-schedule
- variables:
- VARIANT: "ARM64"
- RULESET: "Set2"
- ANALYSIS_KIND: "${RULESET}-scheduled"
- LOGFILE: "eclair-${VARIANT}-${RULESET}.log"
- allow_failure: true
-
-eclair-ARM64-Set3:on-schedule:
+eclair-ARM64:on-schedule:
extends: .eclair-analysis:on-schedule
variables:
VARIANT: "ARM64"
- RULESET: "Set3"
+ RULESET: "accepted"
ANALYSIS_KIND: "${RULESET}-scheduled"
LOGFILE: "eclair-${VARIANT}-${RULESET}.log"
allow_failure: true
"${ex}"
[ "${ex}" = 0 ] || exit "${ex}"
-# Fail in case of new reports
-"${ECLAIR_DIR}/action_clean_added.sh" "${ECLAIR_OUTPUT_DIR}" || ex=$?
-"${ECLAIR_DIR}/action_log.sh" DIFF_CHECK_LOG \
- "ECLAIR diff check" \
- "${ECLAIR_OUTPUT_DIR}/clean_added.log" \
- "${ex}"
+# Fail in case of new reports for clean guidelines
+"${ECLAIR_DIR}/action_check_clean_regressions.sh" "${ECLAIR_OUTPUT_DIR}" || ex=$?
"${ECLAIR_DIR}/action_push.sh" "${WTOKEN}" "${ECLAIR_OUTPUT_DIR}"
[ "${ex}" = 0 ] || exit "${ex}"