- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 scala 编译器 Y 警告,但我认为我做得不对。在下面的示例中,nums 未使用,因此我希望 -Ywarn-value-discard 打印一个警告。有两个 if 条件,一个嵌套在另一个内。 child if 的条件与 parent 的完全相反,因此其中的任何内容都是死代码。但 -Ywarn-dead-code 不会对此发出警告。谁能建议我可能做错了什么?任何指示将不胜感激。
object DeadCodeWarn{
def main( args: Array[ String ] ) {
val nums = 1 to 100
//There should be a warning for squares
//as its a non-unit expression thats not
//used in any computation. Y-warn-value-discard
val squares = nums.map( x => x * x )
if( nums.length == 100 ){
println( "should be printed" )
if( nums.length !=100 )
{
//-Ywarn-dead-code
println( "Dead code, so should be warned against" )
}
}
}
}
$scalac -Xlint -Ywarn-all DeadCodeWarn.scala
默默地成功。
最佳答案
该值不会被丢弃,而是被分配给val
!问题是 val
未使用
带有代码:
package foo
case class Foo(x: Int) {
def foo: Int = {
val y = 2;
x
}
}
我使用 scalac 2.11.5 和 -Ywarn-unused
:
[warn] /.../foo.scala:5: local val in method foo is never used
[warn] val y = 2;
很容易编写通用逻辑不起作用的反例:
// Evil mutable class
class Arrayish {
private var x: Int = 100
def length(): Int = {
val res = x
x += 1
res
}
}
def test(nums: Arrayish): Unit =
if (nums.length == 100) {
println( "should be printed" )
if (nums.length != 100) {
println("Dead code, so should be warned against")
}
}
运行死代码:
scala> test(new Arrayish())
should be printed
Dead code, so should be warned against
或者
class NonEqual {
def ==(x: Int): Boolean = true
def !=(x: Int): Boolean = true
}
class NaNLength {
val length: NonEqual = new NonEqual
}
def test2(nums: NaNLength): Unit =
if (nums.length == 100) {
println("should be printed")
if (nums.length != 100) {
println("Dead code, so should be warned against")
}
}
死代码也会运行:
scala> test2(new NaNLength)
should be printed
Dead code, so should be warned against
Scalac 编译器不够智能,无法区分表现良好和表现不佳的情况。
如果您要提交错误/功能请求,请提及以下示例:
def test3(nums: Array[Int]): Unit = {
if (true) {
println("should be printed")
if (false) {
println("Dead code, so should be warned against")
}
}
}
def test4(nums: Array[Int]): Unit = {
val hundred = nums.length == 100
if (hundred) {
println("should be printed")
if (!hundred) {
println("Dead code, so should be warned against")
}
}
}
似乎 scalac 死代码报告器并不像例如那样完善 java 。我希望 scalac 能够正确优化这些示例,但它不应该太复杂。
关于scala Ywarn-all 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28445911/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我有实体: @Entity @Table(name = "CARDS") public class Card { @ManyToOne @JoinColumn(name = "PERSON_I
我正在尝试计算二维多边形的表面法线。我正在使用 OpenGL wiki 中的 Newell 方法来计算表面法线。 https://www.opengl.org/wiki/Calculating_a_S
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我这里有以下 XML: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
即将发生的 Google 政策变更迫使我们实现一个对话框,以通知欧盟用户有关 Cookie/设备标识符用于广告和分析的情况。我只想向欧盟用户显示此对话框。我不想使用额外的权限(例如 android.p
本文分享自华为云社区《华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇》,作者:华为云PaaS服务小智。 本期核心观点 上车:AGI是未来5~10年内,每个人都无法回避的技
我有一个与酒精相关的网站,需要先验证年龄,然后才能让他们进入该网站。我使用 HttpModule 来执行此操作,该模块检查 cookie,如果未设置,我会将它们重定向到验证页面。我验证他们的年龄并存储
在欧盟,我们有一项法律,要求网页请求存储 cookie 的许可。我们大多数人都了解 cookie 并同意它们,但仍然被迫在任何地方明确接受它们。所以我计划编写这个附加组件(ff & chrome),它
以下在 C 和/或 C++ 中是否合法? void fn(); inline void fn() { /*Do something here*/ } 让我担心的是,第一个声明看起来暗示函数将被定义
我是一名优秀的程序员,十分优秀!