3

OCaml コンパイラに未使用の関数に関する警告を報告させる方法はあるのだろうか? 私はグーグルで検索しましたが、この機能について議論されたトピックはあまりありません.

特に、次のプログラムでは、「foo」と「bar」の 2 つの関数が宣言されていますが、「_」関数で「bar」が使用されていません。したがって、OCaml コンパイラは "bar" を未使用の関数として報告する必要があると思います。

let foo x y = x + y

let bar x y z = x + y + z         (* should be reported unused *)

let _ =
  let x = foo 1 2 in
  x
4

2 に答える 2

4

.mliこのモジュールが何をエクスポートするかを示す (空の可能性がある) インターフェイス ファイルを定義する必要があります。barそれ以外の場合は、他のモジュールが使用する関数を定義しているだけです。

(もちろん、警告をオンにしてコンパイルしていることを確認してください)

于 2015-06-17T08:56:47.397 に答える
3

「グローバルな」デッドコード検出器であるhttps://github.com/alainfrisch/dead_code_analyzerをご覧ください。エクスポートされた値のセットを .cmi ファイルから収集し、外部参照のセットを .cmt ファイルから収集するため、使用されていないエクスポートされた値を検出できます。(オプションの引数を分析し、どれが決して渡されないか、または常に渡されないかを報告するロジックもあります。)

于 2015-06-17T21:42:41.957 に答える