sca: Add ECLAIR SCA configuration files.
Add the Eclair configuration files, which are needed to configure the static code analysis tool for the zephyr coding guidelines. Signed-off-by: Simon Hein <Shein@baumer.com>
This commit is contained in:
parent
9bb46e6417
commit
4c7d86a8b5
16 changed files with 740 additions and 0 deletions
7
cmake/sca/eclair/ECL/adopted_code.ecl
Normal file
7
cmake/sca/eclair/ECL/adopted_code.ecl
Normal file
|
@ -0,0 +1,7 @@
|
|||
-doc_begin="This header file is automatically generated by Autoconf."
|
||||
-file_tag+={adopted,"^zephyr/build/zephyr/include/generated/autoconf\\.h$"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="These files are automatically generated by gperf."
|
||||
-file_tag+={adopted,"^zephyr/build/zephyr/kobject_.*\\.c$"}
|
||||
-doc_end
|
43
cmake/sca/eclair/ECL/adopted_deviations.ecl
Normal file
43
cmake/sca/eclair/ECL/adopted_deviations.ecl
Normal file
|
@ -0,0 +1,43 @@
|
|||
-setq=CPP_MANUAL,"https://gcc.gnu.org/onlinedocs/gcc-10.3.0/cpp.pdf"
|
||||
|
||||
-doc="Selection for reports that are fully contained in adopted code."
|
||||
-report_selector+={adopted_report,"all_area(!kind(culprit||evidence)||all_loc(all_exp(adopted||pseudo)))"}
|
||||
|
||||
-doc_begin="Adopted code is not meant to be read, reviewed or modified by human programmers:no developers' confusion is not possible. In addition, adopted code is assumed to work as is. Reports that are fully contained in adopted code are hidden/tagged with the 'adopted' tag."
|
||||
-config=MC3R1.R7.2,reports+={relied,adopted_report}
|
||||
-config=MC3R1.R10.3,reports+={relied,adopted_report}
|
||||
-config=MC3R1.R10.6,reports+={relied,adopted_report}
|
||||
-config=MC3R1.R12.1,reports+={relied,adopted_report}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="Macro LOAPIC_BASE_ADDRESS, automatically generated by Autoconf, expands to an implicitly unsigned literal lacking the 'u' or 'U' suffix."
|
||||
-config=MC3R1.R7.2,reports+={safe,"all_area(all_loc(any_exp(macro(^assert$))))"}
|
||||
-doc_end
|
||||
|
||||
-doc="#include_next is a documented GNU preprocessing directive. See section \"2.7 Wrapper Headers\" of "CPP_MANUAL""
|
||||
-config=STD.prepdirc,directives+={safe,"^include_next$"}
|
||||
-doc="#warning is a documented GNU preprocessing directive. See section \"5 Diagnostics\" of "CPP_MANUAL""
|
||||
-config=STD.prepdirc,directives+={safe,"^warning$"}
|
||||
|
||||
-doc="The declarations in files tagged with api:public define a public API of Zephyr.
|
||||
Declarations in these files not necessarily have to be referenced."
|
||||
-config=MC3R1.R2.3,declarations+={safe,"loc(top(public()))"}
|
||||
|
||||
-doc="Library entry points not necessarily have to be referenced."
|
||||
-config=MC3R1.R2.1,declarations+={safe,"loc(top(public()))"}
|
||||
|
||||
-doc="Library entry points not necessarily have to be referenced in more than one translation units."
|
||||
-config=MC3R1.R8.7,declarations+={safe,"loc(top(public()))"}
|
||||
|
||||
-doc="Syscall declarations are automatically generated all with the extern qualifier. For the ones with internal linkage the use of the extern qualifier is a violation of rule 8.8."
|
||||
-config=MC3R1.R8.8,declarations={relied, "^z_vrfy_.*$||^z_impl_.*$"}
|
||||
|
||||
-doc="Function hash, that is automatically generated, does not use the parameter \"len\" in all its definitions."
|
||||
-config=MC3R1.R2.7,declarations+={relied,"context(^hash\\(const char\\*, size_t\\)$)&&name(len)"}
|
||||
|
||||
-doc="Function \"z_object_lookup\", that is automatically generated, uses single-statement bodies not enclosed in braces."
|
||||
-config=MC3R1.R15.6,reports={relied, "all_area(context(^z_object_lookup\\(const char\\*, size_t\\)$))"}
|
||||
|
||||
-doc="The following declarations are in generated files: not in all configuration they are implemented.
|
||||
Chainging the generators could be dangerous and the advantages in enforcing the rule do not outweight these dangers."
|
||||
-config=MC3R1.R8.6,declarations+={safe, "loc(top(file(^zephyr/build/zephyr/include/generated/.*$)))"}
|
13
cmake/sca/eclair/ECL/analysis.ecl
Normal file
13
cmake/sca/eclair/ECL/analysis.ecl
Normal file
|
@ -0,0 +1,13 @@
|
|||
-project_name=getenv("ECLAIR_PROJECT_NAME")
|
||||
-project_root=getenv("ECLAIR_PROJECT_ROOT")
|
||||
-setq=data_dir,getenv("ECLAIR_DATA_DIR")
|
||||
-setq=set,getenv("ECLAIR_RULESET")
|
||||
|
||||
-enable=B.REPORT.ECB
|
||||
-config=B.REPORT.ECB,output=join_paths(data_dir,"FRAME.@FRAME@.ecb")
|
||||
-config=B.REPORT.ECB,preprocessed=show
|
||||
-config=B.REPORT.ECB,macros=10
|
||||
|
||||
-enable=B.EXPLAIN
|
||||
|
||||
-eval_file=toolchain.ecl
|
21
cmake/sca/eclair/ECL/analysis_HIS.ecl
Normal file
21
cmake/sca/eclair/ECL/analysis_HIS.ecl
Normal file
|
@ -0,0 +1,21 @@
|
|||
# This file must be named analyze_<RULESET>.ecl, where <RULESET> is the first
|
||||
# argument of analyze.sh.
|
||||
#
|
||||
# The aim of this file is to define the analysis configuration for <RULESET>.
|
||||
#
|
||||
# The essential portions of this file are marked with "# NEEDED":
|
||||
# they may be adapted of course.
|
||||
|
||||
# Enable the desired metrics.
|
||||
-enable=MET.HIS.COMF
|
||||
-enable=MET.HIS.PATH
|
||||
-enable=MET.HIS.GOTO
|
||||
-enable=MET.HIS.v_G
|
||||
-enable=MET.HIS.CALLING
|
||||
-enable=MET.HIS.CALLS
|
||||
-enable=MET.HIS.PARAM
|
||||
-enable=MET.HIS.STMT
|
||||
-enable=MET.HIS.LEVEL
|
||||
-enable=MET.HIS.RETURN
|
||||
-enable=MET.HIS.VOCF
|
||||
-enable=MET.HIS.ap_cg_cycle
|
115
cmake/sca/eclair/ECL/analysis_STU.ecl
Normal file
115
cmake/sca/eclair/ECL/analysis_STU.ecl
Normal file
|
@ -0,0 +1,115 @@
|
|||
# This file must be named analyze_<RULESET>.ecl, where <RULESET> is the first
|
||||
# argument of analyze.sh.
|
||||
#
|
||||
# The aim of this file is to define the analysis configuration for <RULESET>.
|
||||
#
|
||||
# The essential portions of this file are marked with "# NEEDED":
|
||||
# they may be adapted of course.
|
||||
|
||||
-eval_file=zephyr_common_config.ecl
|
||||
|
||||
-doc_begin="Selection of guidelines from
|
||||
https://docs.zephyrproject.org/latest/guides/coding_guidelines/index.html"
|
||||
-enable=MC3R1.D4.13
|
||||
-enable=MC3R1.D4.2
|
||||
-enable=MC3R1.D4.4
|
||||
-enable=MC3R1.D4.5
|
||||
-enable=MC3R1.D4.8
|
||||
-enable=MC3R1.D4.11
|
||||
-enable=MC3R1.D4.12
|
||||
-enable=MC3R1.D4.14
|
||||
-enable=MC3R1.D4.7
|
||||
-enable=MC3R1.R10.5
|
||||
-enable=MC3R1.R10.2
|
||||
-enable=MC3R1.R10.6
|
||||
-enable=MC3R1.R10.7
|
||||
-enable=MC3R1.R10.8
|
||||
-enable=MC3R1.R1.2
|
||||
-enable=MC3R1.R1.3
|
||||
-enable=MC3R1.R12.4
|
||||
-enable=MC3R1.R12.5
|
||||
-enable=MC3R1.R12.2
|
||||
-enable=MC3R1.R13.4
|
||||
-enable=MC3R1.R13.1
|
||||
-enable=MC3R1.R13.2
|
||||
-enable=MC3R1.R13.5
|
||||
-enable=MC3R1.R13.6
|
||||
-enable=MC3R1.R18.5
|
||||
-enable=MC3R1.R18.1
|
||||
-enable=MC3R1.R18.2
|
||||
-enable=MC3R1.R18.3
|
||||
-enable=MC3R1.R18.6
|
||||
-enable=MC3R1.R18.8
|
||||
-enable=MC3R1.R21.11
|
||||
-enable=MC3R1.R21.13
|
||||
-enable=MC3R1.R21.17
|
||||
-enable=MC3R1.R21.18
|
||||
-enable=MC3R1.R21.19
|
||||
-enable=MC3R1.R21.20
|
||||
-enable=MC3R1.R2.7
|
||||
-enable=MC3R1.R2.2
|
||||
-enable=MC3R1.R4.2
|
||||
-enable=MC3R1.R4.1
|
||||
-enable=MC3R1.R17.3
|
||||
-enable=MC3R1.R17.4
|
||||
-enable=MC3R1.R17.6
|
||||
-enable=MC3R1.R17.1
|
||||
-enable=MC3R1.R17.5
|
||||
-enable=MC3R1.R19.1
|
||||
-enable=MC3R1.R22.2
|
||||
-enable=MC3R1.R22.5
|
||||
-enable=MC3R1.R22.6
|
||||
-enable=MC3R1.R9.1
|
||||
-enable=MC3R1.R9.2
|
||||
-enable=MC3R1.R9.3
|
||||
-enable=MC3R1.R9.4
|
||||
-enable=MC3R1.R9.5
|
||||
-enable=MC3R1.D2.1
|
||||
-enable=MC3R1.R11.2
|
||||
-enable=MC3R1.R11.6
|
||||
-enable=MC3R1.R11.7
|
||||
-enable=MC3R1.R11.8
|
||||
-enable=MC3R1.R11.9
|
||||
-enable=MC3R1.R14.1
|
||||
-enable=MC3R1.R14.2
|
||||
-enable=MC3R1.R14.3
|
||||
-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.R20.11
|
||||
-enable=MC3R1.R20.12
|
||||
-enable=MC3R1.R20.13
|
||||
-enable=MC3R1.R20.14
|
||||
-enable=MC3R1.R20.2
|
||||
-enable=MC3R1.R20.3
|
||||
-enable=MC3R1.R20.4
|
||||
-enable=MC3R1.R20.8
|
||||
-enable=MC3R1.R20.9
|
||||
-enable=MC3R1.R3.1
|
||||
-enable=MC3R1.R3.2
|
||||
-enable=MC3R1.R5.2
|
||||
-enable=MC3R1.R5.3
|
||||
-enable=MC3R1.R5.4
|
||||
-enable=MC3R1.R5.5
|
||||
-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.4
|
||||
-enable=MC3R1.R8.8
|
||||
-doc_end
|
32
cmake/sca/eclair/ECL/analysis_WP.ecl
Normal file
32
cmake/sca/eclair/ECL/analysis_WP.ecl
Normal file
|
@ -0,0 +1,32 @@
|
|||
# This file must be named analyze_<RULESET>.ecl, where <RULESET> is the first
|
||||
# argument of analyze.sh.
|
||||
#
|
||||
# The aim of this file is to define the analysis configuration for <RULESET>.
|
||||
#
|
||||
# The essential portions of this file are marked with "# NEEDED":
|
||||
# they may be adapted of course.
|
||||
|
||||
-eval_file=zephyr_common_config.ecl
|
||||
|
||||
-doc_begin="Selection of guidelines from
|
||||
https://docs.zephyrproject.org/latest/guides/coding_guidelines/index.html"
|
||||
-enable=MC3R1.R2.3
|
||||
-enable=MC3R1.R2.1
|
||||
-enable=MC3R1.R5.9
|
||||
-enable=MC3R1.R5.1
|
||||
-enable=MC3R1.R5.6
|
||||
-enable=MC3R1.R5.7
|
||||
-enable=MC3R1.R5.8
|
||||
-enable=MC3R1.R8.9
|
||||
-enable=MC3R1.R8.3
|
||||
-enable=MC3R1.R8.5
|
||||
-enable=MC3R1.R8.6
|
||||
-enable=MC3R1.R22.4
|
||||
-enable=MC3R1.R22.3
|
||||
-enable=MC3R1.D1.1
|
||||
-enable=MC3R1.D3.1
|
||||
-enable=MC3R1.D4.1
|
||||
-enable=MC3R1.D4.10
|
||||
-enable=MC3R1.R17.2
|
||||
-enable=MC3R1.R17.7
|
||||
-doc_end
|
21
cmake/sca/eclair/ECL/analysis_first_analysis.ecl
Normal file
21
cmake/sca/eclair/ECL/analysis_first_analysis.ecl
Normal file
|
@ -0,0 +1,21 @@
|
|||
# This file must be named analyze_<RULESET>.ecl, where <RULESET> is the first
|
||||
# argument of analyze.sh.
|
||||
#
|
||||
# The aim of this file is to define the analysis configuration for <RULESET>.
|
||||
#
|
||||
# The essential portions of this file are marked with "# NEEDED":
|
||||
# they may be adapted of course.
|
||||
|
||||
-eval_file=zephyr_common_config.ecl
|
||||
|
||||
-doc_begin="Selection of guidelines from
|
||||
https://docs.zephyrproject.org/latest/guides/coding_guidelines/index.html"
|
||||
-enable=MC3R1.R8.2
|
||||
-enable=MC3R1.R10.2
|
||||
-enable=MC3R1.R10.5
|
||||
-enable=MC3R1.R10.6
|
||||
-enable=MC3R1.R11.2
|
||||
-enable=MC3R1.R12.4
|
||||
-enable=MC3R1.R13.4
|
||||
-enable=MC3R1.R16.1
|
||||
-doc_end
|
23
cmake/sca/eclair/ECL/analysis_heavy_STU.ecl
Normal file
23
cmake/sca/eclair/ECL/analysis_heavy_STU.ecl
Normal file
|
@ -0,0 +1,23 @@
|
|||
# This file must be named analyze_<RULESET>.ecl, where <RULESET> is the first
|
||||
# argument of analyze.sh.
|
||||
#
|
||||
# The aim of this file is to define the analysis configuration for <RULESET>.
|
||||
#
|
||||
# The essential portions of this file are marked with "# NEEDED":
|
||||
# they may be adapted of course.
|
||||
|
||||
-eval_file=zephyr_common_config.ecl
|
||||
|
||||
-doc_begin="Selection of guidelines from
|
||||
https://docs.zephyrproject.org/latest/guides/coding_guidelines/index.html"
|
||||
-enable=MC3R1.D4.6
|
||||
-enable=MC3R1.D4.9
|
||||
-enable=MC3R1.R12.1
|
||||
-enable=MC3R1.R13.3
|
||||
-enable=MC3R1.R2.6
|
||||
-enable=MC3R1.R10.1
|
||||
-enable=MC3R1.R10.3
|
||||
-enable=MC3R1.R10.4
|
||||
-enable=MC3R1.R14.4
|
||||
-enable=MC3R1.R20.7
|
||||
-doc_end
|
28
cmake/sca/eclair/ECL/analysis_std_lib.ecl
Normal file
28
cmake/sca/eclair/ECL/analysis_std_lib.ecl
Normal file
|
@ -0,0 +1,28 @@
|
|||
# This file must be named analyze_<RULESET>.ecl, where <RULESET> is the first
|
||||
# argument of analyze.sh.
|
||||
#
|
||||
# The aim of this file is to define the analysis configuration for <RULESET>.
|
||||
#
|
||||
# The essential portions of this file are marked with "# NEEDED":
|
||||
# they may be adapted of course.
|
||||
-eval_file=zephyr_common_config.ecl
|
||||
|
||||
-doc_begin="Selection of guidelines from
|
||||
https://docs.zephyrproject.org/latest/guides/coding_guidelines/index.html"
|
||||
-enable=MC3R1.R21.1
|
||||
-enable=MC3R1.R21.12
|
||||
-enable=MC3R1.R21.14
|
||||
-enable=MC3R1.R21.15
|
||||
-enable=MC3R1.R21.16
|
||||
-enable=MC3R1.R21.2
|
||||
-enable=MC3R1.R21.3
|
||||
-enable=MC3R1.R21.4
|
||||
-enable=MC3R1.R21.6
|
||||
-enable=MC3R1.R21.7
|
||||
-enable=MC3R1.R21.9
|
||||
-enable=MC3R1.R22.1
|
||||
-enable=MC3R1.R22.10
|
||||
-enable=MC3R1.R22.7
|
||||
-enable=MC3R1.R22.8
|
||||
-enable=MC3R1.R22.9
|
||||
-doc_end
|
81
cmake/sca/eclair/ECL/call_properties.ecl
Normal file
81
cmake/sca/eclair/ECL/call_properties.ecl
Normal file
|
@ -0,0 +1,81 @@
|
|||
|
||||
-call_properties+={"name(z_phys_map)", {"pointee_read(1=never)","pointee_write(1=always)","taken()"}}
|
||||
-call_properties+={"name(pcie_get_mbar)", {"pointee_read(3=never)","pointee_write(3=maybe)","taken()"}}
|
||||
-call_properties+={"name(k_mem_region_align)", {
|
||||
"pointee_read(1..2=never)",
|
||||
"pointee_write(1..2=always)","taken()"
|
||||
}}
|
||||
-call_properties+={"name(pentry_get)", {
|
||||
"pointee_read(1..2=never&&3..4=always)",
|
||||
"pointee_write(1..2=maybe&&3..4=never)"
|
||||
}}
|
||||
-call_properties+={"name(z_phys_unmap)", {"pointee_read(1=never)","pointee_write(1=never)"}}
|
||||
-call_properties+={"name(check_sum)", {"pointee_read(1=always)","pointee_write(1=never)"}}
|
||||
-call_properties+={"name(z_impl_device_get_binding)", {"pointee_read(1=maybe)","pointee_write(1=maybe)","taken()"}}
|
||||
-call_properties+={"name(z_setup_new_thread)", {"pointee_read(10=maybe)","pointee_write(10=never)","taken()"}}
|
||||
-call_properties+={"name(mbox_message_put)", {"pointee_read(3=always)","pointee_write(3=always)"}}
|
||||
-doc_begin="The functions can be implemented using the GCC built-in functions.
|
||||
See Section \"6.62.13 6.56 Built-in Functions to Perform Arithmetic with Overflow Checking\" of "GCC_MANUAL"."
|
||||
-call_properties+={"name(size_mul_overflow)", {"pointee_read(3=never)","pointee_write(3=always)","taken()"}}
|
||||
-call_properties+={"name(size_add_overflow)", {"pointee_read(3=never)","pointee_write(3=always)","taken()"}}
|
||||
-call_properties+={"name(__builtin_mul_overflow)", {"pointee_read(3=never)","pointee_write(3=always)","taken()"}}
|
||||
-call_properties+={"name(__builtin_add_overflow)", {"pointee_read(3=never)","pointee_write(3=always)","taken()"}}
|
||||
-doc_end
|
||||
|
||||
-call_properties+={"name(__builtin_va_end)", {"taken()"}} # Not documented in gcc.pdf
|
||||
-call_properties+={"name(arch_page_phys_get)", {"pointee_read(2=never)","pointee_write(2=maybe)","taken()"}}
|
||||
-call_properties+={"name(cbvprintf)", {"taken()"}}
|
||||
-call_properties+={"name(cbvprintf)", {"taken()"}}
|
||||
-call_properties+={"name(char2hex)", {"pointee_read(2=never)","pointee_write(2=maybe)"}}
|
||||
-call_properties+={"name(find_and_stack)", {"pointee_read(3=never)","pointee_write(3=always)"}}
|
||||
-call_properties+={"name(fix_missing_black)", {"pointee_read(1=always)","pointee_write(1=maybe)"}}
|
||||
-call_properties+={"name(__get_cpuid)", {"pointee_read(2..5=never)","pointee_write(2..5=always)"}}
|
||||
-call_properties+={"name(k_mutex_init)", {"pointee_read(1=never)","pointee_write(1=always)"}}
|
||||
-call_properties+={"name(k_sem_init)", {"pointee_read(1=never)","pointee_write(1=maybe)"}}
|
||||
-call_properties+={"name(k_work_init)", {"pointee_read(1=never)","pointee_write(1=always)"}}
|
||||
-call_properties+={"name(k_work_init_delayable)", {"pointee_read(1=never)","pointee_write(1=always)"}}
|
||||
-call_properties+={"name(k_work_queue_start)", {"taken()"}}
|
||||
-call_properties+={"name(log_from_user)", {"pointee_write(1..=never)", "taken()"}}
|
||||
-call_properties+={"name(log_n)", {"taken()"}}
|
||||
-call_properties+={"name(log_string_sync)", {"pointee_write(1..=never)", "taken()"}}
|
||||
-call_properties+={"name(match_region)", {"pointee_read(5..6=never)","pointee_write(5=always&&6=maybe)"}}
|
||||
-call_properties+={"name(mbox_async_alloc)", {"pointee_read(1=never)","pointee_write(1=maybe)"}}
|
||||
-call_properties+={"name(pipe_xfer_prepare)", {"pointee_read(2=never)","pointee_write(2=always)"}}
|
||||
-call_properties+={"name(printk)", {"pointee_write(1..=never)", "taken()"}}
|
||||
-call_properties+={"name(snprintk)", {"pointee_read(1=never)","pointee_write(1=always)", "taken()"}} # to check
|
||||
-call_properties+={"name(snprintk)", {"taken()"}}
|
||||
-call_properties+={"name(sys_bitarray_alloc)", {"pointee_read(3=never)","pointee_write(3=maybe)","taken()"}}
|
||||
-call_properties+={"name(sys_slist_init)", {"pointee_read(1=never)","pointee_write(1=always)"}}
|
||||
-call_properties+={"name(vprintk)", {"taken()"}}
|
||||
-call_properties+={"name(z_dummy_thread_init)", {"pointee_read(1=never)","pointee_write(1=always)"}} # the function does not initialize all the fields
|
||||
-call_properties+={"name(z_impl_k_stack_pop)", {"taken()"}}
|
||||
-call_properties+={"name(z_impl_z_log_msg2_runtime_vcreate)", {"taken()"}}
|
||||
-call_properties+={"name(z_log_minimal_printk)", {"pointee_write(1..=never)", "taken()"}}
|
||||
-call_properties+={"name(z_log_msg2_runtime_create)", {"pointee_write(1..=never)", "taken()"}}
|
||||
-call_properties+={"name(z_log_printk)", {"taken()"}}
|
||||
-call_properties+={"name(z_log_printf_arg_checker)", {"pointee_write(1..=never)", "taken()"}}
|
||||
-call_properties+={"name(z_log_strdup)", {"taken()"}}
|
||||
-call_properties+={"name(z_rb_foreach_next)", {"taken()"}}
|
||||
-call_properties+={"name(z_user_string_copy)", {"pointee_read(1=never)","pointee_write(1=maybe)","taken()"}}
|
||||
|
||||
-doc_begin="These macros are designed to evaluate to either 0 or 1."
|
||||
-call_properties+={"macro(name(UTIL_NOT))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"macro(name(IS_ENABLED))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"decl(name(isspace))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"macro(name(isdigit))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"decl(name(isdigit))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"macro(name(isalpha))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"decl(name(isalpha))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"macro(name(isupper))",{"data_kind(0=int_bool)"}}
|
||||
-call_properties+={"decl(name(isupper))",{"data_kind(0=int_bool)"}}
|
||||
-doc_end
|
||||
|
||||
-doc="__builtin_alloca cannot interfere with other effects."
|
||||
-call_properties+={"decl(name(__builtin_alloca))",{"noeffect"}}
|
||||
|
||||
-doc="log_strdup cannot interfere with other effects."
|
||||
-call_properties+={"decl(name(log_strdup))",{"noeffect"}}
|
||||
|
||||
|
||||
# Not documented functions
|
||||
# device_map
|
74
cmake/sca/eclair/ECL/extra.ecl
Normal file
74
cmake/sca/eclair/ECL/extra.ecl
Normal file
|
@ -0,0 +1,74 @@
|
|||
-doc_begin="The following entities are defined in assembly files"
|
||||
-extra_definitions+="name(x86_ap_start)"
|
||||
-extra_definitions+="^z_x86_(exception|nmi|trampoline)_stack[1-3]?$"
|
||||
-extra_definitions+="name(x86_sse_init)"
|
||||
-extra_definitions+="name(z_x86_kernel_ptables)"
|
||||
-extra_definitions+="name(z_x86_switch)"
|
||||
-extra_definitions+="name(z_x86_syscall_entry_stub)"
|
||||
-extra_definitions+="^(z_x86_user_string_nlen)_(fault_start|fault_end|fixup)\\(void\\)$"
|
||||
-extra_definitions+="name(z_x86_userspace_enter)"
|
||||
-extra_definitions+="name(arch_user_string_nlen)"
|
||||
-doc_end
|
||||
|
||||
-doc_begin="The following entities are defined from the linker."
|
||||
-extra_definitions+="name(_locore_start)"
|
||||
-extra_definitions+="name(_locore_end)"
|
||||
-extra_definitions+="name(__kernel_ram_start)"
|
||||
-extra_definitions+="name(__kernel_ram_end)"
|
||||
-extra_definitions+="name(__kernel_ram_size)"
|
||||
-extra_definitions+="name(_app_smem_start)"
|
||||
-extra_definitions+="name(_app_smem_end)"
|
||||
-extra_definitions+="name(_app_smem_size)"
|
||||
-extra_definitions+="name(_app_smem_rom_start)"
|
||||
-extra_definitions+="name(_app_smem_num_words)"
|
||||
-extra_definitions+="name(__bss_start)"
|
||||
-extra_definitions+="name(__bss_end)"
|
||||
-extra_definitions+="name(__rom_region_start)"
|
||||
-extra_definitions+="name(__rom_region_end)"
|
||||
-extra_definitions+="name(__rom_region_size)"
|
||||
-extra_definitions+="name(_flash_used)"
|
||||
-extra_definitions+="name(_image_ram_start)"
|
||||
-extra_definitions+="name(_image_ram_end)"
|
||||
-extra_definitions+="name(__text_region_start)"
|
||||
-extra_definitions+="name(__text_region_end)"
|
||||
-extra_definitions+="name(__text_region_size)"
|
||||
-extra_definitions+="name(__rodata_region_start)"
|
||||
-extra_definitions+="name(__rodata_region_end)"
|
||||
-extra_definitions+="name(__rodata_region_size)"
|
||||
-extra_definitions+="name(_vector_start)"
|
||||
-extra_definitions+="name(_vector_end)"
|
||||
-extra_definitions+="name(_end)"
|
||||
-extra_definitions+="name(__log_backends_start)"
|
||||
-extra_definitions+="name(__log_backends_end)"
|
||||
-extra_definitions+="name(__log_const_start)"
|
||||
-extra_definitions+="name(__log_const_end)"
|
||||
-extra_definitions+="name(__log_dynamic_start)"
|
||||
-extra_definitions+="name(__log_dynamic_end)"
|
||||
-extra_definitions+="name(__device_start)"
|
||||
-extra_definitions+="name(__device_end)"
|
||||
-extra_definitions+="name(__init_start)"
|
||||
-extra_definitions+="name(__init_end)"
|
||||
-extra_definitions+="name(z_shared_kernel_page_start)"
|
||||
-extra_definitions+="name(z_priv_stacks_ram_start)"
|
||||
-extra_definitions+="name(z_priv_stacks_ram_end)"
|
||||
-extra_definitions+="name(z_user_stacks_start)"
|
||||
-extra_definitions+="name(z_user_stacks_end)"
|
||||
-extra_definitions+="name(z_kobject_data_begin)"
|
||||
-extra_definitions+="name(__app_shmem_regions_start)"
|
||||
-extra_definitions+="name(__app_shmem_regions_end)"
|
||||
-extra_definitions+="name(_thread_idx_map)"
|
||||
-extra_definitions+="name(z_data_smem_footprint_mem_partition_part_start)"
|
||||
-extra_definitions+="name(z_data_smem_footprint_mem_partition_part_size)"
|
||||
-extra_definitions+="name(z_data_smem_footprint_mem_partition_bss_start)"
|
||||
-extra_definitions+="name(z_data_smem_footprint_mem_partition_bss_size)"
|
||||
-extra_definitions+="name(z_object_gperf_find)"
|
||||
-extra_definitions+="name(z_object_gperf_wordlist_foreach)"
|
||||
-extra_definitions+="name(_z_object_assignment_list_start)"
|
||||
-extra_definitions+="name(_z_object_assignment_list_end)"
|
||||
-doc_end
|
||||
|
||||
-doc="Entities created with Z_LINK_ITERABLE in linker.ld"
|
||||
-extra_definitions+="^_(_static_thread_data|k_timer|k_mem_slab|k_mem_pool|k_heap|k_mutex|k_stack|k_msgq|k_mbox|k_pipe|k_sem|k_queue)_list_(start|end)$"
|
||||
|
||||
-extra_definitions+="^z_mapped_(start|end)$"
|
||||
-extra_definitions+="^__init_(PRE_KERNEL_[12]|POST_KERNEL|APPLICATION|SMP)_start$"
|
7
cmake/sca/eclair/ECL/language_extensions.ecl
Normal file
7
cmake/sca/eclair/ECL/language_extensions.ecl
Normal file
|
@ -0,0 +1,7 @@
|
|||
-doc_begin="The following extension have been approved."
|
||||
-config=MC3R1.R1.2,behaviors+={hide,"service(STD.tokenext)&&category(^(__asm__|__attribute__|__typeof__|__builtin_types_compatible_p|__volatile__|__alignof|__alignof__|__const__|__inline|_Generic|_Static_assert|__auto_type)$)"}
|
||||
-config=MC3R1.R1.2,behaviors+={hide,"service(^STD.(stmtexpr|vptrarth|emptinit|emptrecd|arayzero|funojptr)$)"}
|
||||
-config=MC3R1.R1.2,behaviors+={hide,"service(STD.nonstdc)&&category(^GCC diagnostic (push|pop|ignored \"-W.*\")$)"}
|
||||
-config=MC3R1.R1.2,behaviors+={hide,"service(STD.freestlb)&&category(^(string|fcntl|time|errno|ctype|stdio|inttypes|stdlib).h$)"}
|
||||
-config=MC3R1.R1.2,behaviors+={hide,"service(STD.diag)&&category(^(ext_missing_varargs_arg|ext_paste_comma|ext_flexible_array_in_array|ext_auto_type)$)"}
|
||||
-doc_end
|
12
cmake/sca/eclair/ECL/out_of_initial_scope.ecl
Normal file
12
cmake/sca/eclair/ECL/out_of_initial_scope.ecl
Normal file
|
@ -0,0 +1,12 @@
|
|||
-doc_begin="Derived from Flavio Ceolin <flavio.ceolin@intel.com> email of July 23rd, 2021."
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/samples/.*$"}
|
||||
-file_tag+={out_of_initial_scope, "^.*\\.cpp$"}
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/tests/.*$"}
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/build/zephyr/include/generated/autoconf\\.h$"}
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/drivers/.*/.*$"}
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/lib/libc/.*$"}
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/lib/crc/.*$"}
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/subsys/(fb|fs|app_memory|fs|blueooth|console|cpp|debug|dfu|disk|fb|fs|mgmt|net|random|settings|shell|stats|storage|usb)/.*$"}
|
||||
-file_tag+={out_of_initial_scope, "^zephyr/build/CMakeFiles/.*$"}
|
||||
-file_tag+={external,out_of_initial_scope}
|
||||
-doc_end
|
57
cmake/sca/eclair/ECL/reports.ecl
Normal file
57
cmake/sca/eclair/ECL/reports.ecl
Normal file
|
@ -0,0 +1,57 @@
|
|||
# eclair_report
|
||||
|
||||
# This file must not be renamed: it is referenced by eclair-make.sh
|
||||
#
|
||||
# The aim of this file is to define the eclair_report configuration
|
||||
# common to IDE analyses.
|
||||
|
||||
quiet()
|
||||
|
||||
# NEEDED: set the variable for the binary output directory from the environment
|
||||
# variable.
|
||||
setq(data_dir,getenv("ECLAIR_DATA_DIR"))
|
||||
|
||||
# NEEDED: set the variable for the ECLAIR project database from the environment
|
||||
# variable.
|
||||
setq(ecd_file,getenv("ECLAIR_PROJECT_ECD"))
|
||||
|
||||
# NEEDED: set the variable for the output directory from the environment
|
||||
# variable.
|
||||
setq(output_dir,getenv("ECLAIR_OUTPUT_DIR"))
|
||||
|
||||
if(file_exists(ecd_file),
|
||||
db(ecd_file),
|
||||
create_db(ecd_file))
|
||||
|
||||
server_root("")
|
||||
server("changing")
|
||||
|
||||
setq(loaded_dir,join_paths(data_dir,"loaded"))
|
||||
make_dirs(loaded_dir)
|
||||
|
||||
# NEEDED: generate the ecd from frame files
|
||||
strings_map("load_ecb",500,"",".+\\.ecb",0,setq(ecb,join_paths(data_dir,$0)),load(ecb),rename(ecb,join_paths(loaded_dir,$0)))
|
||||
strings_map("load_ecb",500,"",".*",0)
|
||||
|
||||
loading()
|
||||
map_strings("load_ecb", dir_entries(data_dir))
|
||||
loaded()
|
||||
|
||||
if(string_equal(or(getenv("TEXTUAL_REPORTS"),"false"),"true")
|
||||
eval_file("report__textual.ecl"))
|
||||
|
||||
|
||||
# Output report summaries in ODT format.
|
||||
#-summary_odt=join_paths(output_dir,"odt")
|
||||
# Output report summaries in ODT format.
|
||||
#-summary_doc=join_paths(output_dir,"doc")
|
||||
# Output report summaries in pure text format.
|
||||
#-summary_txt=join_paths(output_dir,"txt")
|
||||
# Output full report in pure text format.
|
||||
#-full_txt=join_paths(output_dir,"txt")
|
||||
# Output metrics for use with spreadsheet applications (if enabled).
|
||||
#-metrics_tab=join_paths(output_dir,"metrics")
|
||||
# Output reports for use with spreadsheet applications
|
||||
#-reports_tab=join_paths(output_dir,"reports")
|
||||
|
||||
server("changed")
|
85
cmake/sca/eclair/ECL/toolchain.ecl
Normal file
85
cmake/sca/eclair/ECL/toolchain.ecl
Normal file
|
@ -0,0 +1,85 @@
|
|||
# get the toolchain compiler and version from the environment
|
||||
-setq=used_compiler,getenv("CC_ALIASES")
|
||||
|
||||
# Compilers.
|
||||
-file_tag+={GCC,"^used_compiler$"}
|
||||
# -file_tag+={GXX,"^/opt/zephyr-sdk-0\\.13\\.2/arm-zephyr-eabi/bin/arm-zephyr-eabi-g\\+\\+$"}
|
||||
|
||||
# Manuals.
|
||||
-setq=GCC_MANUAL,"https://gcc.gnu.org/onlinedocs/gcc-10.3.0/gcc.pdf"
|
||||
-setq=CPP_MANUAL,"https://gcc.gnu.org/onlinedocs/gcc-10.3.0/cpp.pdf"
|
||||
-setq=C99_STD,"ISO/IEC 9899:1999"
|
||||
|
||||
-doc_begin="
|
||||
See Chapter \"6 Extensions to the C Language Family\" of "GCC_MANUAL":
|
||||
__auto_type: see \"6.7 Referring to a Type with typeof\";
|
||||
__asm__: see \"6.48 Alternate Keywords\", and \"6.47 How to Use Inline Assembly Language in C Code\";
|
||||
__attribute__: see \"6.39 Attribute Syntax\";
|
||||
__typeof__: see \"6.7 Referring to a Type with typeof\";
|
||||
__builtin_types_compatible_p: see \"6.59 Other Built-in Functions Provided by GCC\";
|
||||
__volatile__: see \"6.48 Alternate Keywords\" and \"6.47.2.1 Volatile\";
|
||||
__alignof: see \"6.48 Alternate Keywords\" and \"6.44 Determining the Alignment of Functions, Types or
|
||||
Variables\";
|
||||
__alignof__: see \"6.48 Alternate Keywords\" and \"6.44 Determining the Alignment of Functions, Types or
|
||||
Variables\";
|
||||
__const__: see \"6.48 Alternate Keywords\";
|
||||
__inline: see \"6.48 Alternate Keywords\";
|
||||
_Generic: see description of option \"-Wc99-c11-compat\" in \"3.8 Options to Request or Suppress Warnings\". The compiler allows to C11 features in C99 mode;
|
||||
_Static_assert: see descriptions of options \"-Wc99-c11-compat\" and \"-Wc99-c2x-compat\" in \"3.8 Options to Request or Suppress Warnings\". The compiler allows to use C11 and C2x features in C99 mode.
|
||||
"
|
||||
-config=STD.tokenext,behavior+={c99, GCC, "^(__auto_type|__asm__|__attribute__|__typeof__|__builtin_types_compatible_p|__volatile__|__alignof|__alignof__|__const__|__inline|_Generic|_Static_assert)$"}
|
||||
-config=STD.tokenext,behavior+={c18, GCC, "^(__attribute__|__asm__|__const__|__volatile__|__inline)$"}
|
||||
-doc_end
|
||||
|
||||
-doc="See Chapter \"6.7 Referring to a Type with typeof\". of "GCC_MANUAL"."
|
||||
-config=STD.diag,diagnostics={safe,"^ext_auto_type$"}
|
||||
-doc="See Chapter \"6.1 Statements and Declarations in Expressions\" of "GCC_MANUAL"."
|
||||
-config=STD.stmtexpr,behavior+={c99,GCC,specified}
|
||||
-doc="See Chapter \"6.24 Arithmetic on void- and Function-Pointers\" of "GCC_MANUAL"."
|
||||
-config=STD.vptrarth,behavior={c99,GCC,specified}
|
||||
-doc_begin="
|
||||
ext_missing_varargs_arg: non-documented GCC extension.
|
||||
ext_paste_comma: see Chapter \"6.21 Macros with a Variable Number of Arguments.\" of "GCC_MANUAL".
|
||||
ext_flexible_array_in_array: see Chapter \"6.18 Arrays of Length Zero\" of "GCC_MANUAL".
|
||||
"
|
||||
-config=STD.diag,behavior+={c99,GCC,"^(ext_missing_varargs_arg|ext_paste_comma|ext_flexible_array_in_array)$"}
|
||||
-config=STD.diag,behavior+={c18,GCC,"^(ext_missing_varargs_arg)$"}
|
||||
-doc_end
|
||||
-doc_begin="Non-documented GCC extension"
|
||||
-config=STD.emptinit,behavior={c99,GCC,specified}
|
||||
-config=STD.emptinit,behavior={c18,GCC,specified}
|
||||
-doc_end
|
||||
-doc_begin="See Chapter \"6.19 Structures with No Members\" of "GCC_MANUAL"."
|
||||
-config=STD.emptrecd,behavior={c99,GCC,specified}
|
||||
-config=STD.emptrecd,behavior={c18,GCC,specified}
|
||||
-doc_end
|
||||
-doc="See Chapter \"6.18 Arrays of Length Zero\" of "GCC_MANUAL"."
|
||||
-config=STD.arayzero,behavior={c99,GCC,specified}
|
||||
|
||||
-config=STD.inclnest,behavior+={c99, GCC, 24}
|
||||
-config=STD.ppifnest,behavior+={c99, GCC, 32}
|
||||
-config=STD.macident,behavior+={c99, GCC, 4096}
|
||||
|
||||
-doc_begin="Allowed headers in freestanding mode."
|
||||
-config=STD.freestlb,behavior+={c99,GCC,"^(string|fcntl|time|errno|ctype|stdio|inttypes|stdlib).h$"}
|
||||
-config=STD.freestlb,behavior+={c18,GCC,"^(string|errno|inttypes).h$"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="See Annex \"J.5.7 Function pointer casts\" of "C99_STD"."
|
||||
-config=STD.funojptr,behavior={c99,GCC,specified}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="The maximum size of an object is defined in the MAX_SIZE macro, and for a 32 bit architecture is 8MB.
|
||||
The maximum size for an array is defined in the PTRDIFF_MAX and in a 32 bit architecture is 2^30-1."
|
||||
-config=STD.byteobjt,behavior={c99, GCC, 8388608}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="See Section \"6.62.13 Diagnostic Pragmas\" of "GCC_MANUAL"."
|
||||
-config=STD.nonstdc,behavior+={c99, GCC, "^GCC diagnostic (push|pop|ignored \"-W.*\")$"}
|
||||
-config=STD.nonstdc,behavior+={c18, GCC, "^GCC diagnostic (push|pop|ignored \"-W.*\")$"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="See Section \"4.9 Structures, Unions, Enumerations, and Bit-Fields\" of "GCC_MANUAL". Other integer types, such as long int, and enumerated types are permitted even in strictly conforming mode."
|
||||
-config=STD.bitfldtp,behavior+={c99, GCC, "unsigned char||unsigned short"}
|
||||
-config=STD.bitfldtp,behavior+={c18, GCC, "unsigned char||unsigned short"}
|
||||
-doc_end
|
121
cmake/sca/eclair/ECL/zephyr_common_config.ecl
Normal file
121
cmake/sca/eclair/ECL/zephyr_common_config.ecl
Normal file
|
@ -0,0 +1,121 @@
|
|||
-eval_file=out_of_initial_scope.ecl
|
||||
-eval_file=language_extensions.ecl
|
||||
-eval_file=call_properties.ecl
|
||||
-eval_file=extra.ecl
|
||||
|
||||
-doc="Hides all reports that have all areas out of scope."
|
||||
-reports+={hide,all_exp_external}
|
||||
|
||||
-doc="The API interface files are allowed to contain unused macros."
|
||||
-config=MC3R1.R2.5,reports+={hide, "any_area(macro(loc(top(public()||kind(pseudo)))))"}
|
||||
|
||||
-doc="Several header files are meant to be included in C as well as in C++ translation units."
|
||||
-config=MC3R1.R20.1,exception=extern_C
|
||||
|
||||
-default_call_properties+="pointee_read(1..=never)"
|
||||
-default_call_properties+="pointee_write(1..=always)"
|
||||
-default_call_properties+="taken()"
|
||||
|
||||
-doc_begin="These macros pass its first argument in a safe way to related compiler intrinsics."
|
||||
-config=MC3R1.R20.7,macros={safe,"^(va_start||va_arg)$"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="The value-preserving conversions of integer constants are safe"
|
||||
-config=MC3R1.R10.1,etypes={safe,"any()","preserved_integer_constant()"}
|
||||
-config=MC3R1.R10.3,etypes={safe,"any()","preserved_integer_constant()"}
|
||||
-config=MC3R1.R10.4,etypes={safe,"any()","preserved_integer_constant()||sibling(rhs,preserved_integer_constant())"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="Some macros are deliberately compile-time constants due to project configurability."
|
||||
-macro_selector={const_wrapper_macros,"name(CONSTEXPR)"}
|
||||
-config=MC3R1.R14.3,statements={safe, "node(if_stmt||conditional_operator)&&child(cond,wrapped(node(paren_expr)&&!macro(const_wrapper_macros), macro(const_wrapper_macros)))"}
|
||||
-doc_end
|
||||
|
||||
-doc="Casts to log_arg_t in logging macros are safe and expected."
|
||||
-config=MC3R1.R11.6,reports+={deliberate,"any_area(any_loc(any_exp(macro(name(__LOG_ARG_CAST)))))"}
|
||||
|
||||
-doc_begin="The following function-like macros are not writable as inline functions."
|
||||
-config=MC3R1.D4.9,macros+={deliberate,"name(ARG_UNUSED)"}
|
||||
-config=MC3R1.D4.9,macros+={deliberate,"name(CONSTEXPR)"}
|
||||
-config=MC3R1.D4.9,macros+={deliberate,"name(compiler_barrier)"}
|
||||
-config=MC3R1.D4.9,macros+={deliberate,"name(likely)"}
|
||||
-config=MC3R1.D4.9,macros+={deliberate,"name(unlikely)"}
|
||||
-doc_end
|
||||
|
||||
-doc_begin="For the following function-like macros it should be decided whether substitution with equivalent static inline functions is wanted and feasible."
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(ATOMIC_ELEM)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(ATOMIC_MASK)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(BIT32)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(BIT64)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(BIT64_MASK)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(BIT_MASK)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(DEVICE_MMIO_GET)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(DEVICE_MMIO_MAP)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(DEVICE_MMIO_RAM_PTR)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(IN)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(LOG_CORE_INIT)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(MAX)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(MB)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(MIN)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(OUT)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_BDF)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_BDF_TO_BUS)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_BAR_64)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_BAR_ADDR)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_BAR_INVAL_FLAGS)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_BAR_IO)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_BAR_MEM)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_CAPPTR_FIRST)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_CAP_ID)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_CAP_NEXT)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_EXT_CAP_ID)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_EXT_CAP_NEXT)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(PCIE_CONF_INTR_IRQ)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(POINTER_TO_UINT)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(ROUND_DOWN)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(ROUND_UP)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(UINT_TO_POINTER)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_BOOT_VIRT_TO_PHYS)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_IRQ_TO_INTERRUPT_VECTOR)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_KERNEL_STACK_SIZE_ADJUST)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_LOG_MSG2_ALIGNED_WLEN)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_MEM_PHYS_ADDR)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_MEM_VIRT_ADDR)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_STACK_PTR_ALIGN)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_THREAD_STACK_SIZE_ADJUST)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(Z_TICK_ABS)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(ceiling_fraction)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(irq_enable)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(irq_lock)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(irq_unlock)"}
|
||||
-config=MC3R1.D4.9,macros+={questionable,"name(k_panic)"}
|
||||
-doc_end
|
||||
|
||||
-doc="Use of CODE_UNREACHABLE is defensive programming."
|
||||
-config=MC3R1.R2.1,reports+={safe,"any_area(any_loc(any_exp(macro(name(CODE_UNREACHABLE)))))"}
|
||||
|
||||
-doc_begin="Identifers beginning with _ are tolerated."
|
||||
-config=MC3R1.R21.1,macros={relied,"^_.*$"}
|
||||
-config=MC3R1.R21.2,declarations={relied,"^(.*::)?_.*$"}
|
||||
-doc_end
|
||||
|
||||
-eval_file=adopted_code.ecl
|
||||
-eval_file=adopted_deviations.ecl
|
||||
|
||||
-doc="Hide reports marked as compliant."
|
||||
-remap_rtag={compliant,hide}
|
||||
|
||||
-doc="Hide reports marked as safe."
|
||||
-remap_rtag={safe,hide}
|
||||
|
||||
-doc="Hide reports marked as relied."
|
||||
-remap_rtag={relied,hide}
|
||||
|
||||
-doc="Hide reports marked as questionable."
|
||||
-remap_rtag={questionable,hide}
|
||||
|
||||
-doc="Hide reports marked as deliberate."
|
||||
-remap_rtag={deliberate,hide}
|
||||
|
||||
-doc="Hide reports marked as disapplied."
|
||||
-remap_rtag={disapplied,hide}
|
Loading…
Add table
Add a link
Reference in a new issue