Подавить предупреждения от зависимостей с помощью Swift Package Manager

Предполагая, что у меня есть Package.swift, как показано ниже, а SomePackage из зависимостей выдает предупреждения во время swift build.

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "my-app",
    dependencies: [
        .package(url: "https://some-package.git", .upToNextMajor(from: "1.0"))
    ],
    targets: [
        .target(name: "Run", dependencies: ["SomePackage"]
    ]
)

Как я могу подавить эти предупреждения от зависимостей, но сохранить те, которые исходят от моего кода?


person Dannie P    schedule 16.11.2017    source источник


Ответы (4)


Я использую собственный скрипт, основанный на инструменте CocoaPods xcodeproj, который я запускаю после создания моего проекта Xcode. См.: https://gist.github.com/siemensikkema/57ef1ce3340e32b72dc59e44bc37b477.

Я настраиваю его, чтобы делать исключения для фреймворков, которые генерируют предупреждения, которые мне не нужны (в моем случае при работе с Vapor 2).

person siemensikkema    schedule 29.05.2018
comment
Это отличный обходной путь для пара 2, большое спасибо! - person Dannie P; 26.07.2018

Если вы используете файл проекта Xcode 10:

  1. Щелкните файл проекта в Xcode
  2. Выберите цель вашей зависимости
  3. Перейти к настройкам сборки
  4. Найдите Swift Compiler — Политики предупреждений.
  5. Установите соответствующие флаги Suppress Warnings.
person ekreloff    schedule 25.08.2018
comment
На мой взгляд, этот способ самый правильный и простой. - person João Vitor; 22.09.2020
comment
Вопрос в том, как подавить предупреждения о зависимостях. Таким образом, ответ заключается не в подавлении всех предупреждений. - person William Grand; 21.10.2020

В Swift Tools версии 5 вы можете определить флаги компилятора в файле пакета (см. https://docs.swift.org/package-manager/PackageDescription/PackageDescription.html#swiftsetting). Вот пример для Package.swift, который подавляет предупреждения компилятора во время сборки:

// swift-tools-version:5.0

import PackageDescription

let package = Package(
    name: "Antlr4",
    products: [
        .library(
            name: "Antlr4",
            targets: ["Antlr4"]),
    ],
    targets: [
        .target(
            name: "Antlr4",
            dependencies: [],
            swiftSettings: [
                .unsafeFlags(["-suppress-warnings"]),
            ]),
        .testTarget(
            name: "Antlr4Tests",
            dependencies: ["Antlr4"]),
    ]
)

Чтобы подавить предупреждения только во внешнем коде, вы должны разделить код на два пакета.

person clemens    schedule 15.11.2020

Я не знаю, как подавить только предупреждения о зависимостях, но можно подавить все предупреждения во время сборки, передав эту опцию: -Xswiftc -suppress-warnings. Вызов будет выглядеть

swift build -Xswiftc -suppress-warnings
person Anton K    schedule 15.12.2017
comment
Частичное решение, например, либо получить все предупреждения, либо не получить ни одного. Спасибо. - person Dannie P; 16.12.2017
comment
Вопрос в том, как подавить предупреждения о зависимостях. Таким образом, ответ заключается не в подавлении всех предупреждений. - person William Grand; 21.10.2020