소스코드 체크리스트

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

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^