【Xcode】外部ライブラリのコメント不備の警告(Warning)を非表示にする

Xcodeで外部ライブラリのSDLを使ってプログラミングをしています。外部ライブラリは便利なのですが、コンパイラによってはコメント内で以下のような警告がでる場合があります。

Documentation Issue

Empty paragraph passed to '\param' command

エラーではないのでそのままでも問題ないのですが、ビルドするごとに毎回出てくるのは邪魔なので非表示にしたいと思います。

Xcodeで外部ライブラリの警告を非表示にする

先に警告が出る原因を見てから、非表示にする方法を説明します。

警告が出る原因

もう1回警告内容を載せておきます。

Documentation Issue

Empty paragraph passed to '\param' command

僕が使っているSDL2のライブラリでは6個の警告が出ていて、全てこれです。

直訳するとこんな感じでしょうか。

文書の問題

空の段落が'\param'コマンドに渡されました

イマイチよく分からないので、実際にエラーが出ているファイルの該当箇所を見てみます。

 

警告マークが付いている「Empty paragraph passed to '\param' command」をクリックすると警告箇所が分かります。

画像の通りここの6箇所ですね。どうやらコメントの書き方に不備があるようです。プログラムに異常がある訳ではありません。

自分が書いたものではないので、このコメント自体はそのままにしておきます。外部ライブラリのドキュメントコメントの警告は珍しいことでは無いようなので非表示にしていきます。

警告を非表示にする方法①

ここまで書いてきましたが、この設定は簡単です。

 

「プロジェクト名」→「Build Settings」→「Documentation Comments」を「No」に変えるだけです!簡単!

 

これでもう1度ビルドすると警告が消えます。

それでも無理な場合は、プロジェクトを1度閉じてもう1回立ち上げてからビルドすると警告が消えると思います。

警告を非表示にする方法②

もう1つは、プログラム内で指定する方法です。Xcodeの設定をあまり弄りたくない人はこちらがオススメです。

 

プログラムのメイン関数の前に以下のコードを書きます。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdocumentation"
#include <header.h>
#pragma clang pop

「header.h」の部分は自分の使用するライブラリに合わせてください。

#pragma clang popは別にヘッダファイルの読み込みの前に書いても問題はないです。

 

僕はインクルードするヘッダファイルは1つのヘッダファイルにまとめていいます。ついでに3行書くだけなのでこちらの方法を採用しています。

プリプロセッサとclang診断による警告抑制

上のようにコードを挿入すれば解決しますが、少しだけコードの解説しておきます。

プリプロセッサ指令 #pragma

ソースプログラムに対する前処理をプリプロセスといい、それを行うプログラムをプリプロセッサと言います。(コンパイラの機能の1つ)

このプリプロセッサに対する指令をディレクティブと言います。何それ?と思うかもしれませんが、実はC言語を勉強している時に出てきていました。

  • ヘッダファイルをインクルードする「#include」
  • マクロを定義する「#define」

といった「#」が付いたものがディレクティブです。

「#pragma」も同じくディレクティブで、次のような機能があります。

ホストマシンやOSに固有の機能をサポートして、ソースコード内にコンパイラ指令を設定できる。

コンパイラごとに使用できる機能が違って、今回のXcodeはclangというコンパイラです。

clang診断

Xcodeではプラグマ(pragma)を使用して、clangに対して指令を出して特定の警告を無効にすることができる。

ということです。なんとなく仕組みは理解できたと思います。

最後にコードの解説をします。

#pragma clang diagnostic push

復元できるように診断を保存する。

 

#pragma clang diagnostic ignored "-Wdocumentation"

ドキュメントの診断メッセージを無視する。

他の警告を非表示にしたい場合は、"-Wdocumentation"の部分を"-W警告名"とすればいいだけです。

 

#pragma clang pop

最後に保存された診断状態を復元する。

普通はヘッダファイルを読み込んだ後に書くようですが、別にその前に書いても警告は消せます。

エラーと警告もプログラミングの勉強

C言語に限らずですがプログラミングをしていると、エラーと警告は付き物です。

特にXcodeの場合は良くも悪くも書いている途中に警告がでる過保護っぷりです笑

ネットや本で調べて自分でなんとかしていくのも勉強です。これからもプログラミングと格闘していきます。皆さんも諦めずに頑張っていきましょう!

コメント

タイトルとURLをコピーしました