2019년 1월 24일
소스코드 체크리스트
I. 소프트웨어 품질향상, 소스코드 체크리스트
가. 소스코드 체크리스트의 개념
- 소프트웨어 품질향상을 위해 소프트웨어 정적 분석 기반 프로그램 소스 코드 검사 기준
나. 소스코드 체크리스트의 필요성
![]() |
II. 소프트웨어 품질향상 위한 소스코드 평가 체크리스트
가. Clean Code 기반 소스코드 평가 체크리스트
구분 | 평가 항목 | 기준 |
---|---|---|
형식 | 팀 규칙 | – 한 팀 작성 코드는 일관성 |
신문기사 방식 | – 간단하면서도 설명적 | |
세로 형식 | – 밀접한 개념은 세로 가까이 | |
가로 형식 | – 소스 파일은 윤곽도 계층 | |
이름 | 분명한 작성 의도 | – 주석이 필요 없는 코드 |
그릇된 정보 회피 | – 길고 흡사한 이름 회피 | |
문맥에 맞는 단어 | – 용도와 관계 있는 이름 사용 | |
클래스명 일관성 | – 명사 또는 명사구 | |
함수명 일관성 | – 동사 또는 동사구 | |
함수 | 작은 단위 | – 한 줄 블록 내 타 함수 호출 |
한가지 기능 | – 동일 레벨로 추상화 | |
작은 인수 | – 최소한의 인수 사용 | |
중복 방지 | – 동일 용도 회피 | |
주석 | 코드 의도 표현 | – 코드만으로 의도 표현 불가 시 |
명쾌한 의도 | – 제 3자의 관점으로 작성 | |
주석 삭제 | – 없어도 되는 주석 | |
오류 | 예외 사용 | – Try-Catch 문 이용 |
중복 방지 | – 예외처리 중복 회피 | |
Null 반환금지 | – Null 반환 경우 최소화 |
나. 시큐어코딩 기반 취약점 점검 소스코드 평가 체크리스트
구분 | 평가 항목 | 기준 |
---|---|---|
입력데이터 검증 표현 | 디렉토리 경로 | – 입력값 디렉토리 필터링 |
스크립트 금지 | – 업로드 시 특정 확장자 제한 | |
SQL Injection | – 입력 값 필터링 | |
XSS 공격 점검 | – 게시물에 스크립트 제한 | |
서버 통제 | – HTML, 웹APP 소스 리뷰 | |
보안기능 포함여부 | 접근 제어 | – 접근 권한 필요 부분 확인 |
중요자원 권한 | – 중요 자원 권한 부여 금지 | |
암호알고리즘 | – 최신 알호알고리즘 사용 | |
중요정보 전송 | – 중요정보 전송 시 암호화 | |
패스워드 저장 | – 해시암호 등 일방 암호화 | |
취약 패스워드 | – 비밀번호 조합 규칙 수립 | |
에러처리 | 메시지 노출 | – 오류메시지 코드 외부 노출 |
오류상황 대응 | – 오류 상황 대응 방안 수립 | |
적절한예외처리 | – 의도하지 않는 상황 차단 | |
코드오류 | Null 포인터 | – Null 설정된 변수 주소 참조 |
부적절자원해제 | – 메모리 자원 등 누수 방지 |
III. 소스코드 평가 리스트 자동화 도구
도구 | 구분 | 설명 |
---|---|---|
CppCheck | 언어 | – C/C++ |
특징 | – OpenSource Software – 윈도/Linux 계열 사용 가능 | |
주요 결함 | – 배열 인덱스 참조 위반 – 생성자 없는 클래스/변수 | |
FindBugs | 언어 | – JAVA |
특징 | – 결함 발생 유형 기반 결함 검출 – 버그 우선순위로 나누어 표현 | |
사용 방법 | – 기본 제공 패턴에서 수정할 버그 필터 설정(XML) | |
PMD | 언어 | – JAVA |
특징 | – 선 정의 룰셋 기반 자바 코드 분석 – 다른 GUI 환경과 연동 플러그인 제공 | |
사용방법 | – 기본 룰셋 정의 → 룰 정의 → 룰셋 설정 → 허위 경보 처리 |