Couverture de code
-
Upload
cocoaheads-france -
Category
Software
-
view
6.595 -
download
1
Transcript of Couverture de code
![Page 1: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/1.jpg)
LEVERAGING XCODE
CODE COVERAGESIMONE CIVETTA -
THURSDAY, 8TH OCTOBER
![Page 2: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/2.jpg)
![Page 3: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/3.jpg)
![Page 4: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/4.jpg)
ENTRETEMPS...
![Page 5: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/5.jpg)
![Page 6: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/6.jpg)
![Page 7: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/7.jpg)
![Page 8: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/8.jpg)
![Page 9: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/9.jpg)
![Page 10: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/10.jpg)
CODE COVERAGE
![Page 11: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/11.jpg)
WHAT IS CODE COVERAGE?
![Page 12: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/12.jpg)
TESTING
![Page 13: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/13.jpg)
METRIC THAT MEASURES THE
VALUEOF YOUR
TESTS
![Page 14: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/14.jpg)
CODE COVERAGE DETECTS
> Which code is executing when we're running the tests> Which code is untested
![Page 15: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/15.jpg)
HOW DOES IT WORK?> The information is gathered in two steps
1. compile time 2. runtime
> Tools count each expression that is executed
![Page 16: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/16.jpg)
CODE COVERAGE ON IOS
![Page 17: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/17.jpg)
CODE COVERAGE ON IOSUNTIL LAST MONTH
![Page 18: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/18.jpg)
![Page 19: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/19.jpg)
OBJECTIVE-C
![Page 20: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/20.jpg)
SWIFT
![Page 21: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/21.jpg)
![Page 22: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/22.jpg)
![Page 23: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/23.jpg)
HOW IT WORKED
![Page 24: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/24.jpg)
1. LLVM CREATES ANNOTATION FILES.gcno
gcc -ftest-coverage
![Page 25: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/25.jpg)
2. LLVM CREATES DATA FILES.gcda
gcc -fprofile-arcs
![Page 26: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/26.jpg)
HOW TO ENABLE IN XCODE
![Page 27: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/27.jpg)
![Page 28: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/28.jpg)
![Page 29: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/29.jpg)
HOW TO ENABLEVIA COMMAND LINE
![Page 30: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/30.jpg)
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES xcodebuild [...] test
![Page 31: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/31.jpg)
TOOLS
![Page 32: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/32.jpg)
TOOLS
> Coverstory> gcovr
> lcov> Slather
![Page 33: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/33.jpg)
SLATHER
Exports to: - HTML
- Gutter JSON- Cobertura XML
github.com/venmo/Slather
![Page 34: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/34.jpg)
BUT, ALSO
![Page 35: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/35.jpg)
SWIFTCOV
swiftcovgithub.com/realm/SwiftCov
> Supports gcov format> Uses breakpoints to gather coverage data
![Page 36: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/36.jpg)
![Page 37: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/37.jpg)
CODE COVERAGE ON IOS
![Page 38: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/38.jpg)
CODE COVERAGE ON IOSSINCE LAST MONTH
![Page 39: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/39.jpg)
![Page 40: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/40.jpg)
OBJECTIVE-C
![Page 41: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/41.jpg)
SWIFT
![Page 42: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/42.jpg)
A NEW FORMAT> gcov
> profdata
![Page 43: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/43.jpg)
XCODE GENERATES profdata FILES FOR
> Swift> ...and Objective-C
![Page 44: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/44.jpg)
HOW TO ENABLE IN XCODE
![Page 45: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/45.jpg)
![Page 46: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/46.jpg)
![Page 47: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/47.jpg)
![Page 48: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/48.jpg)
HOW TO ENABLEVIA COMMAND LINE
![Page 49: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/49.jpg)
xcodebuild [...] test -enableCodeCoverage YES
![Page 50: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/50.jpg)
xcodebuild -scheme MoDevByProject -destination "name=iPhone 6,OS=latest" -enableCodeCoverage YES test
![Page 51: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/51.jpg)
EXPLOITING THE DATA> llvm-cov
> llvm-cov show
![Page 52: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/52.jpg)
HOW TO USE LLVM-COV$XCODE_PATH/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-cov show -instr-profile MY_PROJECT_PROFDATA MY_PROJECT_BINARY_FILE
![Page 53: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/53.jpg)
![Page 54: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/54.jpg)
TOOLS
![Page 55: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/55.jpg)
TOOLS
> Slather> Xcode Server
![Page 57: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/57.jpg)
XCODE SERVER
![Page 58: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/58.jpg)
![Page 59: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/59.jpg)
![Page 60: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/60.jpg)
SUMMING UP
![Page 61: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/61.jpg)
DOESN'T TELL YOU IF YOUR CODE IS
BAD...
![Page 62: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/62.jpg)
![Page 63: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/63.jpg)
DOESN'T TELL YOU IF YOUR CODE IS
BADBUT CAN HELP WRITING
BETTER CODE
![Page 64: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/64.jpg)
YOU'RE JUSTMINUTES AWAY
FROM COLLECTINGCODE COVERAGE
INFO FOR SWIFTSTART SOON!
![Page 65: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/65.jpg)
THANK YOU
![Page 66: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/66.jpg)
Simone Civetta@viteinfinite
![Page 67: Couverture de code](https://reader034.fdocuments.in/reader034/viewer/2022050613/58f254331a28abc00d8b4573/html5/thumbnails/67.jpg)
XEBICON