프로젝트 소개
AutoFFF는 Python 기반 유틸리티로, C API 헤더 파일을 자동으로 구문 분석하여 FFF(Fake Functions Framework)용 가짜 함수 정의가 포함된 테스트 헤더를 생성한다. 임베디드 C 단위 테스트의 일반적인 문제점을 해결하는 것을 목표로 한다.
중국은 이 도구가 해결하는 핵심 문제는 호스트 머신에서 임베디드 C 코드를 테스트하는 것이 종종 불가능하다는 점이다. 호스트 아키텍처가 대상 플랫폼과 다르고, 임베디드 환경은 일반적으로 동적 링크를 지원하지 않으며, C에는 테스트 중인 코드를 런타임에 조작할 수 있는 내장된 런타임 리플렉션 기능이 없기 때문이다. 대상 플랫폼 API를 가짜 구현으로 링크하여 테스트 중인 코드를 해결할 수 있지만, API 함수에 대한 수동 가짜 정의를 작성하는 것은 지루하고 노동 집약적이며 오류가 발생하기 쉽다. 또한 원래 API가 진화함에 따라 수동으로 유지 관리되는 테스트 헤더는 쉽게 부패한다.
AutoFFF는 C API 헤더 파일을 구문 분석하여 즉시 사용 가능한 FFF 호환 가짜 정의가 포함된 테스트 헤더를 자동으로 생성함으로써 이 과정을 자동화한다. "래핑(wrapping)" 가짜 전략을 따르는데, 생성된 테스트 헤더는 원래 API 헤더를 포함하여 모든 타입, 변수, 함수 선언을 상속받고 필요한 가짜 정의만 추가한다. 이 접근 방식은 모든 API 요소를 수동으로 재작성해야 하는 대안 "금지(banning)" 전략보다 훨씬 유지보수가 잘된다.
도구는 헤더 파일 내부에 직접 정의된 함수를 위해 내장된 작업을 포함한다. 이러한 함수들은 일반적으로 가짜 정의 시 재정의 오류를 발생시키지만, 이 작업은 매크로 재라우팅을 사용하여 테스트 파일에서 테스트 헤더가 코드보다 먼저 포함되는 한 원본 인-헤더 함수로의 호출을 생성된 가짜 함수로 리다이렉트한다.
AutoFFF는 명령줄 옵션을 통해 Strict include 정책을 가진 라이브러리(예: FreeRTOS 또는 CMSIS)와 함께 작동할 수 있으며, 구문 분석 중 필요한 헤더를 주입하거나 전처리자 매크로를 정의할 수 있다. 여러 통합 옵션을 제공한다. 독립 실행형 명령줄 모듈로 실행하거나, 사용자 정의 스크립트에서 Python 패키지로 사용하거나, 제공되는 예제 Makefile을 통해 Make 같은 빌드 시스템에 통합할 수 있다.
두 가지 생성기 모드를 제공한다. BareFakeGenerator는 커스텀 처리를 추가하려는 사용자를 위해 헤더 뼈대 없이 RAW FFF 매크로 정의만 출력하고, SimpleFakeGenerator는 포함 가드와 필수 포함문을 갖춘 최소한의 실행 가능한 테스트 헤더를 즉시 출력한다.
AutoFFF는 MIT 라이선스에 따라 배포되며 PyPI를 통해 사용할 수 있다. C 구문 분석을 위해 pycparser 프로젝트의 fake_libc_include 헤더 컬렉션이 필요하며, 이는 pip 릴리스에 포함되어 있지 않아 pycparser 저장소에서 별도로 얻어야 한다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.