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 환경과 연동 플러그인 제공 | |
사용방법 | – 기본 룰셋 정의 → 룰 정의 → 룰셋 설정 → 허위 경보 처리 |