본문 바로가기
소프트웨어 개발(SW Dev)/Rule(CERT C)

CERT C 규칙 카테고리 설명

by flowhistory 2024. 3. 7.

CERT C 코딩규칙 카테고리를 정리하고 있습니다.

 

1. CERT C Coding Standard 문서에 포함된 규칙 카테고리

 

"Carnegie Mellon University" 배포하고 있는 "SEI CERT C Coding Standard Rules for Developing Safe, Reliable, and Secure Systems-Carnegie Mellon University(2016)"  문서에서 설명하고 있는 코딩규칙 카테고리 입니다.

 

표준 문서에 포함된 규칙 카테고리는 다음과 같습니다.

 

Preprocessor (PRE) - 전처리기

프로그램의 가독성을 향상시키고 오류 가능성을 줄이기 위한 내용을 다루는 카테고리입니다.

이러한 규칙들은 C 프로그래밍 언어를 사용할 때 안전하고 효율적인 코드를 작성하는 데 도움을 줍니다.

 

Declarations and Initialization (DCL) - 선언과 초기화

변수와 포인터 선언에 관련된 내용을 다루는 카테고리입니다.

변수와 포인터의 초기화, 선언 방법 등에 대한 규칙이 포함되어 있습니다.

 

Expressions (EXP) - 표현식

표현식에 관한 내용을 다루는 카테고리입니다.

표현식은 변수, 상수, 연산자 등을 조합하여 값을 계산하는 방법을 나타냅니다.

 

Integers (INT) - 정수

정수형 데이터 형 변환에 관련된 내용을 다루는 카테고리입니다.

부호 있는 정수형과 부호 없는 정수형 간의 형 변환에 대한 안전한 방법에 대한 규칙이 포함되어 있습니다.

 

Floating Point (FLP) - 부동 소수점

 부동 소수점에 관한 내용을 다루는 카테고리입니다.

부동 소수점은 컴퓨터에서 소수를 표현하는 방법 중 하나로, 실수를 근사적으로 표현합니다.

부동 소수점 변수를 루프 카운터로 사용하지 말 것과 같은 소수점 연산의 정확성과 안전성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

Arrays (ARR) - 배열

배열과 관련된 내용을 다루는 카테고리입니다.

배열의 안전한 사용을 위한 규칙이 포함되어 있습니다.

 

Characters and Strings (STR) - 문자와 문자열

문자열 조작에 관련된 내용을 다루는 카테고리입니다.

문자열 조작 함수의 안전한 사용과 버퍼 오버플로우(buffer overflow) 방지에 대한 규칙이 포함되어 있습니다.

 

Memory Management (MEM) - 메모리 관리

메모리 할당과 해제에 관련된 내용을 다루는 카테고리입니다.

동적 메모리 할당 시의 안전한 사용 방법과 메모리 누수 방지에 대한 규칙이 포함되어 있습니다.

 

Input Output (FIO) - 입출력

파일 입출력에 관련된 내용을 다루는 카테고리입니다.

파일 조작 시의 안전한 접근 방법과 오류 처리에 대한 규칙이 포함되어 있습니다.

 

Environment (ENV) - 환경

프로그램의 환경과 관련된 내용을 다루는 카테고리입니다.

특정 함수의 반환 값으로 참조된 객체를 수정하지 말 것과 같은 프로그램의 안전성과 신뢰성을 높이기 위한 규칙이 포함되어 있습니다.

 

Signals (SIG) - 시그널

프로그램에서 발생하는 이벤트를 알리기 위해 전달되는 소프트웨어 인터럽트에 관련된 내용을 다루는 카테고리입니다.

시그널 핸들러 내에서는 비동기 안전 함수만 호출할 것과 같은 프로그램의 안전성과 신뢰성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

Error Handling (ERR) - 오류 처리

프로그램에서 발생하는 오류 처리와 관련된 내용을 다루는 카테고리입니다.

표준 라이브러리 오류를 감지하고 처리할 것과 같은 프로그램의 안전성과 신뢰성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

Concurrency (CON) - 동시성

프로그램에서 발생하는 동시성(concurrency) 관련된 내용을 다루는 카테고리입니다.

여러 스레드에서 비트 필드에 접근할 때 데이터 경합을 방지할 것과 같은 프로그램의 동시성과 안전성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

Miscellaneous (MSC) - 기타

프로그램에서 발생하는 다양한 상황과 관련된 내용을 다루는 카테고리입니다.

rand() 함수를 난수 생성에 사용하지 말 것과 같은 프로그램의 안전성과 신뢰성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

 

2. 표준 문서에 포함되어 있지 않고 "https://wiki.sei.cmu.edu/confluence"에서 설명하고 있는 규칙 카테고리

 

Application Programming Interfaces (API) - 응용 프로그램 인터페이스

프로그램에서 사용되는 API(Application Programming Interface) 관련된 내용을 다루는 카테고리입니다.

라이브러리 함수의 반환 값을 확인할 것과 같은 프로그램의 안전성과 신뢰성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

POSIX (POS) - 포식스

프로그램에서 사용되는 POSIX 표준과 관련된 내용을 다루는 카테고리입니다.

POSIX(Portable Operating System Interface)는 이식 가능한 운영 체제 인터페이스를 정의하는 국제 표준입니다.

이 표준은 다양한 UNIX 기반 시스템 간의 호환성을 증진하기 위해 개발되었습니다.

readlink() 함수를 올바르게 사용할 것과 같은 프로그램의 안전성과 신뢰성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

Microsoft Windows (WIN) - 마이크로소프트 윈도우

프로그램에서 사용되는 Microsoft Windows API 관련된 내용을 다루는 카테고리입니다.

강제로 실행을 종료하지 말 것과 같은 프로그램의 안전성과 신뢰성을 높이기 위해 지켜져야 하는 규칙이 포함되어 있습니다.

 

CERT C를 적용하여 static analysis 를 수행하는 도구마다 적용하는 규칙이 차이가 있어 표준에서 구분하는 카테고리 우선적으로 기술하였습니다. 

간단하다고 생각한 CERT C 규칙 정리 작업이 예상보다 오래 걸릴 것 같습니다.

728x90

'소프트웨어 개발(SW Dev) > Rule(CERT C)' 카테고리의 다른 글

CERT C - DCL 규칙 목록  (0) 2024.11.07
CERT C - PRE 규칙 목록  (0) 2024.10.24
CERT C 규칙 카테고리(표)  (0) 2024.10.24
01. Preprocessor (PRE), 전처리기  (0) 2023.09.25
CERT C 코딩 표준  (0) 2023.02.07

댓글