개발 가이드
이 문서는 프로젝트를 개발하기 위한 가이드입니다. 개발 환경을 설정하고, 프로젝트 구조를 이해하며, 효과적으로 기여할 수 있도록 도와줍니다.
프로젝트 설정
- 저장소 클론:
git clone https://github.com/CRA7C/SSD.git cd SSD
- 필요한 의존성 설치:
python -m pip install -r requirements.txt
개발 환경
의존성을 관리하기 위해 가상 환경을 사용하는 것이 좋습니다. 다음 명령어를 사용하여 가상 환경을 만들 수 있습니다:
python -m venv venv
venv\Scripts\activate # Linux/MacOS 에서는 `source venv/bin/activate` 사용
작업을 시작하기 전에 가상 환경을 활성화하세요.
프로젝트 구조
프로젝트 디렉토리 구조는 다음과 같습니다:
SSD/
├─docs/ : Sphinx doc gen. 을 위한 파일들
├─log/ : logger 의 파일들을 보관하는 폴더
├─my_logger/ : 요구사항의 Logger 구현
├─ssd/ : 가상 ssd 모듈
├─testapp/ : Test Shell App. 모듈
│ ├─command/ : command 관련 하위 모듈
│ └─scripts/ : Test Scripts 및 관련 처리 모듈
├─tests/ : 테스트 파일들 모음 (120개)
│ ├─ssd_test/ : ssd 모듈의 Unit tests
│ └─testapp_test/ : testapp 모듈의 Unit tests
├─requirements.txt : 의존성 라이브러리 리스트
└─make.bat : make doc, make clean, make pylint 등
주요 구성 요소
my_logger/: 요구 된 Logger 로직을 포함합니다.
ssd/: 주된 SSD(솔리드 스테이트 드라이브) 시뮬레이션 로직을 포함합니다.
testapp/: SSD와 상호작용하는 테스트 애플리케이션을 포함합니다.
docs/: 문서화 소스 파일을 포함합니다.
tests/: 프로젝트의 테스트 케이스를 포함합니다.
코딩 스타일
PEP 8, 공식 Python 스타일 가이드를 따릅니다. 코드를 이 지침에 맞추어 작성하세요. pylint`와 `ruff 같은 도구를 사용하여 코드를 검사하고 포맷할 수 있습니다:
pylint ssd testapp
ruff check .
테스트
모든 새로운 기능 및 버그 수정에는 테스트가 포함되어야 합니다. `unittest`를 사용하여 테스트를 실행합니다. 테스트를 실행하려면 다음을 사용하세요
python -m unittest discover -s tests -p "*.py"
프로젝트 빌드
프로젝트를 빌드하기 위해 다음 명령어를 사용할 수 있습니다:
- 빌드 디렉토리 정리:
make clean
- 문서화 빌드:
make doc
문서화
Sphinx를 사용하여 프로젝트 문서를 생성합니다. 소스 파일은 docs/ 디렉토리에 있습니다.
기여
저장소를 포크하고, 기능이나 버그 수정을 위한 새 브랜치를 만드세요.
변경 사항을 작성하고, 충분히 문서화하고 테스트하세요.
변경 사항에 대한 명확한 설명과 함께 풀 리퀘스트를 제출하세요.
프로젝트에 기여해 주셔서 감사합니다!