Files
FESADev/phases/cpp-object-oriented-modular-refactoring/step1.md
T

57 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Step 1: C++ Style Tooling
> 과거 개발 계획이다. 아래 작업·상태·예시는 현재 실행 지시가 아니다.
> 현재 구현과 검증 한계는 [기능 요약](../../docs/cpp-object-oriented-modular-refactoring/README.md)을 따른다.
## 읽어야 할 파일
- `/AGENTS.md`
- `../../docs/solver-core/README.md`
- `../../docs/solver-core/README.md`
- `../../docs/cpp-object-oriented-modular-refactoring/README.md`
- `/CMakeLists.txt`
- `/.gitignore`
- `/tests/test_agent_skill_workflow_contract.py`
- `/phases/cpp-object-oriented-modular-refactoring/index.json`
- `/phases/cpp-object-oriented-modular-refactoring/step1.md`
## 작업
Requirements `R-STYLE-001`과 `R-DOC-001`의 repository tooling만 구현한다.
1. `/tests/test_cpp_policy_contract.py`에 `P-STYLE-001`을 먼저 작성한다. 다음 literal
contract를 검사한다.
- `.clang-format`: `BasedOnStyle: Google`, `IndentWidth: 2`, `ColumnLimit: 80`.
- `.clang-tidy`: C++17-compatible checks와 FESA PascalCase/snake_case identifier rules.
- `Doxyfile`: `INPUT = include src`, tests 제외, `WARN_AS_ERROR = YES`, generated HTML은
source control 밖의 build 경로.
- Root CMake의 optional `fesa_docs` target은 Doxygen가 발견될 때만 등록되고 default
configure에는 Doxygen를 요구하지 않는다.
2. RED에서 설정 파일 부재로 test failure를 확인한다.
3. `/.clang-format`, `/.clang-tidy`, `/Doxyfile`을 추가한다.
4. `/CMakeLists.txt`에 `find_package(Doxygen QUIET)`와 발견 시에만 등록되는
`fesa_docs` custom target을 추가한다. Default build dependency에 넣지 않는다.
5. Generated Doxygen HTML 경로가 ignore되지 않았다면 `/.gitignore`에 정확한 output
directory만 추가한다.
6. Doxygen executable은 실행하지 않는다. 사용자가 문서 생성을 추후 수행하기로 했다.
## Acceptance Criteria
과거 도구 실행·출력 지시는 정리했으며, 현재 검증 방법은 기능 요약을 따른다.
Expected GREEN에는 Doxygen 실행이나 generated HTML이 포함되지 않는다.
## 검증 및 상태 갱신
- RED policy failure와 GREEN pytest/tool version/config/full CTest를 summary에 남긴다.
- 성공 시 현재 Step만 `completed`로 갱신하고 생성한 설정 파일을 summary에 기록한다.
- 환경에 두 LLVM executable이 없으면 `blocked`와 정확한 경로를 기록한다.
- timestamp, retry, commit, advancement는 Executor 소유다.
## 금지사항
- 기존 C++를 format하지 마라. 이유: 기계적 migration은 Step 3–6 소유다.
- Doxygen를 실행하거나 generated HTML을 commit하지 마라. 이유: 사용자 결정으로 생성은 연기됐다.
- Doxygen를 default build 필수 dependency로 만들지 마라. 이유: 현재 blocking gate가 아니다.
- 직접 commit하거나 hook script를 수동 실행하지 마라.