From 1cfad7e54f40a51c204b926ff9f365a5bc77c46a Mon Sep 17 00:00:00 2001 From: Andre Maroneze <andre.maroneze@cea.fr> Date: Fri, 5 Mar 2021 12:05:52 +0100 Subject: [PATCH] [Kernel] add wkey CERT:MSC:37 to existing warning --- src/kernel_internals/typing/cabs2cil.ml | 4 ++-- src/kernel_services/plugin_entry_points/kernel.ml | 2 ++ src/kernel_services/plugin_entry_points/kernel.mli | 2 ++ .../wp/tests/wp/oracle/stmtcompiler_test.res.oracle | 2 +- tests/cil/oracle/bts297.res.oracle | 2 +- tests/misc/oracle/bts0452.res.oracle | 4 ++-- tests/slicing/oracle/use_spec.0.res.oracle | 2 +- tests/slicing/oracle/use_spec.1.res.oracle | 2 +- tests/syntax/oracle/exit.res.oracle | 2 +- tests/syntax/oracle/inline_calls.0.res.oracle | 2 +- tests/syntax/oracle/inline_calls.1.res.oracle | 2 +- tests/syntax/oracle/inline_calls.2.res.oracle | 2 +- tests/syntax/oracle/noret.res.oracle | 2 +- tests/syntax/oracle/one_ret_assert.res.oracle | 2 +- tests/syntax/oracle/vla_switch.res.oracle | 2 +- tests/value/oracle/audit-out.json | 10 +++++----- tests/value/oracle/imprecise_invalid_write.res.oracle | 6 +++--- 17 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml index 64bd16cb823..f7612dbb21e 100644 --- a/src/kernel_internals/typing/cabs2cil.ml +++ b/src/kernel_internals/typing/cabs2cil.ml @@ -9447,7 +9447,7 @@ and doDecl local_env (isglobal: bool) : A.definition -> chunk = function if !currentFunctionFDEC.svar.vname = "main" then [],res else begin - Kernel.warning ~current:true + Kernel.warning ~current:true ~wkey:Kernel.wkey_cert_msc_37 "Body of function %s falls-through. \ Adding a return statement" !currentFunctionFDEC.svar.vname; @@ -9459,7 +9459,7 @@ and doDecl local_env (isglobal: bool) : A.definition -> chunk = function to get there anyway. *) let null_ptr = makeCastT (zero ~loc) intType (TPtr(rt,[])) in let res = Some (new_exp ~loc (Lval (mkMem null_ptr NoOffset))) in - Kernel.warning ~current:true + Kernel.warning ~current:true ~wkey:Kernel.wkey_cert_msc_37 "Body of function %s falls-through. \ Adding a return statement" !currentFunctionFDEC.svar.vname; diff --git a/src/kernel_services/plugin_entry_points/kernel.ml b/src/kernel_services/plugin_entry_points/kernel.ml index e21274bd4b3..8b30799b24b 100644 --- a/src/kernel_services/plugin_entry_points/kernel.ml +++ b/src/kernel_services/plugin_entry_points/kernel.ml @@ -167,6 +167,8 @@ let wkey_int_conversion = let wkey_cert_exp_46 = register_warn_category "CERT:EXP:46" +let wkey_cert_msc_37 = register_warn_category "CERT:MSC:37" + let wkey_cert_msc_38 = register_warn_category "CERT:MSC:38" let () = set_warn_status wkey_cert_msc_38 Log.Werror diff --git a/src/kernel_services/plugin_entry_points/kernel.mli b/src/kernel_services/plugin_entry_points/kernel.mli index a6e7e409bca..c971c83111f 100644 --- a/src/kernel_services/plugin_entry_points/kernel.mli +++ b/src/kernel_services/plugin_entry_points/kernel.mli @@ -163,6 +163,8 @@ val wkey_int_conversion: warn_category val wkey_cert_exp_46: warn_category +val wkey_cert_msc_37: warn_category + val wkey_cert_msc_38: warn_category val wkey_cert_exp_10: warn_category diff --git a/src/plugins/wp/tests/wp/oracle/stmtcompiler_test.res.oracle b/src/plugins/wp/tests/wp/oracle/stmtcompiler_test.res.oracle index f660536e9e2..234959f116a 100644 --- a/src/plugins/wp/tests/wp/oracle/stmtcompiler_test.res.oracle +++ b/src/plugins/wp/tests/wp/oracle/stmtcompiler_test.res.oracle @@ -1,6 +1,6 @@ # frama-c -wp [...] [kernel] Parsing tests/wp/stmtcompiler_test.i (no preprocessing) -[kernel] tests/wp/stmtcompiler_test.i:136: Warning: +[kernel:CERT:MSC:37] tests/wp/stmtcompiler_test.i:136: Warning: Body of function if_assert falls-through. Adding a return statement [wp] Running WP plugin... [kernel] tests/wp/stmtcompiler_test.i:145: Warning: diff --git a/tests/cil/oracle/bts297.res.oracle b/tests/cil/oracle/bts297.res.oracle index 3a0e4f8ea87..17776bf4e66 100644 --- a/tests/cil/oracle/bts297.res.oracle +++ b/tests/cil/oracle/bts297.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/cil/bts297.c (with preprocessing) -[kernel] tests/cil/bts297.c:4: Warning: +[kernel:CERT:MSC:37] tests/cil/bts297.c:4: Warning: Body of function abrupt falls-through. Adding a return statement /* Generated by Frama-C */ int abrupt(int x) diff --git a/tests/misc/oracle/bts0452.res.oracle b/tests/misc/oracle/bts0452.res.oracle index ac0e8049e5f..2c73b32fed5 100644 --- a/tests/misc/oracle/bts0452.res.oracle +++ b/tests/misc/oracle/bts0452.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/misc/bts0452.i (no preprocessing) -[kernel] tests/misc/bts0452.i:13: Warning: +[kernel:CERT:MSC:37] tests/misc/bts0452.i:13: Warning: Body of function f falls-through. Adding a return statement -[kernel] tests/misc/bts0452.i:27: Warning: +[kernel:CERT:MSC:37] tests/misc/bts0452.i:27: Warning: Body of function h falls-through. Adding a return statement diff --git a/tests/slicing/oracle/use_spec.0.res.oracle b/tests/slicing/oracle/use_spec.0.res.oracle index c0241861da4..429c7b8b3a5 100644 --- a/tests/slicing/oracle/use_spec.0.res.oracle +++ b/tests/slicing/oracle/use_spec.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/slicing/use_spec.i (no preprocessing) -[kernel] tests/slicing/use_spec.i:18: Warning: +[kernel:CERT:MSC:37] tests/slicing/use_spec.i:18: Warning: Body of function f falls-through. Adding a return statement [slicing] slicing requests in progress... [eva] Analyzing a complete application starting at main diff --git a/tests/slicing/oracle/use_spec.1.res.oracle b/tests/slicing/oracle/use_spec.1.res.oracle index 93c1f23b840..025d609b877 100644 --- a/tests/slicing/oracle/use_spec.1.res.oracle +++ b/tests/slicing/oracle/use_spec.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/slicing/use_spec.i (no preprocessing) -[kernel] tests/slicing/use_spec.i:18: Warning: +[kernel:CERT:MSC:37] tests/slicing/use_spec.i:18: Warning: Body of function f falls-through. Adding a return statement [slicing] slicing requests in progress... [eva] Analyzing a complete application starting at main2 diff --git a/tests/syntax/oracle/exit.res.oracle b/tests/syntax/oracle/exit.res.oracle index 48e6416347f..a7022ad38e1 100644 --- a/tests/syntax/oracle/exit.res.oracle +++ b/tests/syntax/oracle/exit.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/exit.c (with preprocessing) -[kernel] tests/syntax/exit.c:16: Warning: +[kernel:CERT:MSC:37] tests/syntax/exit.c:16: Warning: Body of function g falls-through. Adding a return statement /* Generated by Frama-C */ #include "stdlib.h" diff --git a/tests/syntax/oracle/inline_calls.0.res.oracle b/tests/syntax/oracle/inline_calls.0.res.oracle index fd9c8a925f5..99c4c1192c5 100644 --- a/tests/syntax/oracle/inline_calls.0.res.oracle +++ b/tests/syntax/oracle/inline_calls.0.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/inline_calls.i (no preprocessing) -[kernel] tests/syntax/inline_calls.i:40: Warning: +[kernel:CERT:MSC:37] tests/syntax/inline_calls.i:40: Warning: Body of function f1 falls-through. Adding a return statement /* Generated by Frama-C */ int f(void) diff --git a/tests/syntax/oracle/inline_calls.1.res.oracle b/tests/syntax/oracle/inline_calls.1.res.oracle index 710e3f55ab8..8522e300317 100644 --- a/tests/syntax/oracle/inline_calls.1.res.oracle +++ b/tests/syntax/oracle/inline_calls.1.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/inline_calls.i (no preprocessing) -[kernel] tests/syntax/inline_calls.i:40: Warning: +[kernel:CERT:MSC:37] tests/syntax/inline_calls.i:40: Warning: Body of function f1 falls-through. Adding a return statement /* Generated by Frama-C */ int f(void) diff --git a/tests/syntax/oracle/inline_calls.2.res.oracle b/tests/syntax/oracle/inline_calls.2.res.oracle index e58cc380f9b..944a217b290 100644 --- a/tests/syntax/oracle/inline_calls.2.res.oracle +++ b/tests/syntax/oracle/inline_calls.2.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/inline_calls.i (no preprocessing) -[kernel] tests/syntax/inline_calls.i:40: Warning: +[kernel:CERT:MSC:37] tests/syntax/inline_calls.i:40: Warning: Body of function f1 falls-through. Adding a return statement /* Generated by Frama-C */ int f(void) diff --git a/tests/syntax/oracle/noret.res.oracle b/tests/syntax/oracle/noret.res.oracle index 26c634ad06f..34a2110369c 100644 --- a/tests/syntax/oracle/noret.res.oracle +++ b/tests/syntax/oracle/noret.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/noret.i (no preprocessing) -[kernel] tests/syntax/noret.i:5: Warning: +[kernel:CERT:MSC:37] tests/syntax/noret.i:5: Warning: Body of function foo falls-through. Adding a return statement /* Generated by Frama-C */ struct s { diff --git a/tests/syntax/oracle/one_ret_assert.res.oracle b/tests/syntax/oracle/one_ret_assert.res.oracle index a567df1d561..8e5b81c296e 100644 --- a/tests/syntax/oracle/one_ret_assert.res.oracle +++ b/tests/syntax/oracle/one_ret_assert.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/one_ret_assert.i (no preprocessing) -[kernel] tests/syntax/one_ret_assert.i:8: Warning: +[kernel:CERT:MSC:37] tests/syntax/one_ret_assert.i:8: Warning: Body of function g falls-through. Adding a return statement /* Generated by Frama-C */ int X; diff --git a/tests/syntax/oracle/vla_switch.res.oracle b/tests/syntax/oracle/vla_switch.res.oracle index 55afc254bf0..dab614c53e4 100644 --- a/tests/syntax/oracle/vla_switch.res.oracle +++ b/tests/syntax/oracle/vla_switch.res.oracle @@ -1,5 +1,5 @@ [kernel] Parsing tests/syntax/vla_switch.i (no preprocessing) -[kernel] tests/syntax/vla_switch.i:16: Warning: +[kernel:CERT:MSC:37] tests/syntax/vla_switch.i:16: Warning: Body of function case3 falls-through. Adding a return statement [kernel] User Error: tests/syntax/vla_switch.i:7, cannot jump from switch statement bypassing initialization of variable b, declared at tests/syntax/vla_switch.i:9 [kernel] Frama-C aborted: invalid user input. diff --git a/tests/value/oracle/audit-out.json b/tests/value/oracle/audit-out.json index f9aa254ce11..23aa305f9c0 100644 --- a/tests/value/oracle/audit-out.json +++ b/tests/value/oracle/audit-out.json @@ -51,11 +51,11 @@ "kernel": { "warning-categories": { "enabled": [ - "*", "CERT", "CERT:EXP", "CERT:EXP:46", "CERT:MSC", "CERT:MSC:38", - "acsl-extension", "annot", "annot:missing-spec", "annot:multi-from", - "annot-error", "audit", "check", "check:volatile", "cmdline", - "ghost", "ghost:bad-use", "inline", "linker", - "linker:drop-conflicting-unused", "parser", + "*", "CERT", "CERT:EXP", "CERT:EXP:46", "CERT:MSC", "CERT:MSC:37", + "CERT:MSC:38", "acsl-extension", "annot", "annot:missing-spec", + "annot:multi-from", "annot-error", "audit", "check", + "check:volatile", "cmdline", "ghost", "ghost:bad-use", "inline", + "linker", "linker:drop-conflicting-unused", "parser", "parser:conditional-feature", "pp", "pp:compilation-db", "typing", "typing:implicit-conv-void-ptr", "typing:implicit-function-declaration", diff --git a/tests/value/oracle/imprecise_invalid_write.res.oracle b/tests/value/oracle/imprecise_invalid_write.res.oracle index 338f79ddc5e..153b5cdfa77 100644 --- a/tests/value/oracle/imprecise_invalid_write.res.oracle +++ b/tests/value/oracle/imprecise_invalid_write.res.oracle @@ -1,9 +1,9 @@ [kernel] Parsing tests/value/imprecise_invalid_write.i (no preprocessing) -[kernel] tests/value/imprecise_invalid_write.i:5: Warning: +[kernel:CERT:MSC:37] tests/value/imprecise_invalid_write.i:5: Warning: Body of function main1 falls-through. Adding a return statement -[kernel] tests/value/imprecise_invalid_write.i:10: Warning: +[kernel:CERT:MSC:37] tests/value/imprecise_invalid_write.i:10: Warning: Body of function main2 falls-through. Adding a return statement -[kernel] tests/value/imprecise_invalid_write.i:17: Warning: +[kernel:CERT:MSC:37] tests/value/imprecise_invalid_write.i:17: Warning: Body of function main3 falls-through. Adding a return statement [eva] Analyzing a complete application starting at main [eva] Computing initial state -- GitLab