启用 -Xlint 以进行 VSCode Java 编译

Enable -Xlint for VSCode Java Compiling

提问人:Kenny 提问时间:5/13/2023 最后编辑:Kenny 更新时间:7/8/2023 访问量:154

问:

VSCode 的 Java 扩展在捕获大多数警告方面做得非常出色,但最近我在我的项目中遇到了几个警告,VSCode 没有报告,但我通过使用标志进行编译发现了这些警告。-Xlint

以这个 SSCCE 为例:

public class Test
{
    public static void main(String[] args)
    {
        int x = 3;
        int y = (int)x;

        System.out.println(y);
    }
}

这段代码运行得很好,在 VSCode 中没有警告,但如果你用 编译它,你会得到这个:javac -Xlint Test.java

Test.java:6: warning: [cast] redundant cast to int
        int y = (int)x;
                ^      
1 warning

我想要的是一种在 VSCode 中报告这些警告的方法,就像其他警告一样(它们用黄色波浪线突出显示,您可以将其鼠标悬停在上面)。我尝试过,但没有成功,看看是否有办法更改默认的javac编译器参数,但没有找到配置选项(如果存在)。

上面的警告只是 VSCode 似乎没有报告的一个例子。我也通过使用该标志发现了其他警告,例如应该标记为瞬态但并非瞬态的字段。-Xlint

编辑:在这里打开了 RedHat 的 VSCode Java 扩展的功能请求。

Java visual-studio-code 警告

评论

1赞 aled 5/13/2023
这回答了你的问题吗?在 vscode 中将参数传递给 Java 编译器
0赞 Kenny 5/16/2023
嘿,@aled,不,它没有。VSCode 允许您提供的参数:修改运行时参数 (java),而不是编译参数 (javac)。那篇帖子无助于解决我能够看到这些额外警告的问题。

答:

0赞 JialeDu 5/15/2023 #1

安装 Code Runner 扩展,然后有两种方法可以修改命令

  1. 在“设置”面板上搜索,单击code-runner.executorMapEdit in settings.json

    enter image description here

  2. 在打开的settings.json中修改

            "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
    

            "java": "cd $dir && javac -Xlint $fileName && java $fileNameWithoutExt",
    

    enter image description here

  3. 右键单击,或在右上角的三角形按钮中选择Run Code (Ctrl+Alt+N)Run Code

    enter image description here


  1. 将以下配置添加到 settings.jsonAdd the following configuration to settings.json

        "code-runner.customCommand": "cd $dir && javac -Xlint $fileName && java $fileNameWithoutExt",
    
  2. 使用以下方法执行脚本

    Ctrl+Shift+P --> Run Custom Command (Ctrl+Alt+K)

    enter image description here


您可以添加以下设置,以在 TERMINAL 而不是 OUTPUT 面板中使 Code Runner 输出

    "code-runner.runInTerminal": true,

一般情况下,我们仍然建议您使用 Java 扩展包,以获得更多的功能和更好的体验。

评论

0赞 Kenny 5/16/2023
嘿@JialeDu,谢谢你的回答。我试过这个,这可以在我喜欢的终端中快速看到这些警告。那么你是说没有办法在编辑器的上下文中看到这些警告报告吗?这基本上是自己编译代码的一种奇特方式,我已经有一个脚本要做。
0赞 JialeDu 5/16/2023
看起来这是目前。如果您想在编辑器页面上看到警告,也许您需要安装一些额外的扩展。或者,您可以在 github 上将其报告为功能请求。
0赞 Kenny 5/17/2023
感谢您提供指向其 GitHub 的链接,我想我将为此打开一个功能请求。虽然你的答案并没有真正解决我的问题,但鉴于该功能似乎不存在,我会给你一个公认的答案。
0赞 JialeDu 5/17/2023
谢谢你的标记。如果您提交了问题,请不要忘记将链接粘贴到此处,以便人们以后可以知道。
1赞 JialeDu 6/1/2023 #2

SonarLint 可能是您所需要的。

SonarLint 是一个易于使用的扩展,可帮助您在编码时查找和修复错误和安全问题。该扩展在后台运行,就像拼写检查器一样,突出显示造成质量或安全问题的源代码问题。该扩展不仅会告诉您问题是什么,还会通过示例提供有关其有害原因以及如何解决该问题的上下文指导。该扩展支持超过 500+ Java 规则,并包含多个快速修复程序以自动修复某些质量问题

enter image description here

评论

1赞 Kenny 6/3/2023
棒!这就是我一直在寻找的。谢谢!我已经更改了接受的答案。我也会给你投赞成票,但我还没有 15 个声望。