14 votes

Traiter *certains* avertissements comme des erreurs en Swift ?

Imagine I marque la méthode suivante comme étant obsolète dans Swift :

@available(*, deprecated=1.0)
func myFunc() { 
    // ...
}

Et je traiter les avertissements comme des erreurs en Swift en fixant OTHER_SWIFT_FLAGS="-warnings-as-errors" .

Comment puis-je faire en sorte qu'il affiche ces avis de dépréciation comme des avertissements, tout en continuant à traiter le reste des avertissements comme des erreurs ?


Il semble que Le GCC avait une bonne solution à ce problème :

-Werror // treat all warnings as errors
-Wno-error=<warning> // don't treat <warning> as error (e.g. -Wno-error=switch)
-Werror=<warning> // treat <warning> as error

Ainsi, s'il s'agissait d'Objective-C, je pourrais simplement utiliser -Werror -Wno-error=deprecated-declarations et obtenir exactement ce que je veux.

Quel est l'équivalent pour Swift ?


J'ai essayé d'ajouter -Wno-error=deprecated-declarations à la OTHER_SWIFT_FLAGS mais il semble qu'il ne soit pas destiné à Swift, donc il ne fonctionne pas.

4voto

Ole Begemann Points 85798

Ce n'est pas possible. Depuis Swift 4, le compilateur Swift ne dispose pas de commutateurs permettant d'activer/désactiver certains avertissements ou de transformer certains avertissements en erreurs.

Les développeurs de Swift ont exprimé leur réticence à ajouter une litanie de drapeaux de compilateur à plusieurs reprises sur la liste de diffusion swift-evolution. Le raisonnement est qu'ils veulent garder un seul "dialecte" de Swift afin que tous les développeurs travaillent avec les mêmes caractéristiques de langage, etc.

La question de savoir si cela devrait s'étendre à quelque chose comme des drapeaux d'avertissement particuliers est bien sûr discutable, mais c'est la position officielle actuelle. Il est tout à fait possible que ces règles soient quelque peu assouplies à l'avenir, mais je ne parierais pas là-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X