Play 框架中的 Scalastyle "Public method must have explicit type"
Scalastyle "Public method must have explicit type" in Play Framework
我们已经开始在我的工作中试验 Scala 和 Play 框架。首先设置我们的自动检查和测试框架,并部署 Scalastyle 来处理前者。
这非常有用,只是我们遇到了这个特定的 lint 错误,我们发现它很难以好的方式解决。一个简单的例子是这样的:
def helloWorld = Action {
req =>
Ok("Hello World!")
}
尽管它通常会复杂得多,当然(到了很难弄清楚实际类型是什么的程度)。
无论哪种情况,这都会给我们带来来自 Scalastyle 的 "Public method must have explicit type" 错误。
不幸的是,在这里设置预期的显式类型似乎通常会导致语法错误。
有什么好的解决方案吗?或者我们是否只需要为 Play 项目关闭此检查?
Any suggestions on a good solution for this? Or do we just have to turn of this check for Play projects?
我建议为您的项目完全关闭 org.scalastyle.scalariform.PublicMethodsHaveTypeChecker
规则,或者将您的控制器标记为被此规则忽略(here 您会找到有关如何执行此操作的信息) .
最后,这项检查对编写库的人更有好处(因为它有助于更明确地说明 api 一个提供)。我发现,当您处理 "real" 项目时,像这样检查只会添加一些样板文件并阻止您利用类型推断。
我希望这有帮助。到设置 -> 编辑器 -> Scala -> 类型注释。对于 Public 值和方法,将值更改为 'Add' 而不是 'Add & Check'。然后它 IDE 将不再显示该警告。
我找到了一种更好的方法来删除“Public 方法必须具有显式类型”消息,而无需将其关闭。
定义这些方法时,可以设置主体[type]和[implicit][type];例如作为 Action[JsValue] 和隐式 RequestHeader。
代码示例:
def helloWorld:Action[JsValue] = Action {
implicit req: RequestHeader =>
Ok("Hello World!")
}
或
def helloWorld:Action[AnyContent] = Action {
implicit req: RequestHeader =>
Ok("Hello World!")
}
我们已经开始在我的工作中试验 Scala 和 Play 框架。首先设置我们的自动检查和测试框架,并部署 Scalastyle 来处理前者。
这非常有用,只是我们遇到了这个特定的 lint 错误,我们发现它很难以好的方式解决。一个简单的例子是这样的:
def helloWorld = Action {
req =>
Ok("Hello World!")
}
尽管它通常会复杂得多,当然(到了很难弄清楚实际类型是什么的程度)。
无论哪种情况,这都会给我们带来来自 Scalastyle 的 "Public method must have explicit type" 错误。
不幸的是,在这里设置预期的显式类型似乎通常会导致语法错误。
有什么好的解决方案吗?或者我们是否只需要为 Play 项目关闭此检查?
Any suggestions on a good solution for this? Or do we just have to turn of this check for Play projects?
我建议为您的项目完全关闭 org.scalastyle.scalariform.PublicMethodsHaveTypeChecker
规则,或者将您的控制器标记为被此规则忽略(here 您会找到有关如何执行此操作的信息) .
最后,这项检查对编写库的人更有好处(因为它有助于更明确地说明 api 一个提供)。我发现,当您处理 "real" 项目时,像这样检查只会添加一些样板文件并阻止您利用类型推断。
我找到了一种更好的方法来删除“Public 方法必须具有显式类型”消息,而无需将其关闭。
定义这些方法时,可以设置主体[type]和[implicit][type];例如作为 Action[JsValue] 和隐式 RequestHeader。
代码示例:
def helloWorld:Action[JsValue] = Action {
implicit req: RequestHeader =>
Ok("Hello World!")
}
或
def helloWorld:Action[AnyContent] = Action {
implicit req: RequestHeader =>
Ok("Hello World!")
}