Reconciling Polyspace Unused Parameter and MISRA 2.2 No Dead Code Warning

6 Ansichten (letzte 30 Tage)
Kier
Kier am 13 Apr. 2017
Beantwortet: Kier am 4 Jun. 2018
I followed the advice of Polyspace help for avoiding unused parameter warnings, i.e. void cast the parameter:
void func( char x )
{
(void)x;
/* This function doesn't use x. */
}
But this in itself creates a MISRA violation 2.2: "There shall be no dead code." for the void cast.
Short of justification, is there a way to silence both MISRA 2.2 AND Polyspace Unsed Parameter warning for those few functions over which I have no control over the prototype?
Thank you.

Antworten (2)

Alexandre De Barros
Alexandre De Barros am 14 Apr. 2017
Hi,
what about using a code annotation to automatically justify the defect? In this case, the annotation is:
/* polyspace<DEFECT:UNUSED_PARAMETER:Not a defect:No action planned> */
void func( char x )
The next time the analysis is launched, the defect will still be there but will have the severity "not a defect" (and the status "not action planned"). You can even use filters in the Results List to hide it from this view.
Alex
  1 Kommentar
Kier
Kier am 24 Apr. 2017
Thank you but I was wondering if there's a way to avoid justification because, for me, justification is a last resort. A justification is an artefact that has to be reviewed and managed but I think there are so few of these that it doesn't make much difference in this particular case.
The other complication is that we have semi-automatic code generation from Rhapsody. It's possible but not straightforward to add justifications before the function body declaration.

Melden Sie sich an, um zu kommentieren.


Kier
Kier am 4 Jun. 2018
The answer is to use the following macros. This stops Polyspace raising a violation but of course is optimised away by a compiler.
/* Acknowledge and prevent Unused Parameter warning for values. */
#define UNUSED_PARAMETER_VAL(x) {if((x) != 0U){/* Do Nothing */}}
/* Acknowledge and prevent Unused Parameter warning for pointers. */
#define UNUSED_PARAMETER_PTR(x) {if((x) != NULL){/* Do Nothing */}}

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by