본문 바로가기
소프트웨어 신뢰성 시험

정적 시험 (Static Test - MISRA C 2012)

by rlawnsghtest 2024. 2. 25.

쉬운것 부터 하나씩.

 

1. MISRA_C_2012_12_01 : 수식 내부에 사용된 연산자의 우선순위가 명확한지 검사

   - 연산자 == 는 괄호가 필요함

   - 연산자 != 는 괄호가 필요함

   - 연산자 -는 괄호가 필요함

   - 연자 /는 과호가 필요함

   - 연산자 %는 괄호가 필요함

 

2. MISRA_C_2012_08_03 : 동일한 객체 또는 함수의 모든 선언은 같은 이름과 타입 한정자를 사용해야 함.

 

3. MISRA_C_2012_15_06 : 반복문이나 선택문이 복합문인지 검사

   - if 문의 tehn 또는 else 절이 복합문이 아님

   - while 문의 body가 복합문이 아

   ※ 복합문을 만들기 위해서는 중괄호를 사용한다. {;}

 

4. MISRA_C_2012_DIR_04_04 :  코드 섹션 주석 처리 금

 

5. MISRA_C_2012_DIR_04_06 :  크기와 부호를 나타내는 typedefs는 basic numerical type 대신에 사용되어야 함.

   - stdint.h 헤더에 정의 되어 있으나, 헤더를 사용하지 못할 경우는 별도로 정의해 줘야 함.

 

typedef signed char int8_t;

typedef signed short int16_t;
typedef signed int int32_t;
typedef signed long int64_t;

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long uint64_t;

typedef float float32_t;
typedef double float64_t;
typedef long double float128_t;
 
   - bool_t 는 별도로 정의 해야 함.
#include <stdbool.h>

typedef _Bool bool_t;	// true:1, false:0
 

6. MISRA_C_2012_10_04 : 일반 산술변환이 수행되는 연산자의 두 피연산자들은 필히 같은 essential 타입 분류에 속하는 타입이어야   

   - 일반 산술변환의 두 피연산자가 다른 essential type  

 

7.  MISRA_C_2012_08_02 : 함수는 이름 있는 파라미터로 구성된 프로토타입 형태여야 함.

   - 함수 XXX 의 파라미터가 없지만 명시적인 void 타입 파라미터를 선언하지 않음.

 

8.  MISRA_C_2012_08_07 : 함수나 객체가 하나의 번역단위에서 참조된다면 외부참조(external linkage)로 정의되면 안됨

   - 하나의 Translation unit에서만 쓰인 파일 scope 변수 XXX 는 static으로 선언되어야 

 

9. MISRA_C_2012_02_05

10. MISRA_C_2012_17_07

10. MISRA_C_2012_07_02