Swift tem um equivalente a #warning? É simplesmente usado para mostrar um aviso na própria GUI do Xcode
Também estou interessado em saber se há um #error equivalente.
A Apple disse que a marca #pragma será lançada em breve, pode ser o mesmo com isso.
//WARNING
exatamente como #pragma,//MARK
mas atualmente nenhum deles é adicionado ao XCode beta.Respostas:
No futuro, os desenvolvedores da Apple poderão muito bem lançar um
//WARNING:
ponto de referência ou fornecer a funcionalidade para outro ponto de referência nomeado.Para invocar essa funcionalidade com o Swift no Xcode hoje, você pode fazer o seguinte, conforme descrito por Ben Dodson e Jeffrey Sambells:
Adicione um novo script de execução à guia de fases de construção do seu destino (configurações do projeto> fases de construção> '+'> nova fase de script de execução) e cole o seguinte código na caixa vazia:
Isto irá forçar Xcode para sinalizar um aviso em tempo de compilação para qualquer
// TODO:
ou// FIXME:
comentários que você marcação.Como alternativa, você pode alterar o TAGS com uma tag personalizada:
TAGS="WARNING:"
no código acima, que manteria o comportamento padrão do TODO & FIXME e geraria um aviso de tempo de compilação em qualquer comentário marcado como// WARNING:
.http://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/ http://jeffreysambells.com/2013/01/31/generate-xcode- avisos-de-todo-comentários
EDIT: 18/11/14
@ david-h levantou um bom argumento em seu comentário. Se você deseja emitir apenas esses avisos em uma configuração de compilação específica, faça o seguinte:
Como alternativa, você pode usar "Release" em vez de "Debug" para direcionar apenas as compilações de produção.
fonte
-type f
opção aofind
comando para excluir diretórios dos resultados encontrados. Isso não deve ser um problema para a maioria das pessoas, mas qualquer pessoa que use oR.swift
pod terá o mesmo erro que eu, porqueR.swift
é um diretórioEditar
A partir do Swift 4.2, o suporte no nível do idioma está disponível para avisos e erros de compilação.
Resposta original
Rápido, sujo e muito elegante, tudo ao mesmo tempo.
Lança um aviso de que 'FIX_ME__🛠🛠🛠' nunca foi usado.
Você pode adicionar emoticons ao nome da variável, se quiser ... Costumo usar 😱 e 🛠, para algo que realmente precisa de conserto que eu consideraria 💩. Você pode substituir
FIX_ME__
com o que quiser:ALGORITHM_NEEDS_REVIEW
,BugID_148
ouJOHNNY_YOU_BROKE_THIS
são alguns exemplos.Rápido, sem configuração, conciso e emoticons podem até adicionar humor / personalidade ao seu código. Às vezes, a solução mais simples é a melhor solução.
fonte
let fixMeMakeMeNonOptional: Int
forneceImmutable value fixMeMakeMeNonOptional was never used; consider replacing with _ or removing it
no navegador de problemas. Todas as outras soluções oferecem muito mais mensagens de erro genéricas.Atualização pós-WWDC 2018
A partir do Xcode 10 e do Swift 4.2, você poderá usar
#warning
novamente da seguinte forma:Isso aparecerá como um aviso no Xcode, conforme o esperado!
Isso funciona mesmo em combinação com
#if
verificações, por exemplo, o seguinte mostrará apenas um aviso se sua plataforma de destino for iOS:Também há
#error
se você quiser que sua compilação falhe.Resposta Pré WWDC 2018
No Swift usando o XCode 6, você pode usar diferentes tipos de pontos de referência para diferentes fins. Aqui está o que a Apple diz sobre isso:
Portanto, para definir um aviso com uma descrição, você usaria algo como isto:
//TODO: Clean up this code after testing
Se você deseja apenas definir uma marca curta (supondo que você se lembre do que fazer), use o seguinte:
//FIXME
EDIT: No entanto, esses marcos aparecem apenas na barra de salto do XCode, que pode não ser o que você deseja e o que seria de esperar - especialmente das marcas // TODO: e // FIXME. Arquivei um radar sobre isso: # 17776817. Espero que a Apple adicione isso nas próximas versões do XCode 6.
SOLUÇÃO (EDIÇÃO 2): Se você instalar o Swift Linter via Homebrew (executado
brew install swiftlint
após abrew update
) e adicionar o script de construção sugerido ao seu projeto, verá todos os seus marcosTODO
eFIXME
como avisos no Xcode. O SwiftLint ainda adiciona mais alguns avisos / erros que você pode configurar para atender às suas necessidades - só posso recomendar o uso do SwiftLint e resolve esse problema da melhor maneira possível!fonte
Ainda não foi adicionado pela equipe da Apple ainda. O que eu decidi fazer é provavelmente uma trapaça, mas pelo menos me mostra uma mensagem FIXME. Então, o que eu faço é declarar a função FIXME () no arquivo Swift:
e quando eu o chamo de qualquer outra função, ele mostra um aviso, por exemplo
Para uso no Swift 2
fonte
Veja este artigo .
Você pode escrever seu próprio script que destacará todas as tags.
Isso resulta em:
fonte
egrep --directories='skip'
para ignorar diretórios com nomes como Device.swiftComo alternativa, se você quiser que algo apareça no painel de avisos, escreva algo como:
Você não pode realmente exibir nenhum texto, mas pelo menos é um marcador mais visível, especialmente se você tende a tratar a maioria dos avisos como erros.
fonte
I proposto e implementado esse recurso, e será lançado com Swift 4.2. Você pode usá-lo agora fazendo o download da
master
cadeia de ferramentas em swift.org .fonte
Um CocoaPod que eu estava usando tinha
.swift
em seu nome; portanto, um diretório foi retornado, o que causou a falha do script por Kyle. A adição-type f
aofind
comando corrige esse problema, apenas visualizando os arquivos correspondentes, em*.swift
vez de também retornar diretórios correspondentes ao padrão.Código final que eu usei:
fonte
Se você não deseja ajustar sua configuração de compilação, outro remédio caseiro simples é colocar um espaço reservado de editor na frente do comentário:
Você recebe um erro "Espaço reservado do editor no arquivo de origem" ao criar, mas, diferentemente da solução da Jordan, não há nenhum erro ao vivo para incomodá-lo ao digitar:
fonte
Depois de muita pesquisa e desejo, estou convencido de que não existe tal entidade. Ainda estou esperançoso com as notas de versão mais recentes do Xcode mencionando a falta contínua de um mecanismo de marca #pragma, #warning e #error também podem estar chegando.
Como um aparte, eu recomendo arquivar um Radar na Apple em bugreport.apple.com para adicionar essa funcionalidade (você pode enganar 17702491).
fonte
Escrevemos uma ferramenta configurável que permite colocar avisos e erros no Xcode Issue Navigator com base na tag de comentário e na configuração da compilação: https://github.com/doubleencore/XcodeIssueGenerator
Instale-o:
Em seguida, coloque uma linha em uma fase de criação de script de execução:
Aqui está um artigo descrevendo como usamos.
fonte
Eu posso estar atrasado para a parte com o Xcode 10 suportando erros e avisos, mas simplesmente colocando uma String:
produzirá um aviso:
String literal is unused
com o preenchimento automático ainda funcionando e o projeto ainda compilando.fonte
Minha resposta não é suficiente para satisfazer sua pergunta, mas se você quiser algo fácil, pode usar este plug - in de alcatraz, que funciona em todos os projetos sem qualquer preparação adicional. Faça o seguinte:
Ele também tem preferências para adicionar novas tags
fonte
Vantagem desse snippet - ele não mostra avisos dos Pods:
Como instalar:
fonte