반응형
📝10강: Deviation 처리와 컴플라이언스 문서화 전략 MISRA-C 규칙을 따라가다 보면…"이 규칙은 꼭 지켜야 하는데, 현실적으로 불가능하다?" 🤔이럴 때 등장하는 것이 바로 Deviation(예외 처리) 입니다!1. 왜 Deviation이 필요할까? 🎯모든 규칙은 "안전 + 일관성"을 위해 만들어졌지만특수한 상황에서는 적용이 오히려 불필요하거나 역효과일 수 있음.따라서 명확한 이유와 근거가 있으면 예외 허용 가능!2. 예외 허용 조건 ✅대체 수단 존재: 안전성을 다른 방법으로 확보했을 때정당한 사유: 하드웨어 제약, 표준 라이브러리 호환 등문서화 완료: 사유와 영향을 명확히 기록해야 함👉 즉, "아무 이유 없이 편해서"는 ❌ 절대 불가!3. Deviation 기록 요령 ✍️규칙 번호: ..
🛠️ 9강: MISRA-C와 정적 분석 도구 활용 전략MISRA-C 규칙은 알겠는데… 이걸 일일이 다 확인한다고?걱정 마세요! 오늘은 정적 분석 도구를 활용해 자동으로 규칙 준수와 품질을 챙기는 법을 알아봅니다. 😎1. 정적 분석 도구의 역할 🔍코드를 실행하지 않고 문제점을 자동으로 찾아주는 도구컴파일 전에 잠재적 버그를 🚨 알림!대표적인 도구:Polyspace: 수학적 증명을 통한 에러 검출Coverity: 산업 현장에서 많이 쓰이는 대규모 분석QAC / PC-Lint: MISRA-C 전용으로 강력한 검사 가능2. 정적 분석 도구의 힘 ⚡코드를 실행하지 않고 문제 탐지 → 버그 예방의 첫걸음사람이 놓치기 쉬운 부분까지 꼼꼼히 확인CI/CD에 붙이면 "자동 MISRA 점검 로봇" 완성 🤖3. 왜..
🎯 8강: 설계 규칙과 재사용 가능한 코드 작성안녕하세요 여러분! 👋오늘은 우리가 매일 쓰는 함수(Function)를 어떻게 설계해야MISRA-C에 맞는 안전하고 깔끔한 코드를 만들 수 있는지 살펴볼게요. 🚀1. 함수 인자의 개수 제한 ✋함수에 인자가 너무 많으면 읽기도 어렵고, 사용하기도 힘들죠.MISRA-C는 함수 인자의 개수를 8개 이하로 제한할 것을 권장합니다.// 🚨 나쁜 예시void process(int a, int b, int c, int d, int e, int f, int g, int h, int i);// ✅ 좋은 예시 (구조체로 묶기)typedef struct { int a, b, c, d;} Params;void process(Params p);👉 인자가 많아지면 구조..
🚀 7강: 변수 선언과 스코프 제한 규칙안녕하세요! 오늘은 C 언어 코딩에서 절대 빼놓을 수 없는 변수 선언과 스코프 관리 이야기를 들고 왔습니다.변수를 잘못 쓰면 프로그램은 금방 버그 천국 🐞으로 변해버리죠.MISRA-C는 이를 방지하기 위해 여러 규칙을 제시하고 있어요.1. 전역 변수 사용 최소화 🌍전역 변수(Global Variable)는 편리해 보이지만, 프로그램 전체에 영향을 미치기 때문에 예측 불가능한 부작용을 유발할 수 있어요.MISRA-C에서는 전역 변수 사용을 꼭 필요한 경우에만 제한적으로 허용합니다. ✅ 팁:대신 함수 매개변수나 정적(static) 지역 변수를 사용하세요.협업 시 "누가 이 값을 바꿨는지" 추적하기 훨씬 쉬워집니다!2. 변수 Shadowing 방지 🌑int val..
🛠️✨ 6강 : 전처리기 사용 규칙과 코드 가독성 확보안녕하세요! 오늘은 C언어 전처리기(preprocessor) 이야기를 해볼 거예요.#define, #ifdef, #include 같은 전처리기들은 개발자에게 강력한 무기를 제공하지만,잘못 쓰면 가독성 저하와 유지보수 지옥 🔥으로 이어집니다.MISRA-C는 이를 방지하기 위해 전처리기 사용 규칙을 명확히 제시하고 있어요. 🚦1. #define의 제한적 사용 📌#define은 상수 정의, 매크로 함수 등에 많이 쓰이죠.하지만 MISRA-C에서는 오남용 금지! 🚫#define PI 3.14 // 🚫 매직 넘버를 숨겨버림 (타입도 없음)👉 대안: const 혹은 enum 사용const float PI = 3.14f; // ✅ 타입이 명확하..
🚀 5회강: 포인터 사용 제한과 안전한 메모리 접근 🛡️안녕하세요! MISRA-C 안전 코딩 여정을 함께하고 있는 여러분, 반갑습니다!오늘은 많은 개발자들의 사랑(?)과 동시에 두려움의 대상이기도 한 포인터(pointer) 이야기를 해보겠습니다. 🧵✨C 언어를 처음 배울 때 "포인터는 C의 꽃이다!"라는 말을 듣곤 합니다.하지만 MISRA-C 관점에서 포인터는 위험한 꽃이 될 수 있죠. 🌹👉💥🌐 왜 포인터가 위험할까?포인터는 메모리 주소를 직접 다룰 수 있게 해주는 강력한 도구입니다.그런데 이 강력함이 잘못 쓰이면 메모리 침범, 오동작, 보안 취약점으로 직결됩니다. 😱예를 들어:int arr[5] = {0}; int *p = arr; p[10] = 100; // 🚨 배열 범위 초과, ..