개발 가이드

이 문서는 프로젝트를 개발하기 위한 가이드입니다. 개발 환경을 설정하고, 프로젝트 구조를 이해하며, 효과적으로 기여할 수 있도록 도와줍니다.

프로젝트 설정

  1. 저장소 클론:
    git clone https://github.com/CRA7C/SSD.git
    cd SSD
    
  2. 필요한 의존성 설치:
    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"

프로젝트 빌드

프로젝트를 빌드하기 위해 다음 명령어를 사용할 수 있습니다:

  1. 빌드 디렉토리 정리:
    make clean
    
  2. 문서화 빌드:
    make doc
    

문서화

Sphinx를 사용하여 프로젝트 문서를 생성합니다. 소스 파일은 docs/ 디렉토리에 있습니다.

기여

  1. 저장소를 포크하고, 기능이나 버그 수정을 위한 새 브랜치를 만드세요.

  2. 변경 사항을 작성하고, 충분히 문서화하고 테스트하세요.

  3. 변경 사항에 대한 명확한 설명과 함께 풀 리퀘스트를 제출하세요.

프로젝트에 기여해 주셔서 감사합니다!