Upload
cocoaheads-france
View
6.595
Download
1
Embed Size (px)
Citation preview
LEVERAGING XCODE
CODE COVERAGESIMONE CIVETTA -
THURSDAY, 8TH OCTOBER
ENTRETEMPS...
CODE COVERAGE
WHAT IS CODE COVERAGE?
TESTING
METRIC THAT MEASURES THE
VALUEOF YOUR
TESTS
CODE COVERAGE DETECTS
> Which code is executing when we're running the tests> Which code is untested
HOW DOES IT WORK?> The information is gathered in two steps
1. compile time 2. runtime
> Tools count each expression that is executed
CODE COVERAGE ON IOS
CODE COVERAGE ON IOSUNTIL LAST MONTH
OBJECTIVE-C
SWIFT
HOW IT WORKED
1. LLVM CREATES ANNOTATION FILES.gcno
gcc -ftest-coverage
2. LLVM CREATES DATA FILES.gcda
gcc -fprofile-arcs
HOW TO ENABLE IN XCODE
HOW TO ENABLEVIA COMMAND LINE
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES xcodebuild [...] test
TOOLS
TOOLS
> Coverstory> gcovr
> lcov> Slather
SLATHER
Exports to: - HTML
- Gutter JSON- Cobertura XML
github.com/venmo/Slather
BUT, ALSO
SWIFTCOV
swiftcovgithub.com/realm/SwiftCov
> Supports gcov format> Uses breakpoints to gather coverage data
CODE COVERAGE ON IOS
CODE COVERAGE ON IOSSINCE LAST MONTH
OBJECTIVE-C
SWIFT
A NEW FORMAT> gcov
> profdata
XCODE GENERATES profdata FILES FOR
> Swift> ...and Objective-C
HOW TO ENABLE IN XCODE
HOW TO ENABLEVIA COMMAND LINE
xcodebuild [...] test -enableCodeCoverage YES
xcodebuild -scheme MoDevByProject -destination "name=iPhone 6,OS=latest" -enableCodeCoverage YES test
EXPLOITING THE DATA> llvm-cov
> llvm-cov show
HOW TO USE LLVM-COV$XCODE_PATH/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-cov show -instr-profile MY_PROJECT_PROFDATA MY_PROJECT_BINARY_FILE
TOOLS
TOOLS
> Slather> Xcode Server
XCODE SERVER
SUMMING UP
DOESN'T TELL YOU IF YOUR CODE IS
BAD...
DOESN'T TELL YOU IF YOUR CODE IS
BADBUT CAN HELP WRITING
BETTER CODE
YOU'RE JUSTMINUTES AWAY
FROM COLLECTINGCODE COVERAGE
INFO FOR SWIFTSTART SOON!
THANK YOU
Simone Civetta@viteinfinite
XEBICON