我试图让 jenkins 在 erlang 代码上运行透析器,但我遇到了问题。当我们将其引入现有项目时,有许多我们不想标记的现有错误,我们在文件中有这些错误 透析器-忽略-警告
我的 makefile 中有这个,但我真正想要做的是,如果 grep 返回一个空文档,则返回一个值,如果有新错误,则返回一个值。但是我的剧本傅就是达不到
(DEPS_PLT): compile
@echo Building local plt at $(DEPS_PLT)
@echo
@(echo "Using Dialyzer in `which dialyzer`"; dialyzer --output_plt $(DEPS_PLT) --build_plt --apps $(DEPS))
dialyzer: compile $(DEPS_PLT)
@(echo "Using Dialyzer in `which dialyzer`"; dialyzer --fullpath --plt $(DEPS_PLT) -Wrace_conditions -r ./ebin)|
fgrep -v -f ./dialyzer-ignore-warnings
也许是这样的:
dialyzer: compile $(DEPS_PLT)
@echo "Using Dialyzer in `which dialyzer`"
@(dialyzer --fullpath --plt $(DEPS_PLT) -Wrace_conditions -r ./ebin)|
fgrep -v -f ./dialyzer-ignore-warnings; test "$$?" != 0
也就是说,确保fgrep
的退出代码不为零。
这是来自 rebar 存储库的类似解决方案:
生成文件包含:
dialyzer: dialyzer_warnings
@diff -U0 dialyzer_reference dialyzer_warnings
dialyzer_warnings:
-@dialyzer -q -nn -n ebin -Wunmatched_returns -Werror_handling
-Wrace_conditions > dialyzer_warnings
参考文件包含:
rebar_eunit.erl:388: Call to missing or unexported function eunit_test:function_wrapper/2
rebar_utils.erl:163: Call to missing or unexported function escript:foldl/3