问题标签 [scalafix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scalameta 的语义 API
在Scalameta 的教程中,它指出语义 API 可用于名称解析 ( println
=> _root_.scala.Predef.println
)。常见问题解答“如何使用语义 API?” scalafix的链接,但我找不到教程或具体示例。所以我还是不清楚。有人可以指出一些具体的例子或教程吗?
谢谢!
scala - 从 Scala 项目中排除特定的隐式
如何防止在我的 scala 代码中使用特定的隐式?
例如,我最近被https://github.com/scala/scala/blob/68bad81726d15d03a843dc476d52cbbaf52fb168/src/library/scala/io/Codec.scala#L76Codec
提供的默认设置所困扰。有没有办法确保任何需要 an 的代码永远不会使用由 提供的代码?或者,是否可以阻止所有隐式编解码器?implicit codec: Codec
fallbackSystemCodec
这是使用scalafix应该可行的吗?
scala - ScalaMeta、ScalaFix 和 SemanticDB 之间的关系
我有以下信息:
Scalameta:能够从源文件生成 AST
SemanticDB:包含来自已解析源文件的符号信息ScalaFix:基于 ScalaMeta 和 SemanticDB,因此它具有访问符号信息和遍历 AST 的能力。
使用 ScalaMeta 加载源文件非常简单,如下所示:
从上面的代码片段可以看出,ScalaMeta 将源文件解析为 type Source
。
现在考虑下面的代码片段,其中 ScalaFix 使用类型树SemanticDocument
:
检查上面的两个代码片段表明 ScalaMeta 可以将 Scala 源解析为 type Source
。ScalaFix 似乎将其解析为implicit SemanticDocument
. SemanticDocument
has 字段由 ScalaMeta 实现,tree
它生成一个可遍历的 AST 数据结构,就像将源文件解析为 type 所产生的一样Source
。这显示了 ScalaMeta 和 ScalaFix 之间的关系。但是,我担心的是我需要加载 Scala 源代码并在其上使用 ScalaFix 来访问symbol.info
,但ScalaFix
文档没有显示如何执行此操作。
当我尝试SemanticDocument
在第一个代码片段中加载源文件时,而不是Source
:
我得到一个错误no parameters found for parameter parse in parse[SemanticDocument]
。另请注意,尝试symbol.info
在第一个代码片段中使用也会产生有关隐式类型的错误。第二个代码片段不是这种情况,因为加载的doc
参数是implicit parameter of type SemanticDocument
.
那么 ScalaFix 是如何加载源文件的SemanticDocument
呢?
scala - 使用 ScalaFix 从 Scala 源文件中获取 SemanticDocument
将 Scala 源文件解析为SemanticDocument
using的步骤是什么ScalaFix
?
scala - 如何将一个或多个 SemanticRules 与 scalafix 一起使用,类似于 scalameta 的 Transformer?
在教程https://scalacenter.github.io/scalafix/docs/developers/tutorial.html中,我看到了如何SemanticRule
为 scalafix 实现 a。我想直接在我从磁盘读取的 Scala 文件的源代码中调用它并转换文件。
在 scalameta 中,我可以执行以下操作:
我想对 scalafix 做同样的事情,但使用SemanticRule
. 如果我读到这个:https :
//scalacenter.github.io/scalafix/docs/developers/tutorial.html#run-the-rule-from-source-code 它只向我展示了如何使用文件启动 scalafix 程序Scala 规则文件的路径,但这不是我想要的。
scala - scala中基于包的自动修复目录结构
我有一个文件src/main/scala/foo.scala
需要在 package 内bar
。理想情况下,文件应该在里面src/main/scala/bar/foo.scala
。
如何在整个项目中自动修复此问题,以使文件夹结构与包结构匹配?
是否有任何 SBT 插件等可以帮助我解决此问题?
scala - 有没有办法防止使用依赖项提供的特定功能?
我的应用程序对库 A 有编译依赖项。我知道这个库中有一个特定的函数会导致性能问题。但它并没有被弃用,如果你没有这些先验信息,你会认为使用它是安全的。我正在寻找一种方法来以某种方式弃用此函数或阻止它被直接调用。
是否可以通过静态分析工具或内置编译器标志来实现这一点?
scala - Scalafix:解析对象应用方法
我有一个定义了一些应用方法的对象,然后使用它
使用 scalafix/scalameta 时,我无法找到获取实际apply
方法句柄的方法(在我的情况下,我正在尝试检查参数名称和类型以查找 scalafix 规则)
当我匹配并打印解析的 SymbolInformation 时,我得到了对该对象的引用。所以这
印刷
但我希望它能够解决确切的apply
方法。
(Scalafix 版本 0.9.20)
scala - 当代码库中存在可变参数时,scalafix 自动修复插件错误“错误:此处不允许重复参数”
我在我的代码库中使用如下的可变参数。
我正在按照此处的步骤运行 scalafix 命令。
当我运行命令时,sbt> scalafixAll dependency:RenameDeprecatedPackage@org.scalatest:autofix:3.0.8-1
我得到以下错误。
[错误] /Users/rajkumar.natarajan/Documents/Coding/misc/varargs-scalafix-error/src/main/scala/Utils.scala:3:错误:此处不允许重复参数[错误] def toVarArgs [T]( s: Seq[T]) = acceptVarargs(s: _*) [error] ^ [error] at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16) [error] at scala.meta.internal .parsers.Reporter.syntaxError$(Reporter.scala:16) [error] at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22) [error] at scala.meta.internal。 parser.Reporter.syntaxError(Reporter.scala:17) [error] at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
完整的错误堆栈跟踪在这里
我的代码库中的可变参数有什么问题?我该如何解决这个错误?
github中的项目在这里
其他详情 -
sbt 版本 - 1.5.2 scala 版本 - 2.12.10 java 版本 - 11.0.10-zulu
scala - scalafix.sbt.ScalafixFailed: TestError
我有一个使用 scalatest 编写的单元测试,并且在本地运行良好。但是在詹金斯上它失败了,没有具体的错误,就是这样:
痕迹中没有提到测试方法,因此没有暗示原因。
如何真正找到原因?