如何禁用错误(警告 66):未使用打开!在沙丘
How to disable Error (warning 66): unused open! in dune
根据 https://github.com/ocaml/ocaml/pull/1110,OCaml 4.08 及更高版本会对未使用的模块打开发出警告,即使它们是使用 open!
打开的。这与使用 open! Foo
确定以下代码在模块 Foo
上下文中的常见做法产生了摩擦(无论是否从 Foo
内部使用任何东西) .此外,由于 dune
默认情况下将所有警告视为致命错误,这将导致默认 dev
配置文件中的 dune 构建失败并出现类似
的错误
$ dune build
File "lib/mylib.ml", line 1, characters 0-10:
1 | open! Core
^^^^^^^^^^
Error (warning 66): unused open! Core.
如何禁用此警告和致命错误?
dune FAQ 解释了如何配置警告,使它们 "non-fatal"(让构建继续)。但是,这仍然会使警告使您的构建输出混乱。对于使用 open! Foo
习惯用法来建立上下文的开发人员来说,这很烦人。最好的解决方案就是有选择地为项目禁用此警告:
- 在项目的根目录下创建一个
dune
文件
添加以下节
(env
(dev
(flags (:standard -w -66))))
此节指示 dune
在 dev
配置文件下构建时将带有 -66
参数的 -w
标志传递给 OCaml 编译器。 man ocamlc
解释这个标志是如何工作的:
-w warning-list
Enable, disable, or mark as fatal the warnings specified by the argument warning-list.
...
-num Disable warning number num.
...
The warning numbers are as follows.
...
66 Unused open! statement.
根据 https://github.com/ocaml/ocaml/pull/1110,OCaml 4.08 及更高版本会对未使用的模块打开发出警告,即使它们是使用 open!
打开的。这与使用 open! Foo
确定以下代码在模块 Foo
上下文中的常见做法产生了摩擦(无论是否从 Foo
内部使用任何东西) .此外,由于 dune
默认情况下将所有警告视为致命错误,这将导致默认 dev
配置文件中的 dune 构建失败并出现类似
$ dune build
File "lib/mylib.ml", line 1, characters 0-10:
1 | open! Core
^^^^^^^^^^
Error (warning 66): unused open! Core.
如何禁用此警告和致命错误?
dune FAQ 解释了如何配置警告,使它们 "non-fatal"(让构建继续)。但是,这仍然会使警告使您的构建输出混乱。对于使用 open! Foo
习惯用法来建立上下文的开发人员来说,这很烦人。最好的解决方案就是有选择地为项目禁用此警告:
- 在项目的根目录下创建一个
dune
文件 添加以下节
(env (dev (flags (:standard -w -66))))
此节指示 dune
在 dev
配置文件下构建时将带有 -66
参数的 -w
标志传递给 OCaml 编译器。 man ocamlc
解释这个标志是如何工作的:
-w warning-list
Enable, disable, or mark as fatal the warnings specified by the argument warning-list.
...
-num Disable warning number num.
...
The warning numbers are as follows.
...
66 Unused open! statement.