2016-08-17 2 views
0

우리는 Xcode 7 및 8 (베타)을 사용하고 있습니다. Apple은 XCode 7에서 GCOV 코드 적용 범위를 더 이상 사용하지 않으며 XCode 8에서 완전히 제거했습니다. 따라서 우리는 profdata 파일을 내보내려고합니다.iOS 수동 테스트에 대한 코드 적용 범위 (profdata)를 어떻게 만들 수 있습니까?

우리는 수동 작업을 수행하는 동안 코드 커버리지 파일을 생성 할 수 (profdata/profraw을하지만 gcno 또는 GDCA에하지 않음)해야하고, 여기에 내가 무엇을 시도했다입니다 :

GTM_CONFIGURATION_OTHER_CFLAGS = -fprofile-instr-generate -fcoverage-mapping 

뿐만 아니라

//If enabled, passes flag -fprofile-instr-generate and -fprofile-instr-generate 
CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING = YES 

나는 XCTests에서 실행되는 코드 커버리지를 얻는 방법을 알고 있지만,이 경우 매뉴얼 실행 중에 코드 커버리지를 생성 할 수 있어야합니다.

답변

1

코드에서 __llvm_profile_write_file (void)을 호출하여이 작업을 수행 할 수 있다고 믿지만 시도하지는 못했습니다. 당신은 그것을 선언해야하고 필요할 때 전화를 울릴 수있는 방법을 찾아야합니다. 주목할만한 점은 결과 파일이 전체 실행에서 적용 범위를 계속 집계하고 다른 실행 단계의 적용 범위를 비교하려는 경우 생성 된 파일의 복사본을 만들 수 있다는 것입니다.

내가 여기에 대한 세부 사항의 일부를 발견했다. http://clang.llvm.org/docs/SourceBasedCodeCoverage.html

"앞으로-선언 INT의 __llvm_profile_write_file (무효) 및 프로파일을 작성하는 호출이 성공하면이 함수는 0을 반환, 0이 아닌 이 함수를 여러 번 호출하면 기존의 디스크상의 원시 프로파일에 프로파일 데이터가 추가됩니다. "

+0

이 함수는 무엇을 생성합니까? "llvm-profdata merge -o"를 사용하여 병합해야하는 프로파일 파일 또는 profdata 파일? – LiohAu

+0

@LiohAu : 병합해야 할 프로파일 파일. – Arcank

-1

과 쌍을 이루는 Obj C 프로젝트의 경우 int __llvm_profile_write_file(void)처럼 보입니다. 그러나 프로젝트에 신속한 파일 하나를 추가하면 신속하게 .. Swift does not support profile guided optimization.이라는 불만이 제기됩니다. 해결 방법이 있습니까?