Как сгенерировать файл .gcov из llvm-cov?
Я создал проект на Xcode 7, который генерирует данные покрытия кода.
Внутри своей папки DerivedData я могу запустить llvm-cov show
:
/usr/local/opt/llvm/bin/llvm-cov show -instr-profile Build/Intermediates/CodeCoverage/testetestes/Coverage.profdata Build/Intermediates/CodeCoverage/testetestes/Products/Debug-iphonesimulator/testetestes.framework/testetestes
Это приведет к созданию следующего вида:
/Users/marcelofabri/Desktop/testetestes/testetestes/Example.swift:
| 1|//
| 2|// Example.swift
| 3|// testetestes
| 4|//
| 5|// Created by Marcelo Fabri on 09/06/15.
| 6|// Copyright © 2015 Marcelo Fabri. All rights reserved.
| 7|//
| 8|
| 9|import UIKit
| 10|
| 11|class Example: NSObject {
1| 12| func testando() {
1| 13| if let url = NSURL(string: "dasdas") {
1| 14| print("ae \(url)")
0| 15| } else {
0| 16| print("oi")
0| 17| }
1| 18| }
| 19|}
/Users/marcelofabri/Desktop/testetestes/testetestes/OutraClasse.swift:
| 1|//
| 2|// OutraClasse.swift
| 3|// testetestes
| 4|//
| 5|// Created by Marcelo Fabri on 18/06/15.
| 6|// Copyright © 2015 Marcelo Fabri. All rights reserved.
| 7|//
| 8|
| 9|import UIKit
| 10|
| 11|class OutraClasse: NSObject {
| 12|
1| 13| func outroTestando() {
1| 14| if let numero = Int("123") {
1| 15| print("ae \(numero)")
0| 16| } else {
0| 17| print("oi")
0| 18| }
1| 19| }
| 20|
| 21|}
Однако я хотел бы получить файлы .gcov
, так как это то, что используют большинство инструментов. Есть ли способ сделать это без разбора вывода и создания файла .gcov
вручную?
Ответы
Ответ 1
Согласно Apple, gcov не входит в поддержку поддержки Xcode 7. Gcov был gcc наследием, которое оставалось вокруг до появления замены. По-видимому, они отказались от поддержки формата файла gcov в пользу нового промежуточного формата - profdata. Я самостоятельно занимался исследованиями и не нашел инструментов, которые конвертируют данные profdata в gcov, но есть Slather from Venom. Slather может генерировать отчеты о покрытиях в Gutter JSON, Cobertura XML, HTML и обычном тесте. Он также может обеспечить интеграцию с популярным сервисом, таким как Coveralls. В настоящее время он работает только с gcov, но у них есть проблема открытая и PR-запрос, ожидающий поддержки fordata. Они обычно двигаются быстро, поэтому, скорее всего, они скоро будут объединены в мастера.
Также, если вы решите написать свой собственный инструмент, есть несколько подходов, которые вы можете рассмотреть для просмотра:
- Преобразование вывода обычного текста из llvm-cov show
- Преобразование двоичного формата profdata, следуя документации формата
- Помогите ребятам Slather внедрить кросс-покрытие из своей модели обратно в gcov, как только они сольются с поддержкой profdatali >