RubySorbet正在自动更正一行,即使我已经将它 Package 在T.unsafe()中

6mw9ycah  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(88)

我的test_helper.rb中有以下代码

require 'simplecov'
class SimpleCov::Formatter::MergedFormatter
  def format(result)
    simplecov = T.unsafe(SimpleCov::Formatter::HTMLFormatter).new
    T.unsafe(simplecov.format(result))
  end
end

字符串
这个gem很老了,没有.rbi文件。我不明白的是www.example.com上的文档https://sorbet.org/docs/error-reference#5002
它来自一个宝石吗?Sorbet不会查看gem的源代码。相反,这个gem必须有一个 *.rbi文件。尝试查找与此gem对应的 *.rbi,并在其中搜索常量。
但是这个gem没有任何rbi文件。
Sorbet将SimpleCov::Formatter::HTMLFormatter自动更正为RuboCop::Formatter::HTMLFormatter
这个错误:无法解析常量HTMLFormatter https://srb.help/5002
但对象是完全正常的,而且我已经把它 Package 在T.unsafe(...)中,它仍然自动校正。
预期结果:我怎么能逃脱这个舱口?(我也试过在文件顶部设置# typed: false,但冰糕仍然在这一行抱怨)

wtzytmuj

wtzytmuj1#

采用冰糕的最低门槛是所有常量(即类/模块)来解决。在这种情况下,Sorbet不知道常数SimpleCov::Formatter::HTMLFormatter,所以它不能处理它,不管T.unsafe是否存在。
我希望你使用建议的基于木薯的工作流程来生成你的RBI文件,在这种情况下,应该为你生成simplecov的RBI文件。您不需要从某处为gem找到.rbi文件,Tapioca将从gem本身生成它。
如果您使用的是不同的工作流,您可以轻松地创建一个RBI文件(最好在sorbet/rbi文件夹下),该文件定义了常量和任何方法,您需要在它上解锁。类似下面的内容应该可以很好地用于您的示例:

class SimpleCov::Formatter::HTMLFormatter
  def format(result); end
end

字符串

相关问题