VS Code 具有跨文件的现代 Fortran linting

问题描述 投票:0回答:1

我正在 Windows 上使用 Modern Fortran 扩展运行 VS Code。我已经安装了 fortls (不是 fortran-language-server,而是 fortls)。我还有带有 gfortran 的 mingw 工具链。

我有一个 Fortran 项目,其源代码跨多个文件(大部分位于同一目录中,但现在我们可以考虑将它们全部放在同一目录中)

几乎所有内容似乎都可以“跨文件”正常工作,例如:

  • 自动完成配置为使用 fortls(无论如何这是默认设置),并且会建议在项目的另一个文件中定义/编码的函数
  • 悬停也配置为使用 fortls(同样是默认设置),并且将鼠标悬停在函数调用上将显示应如何调用它的概述,即使该函数位于另一个文件中
  • 右键单击 -> 转到定义将打开一个选项卡并将我指向相关的代码部分,即使它位于另一个文件中

静态语法分析似乎适用于可以在给定文件内检查的任何内容。例如,如果我在文件 A.f 中编码了一个函数 f,并且 A.f 中的其他位置尝试使用错误数量的参数调用 f,则编辑器会充分发出错误信号。

但是,如果从同一目录中的另一个文件 B.f 调用 A.f 中的相同函数 f,则不会捕获相同的错误,并且编辑器不会发出任何错误信号。只有在同一物理文件内进行的调用才会捕获它们并发出信号。

我不知道该怎么做才能解决这个问题。我已将以下内容添加到 VSCode settings.json 文件中,但没有效果

    "fortran.linter.includePaths": [
        "${workspaceFolder}/**"
    ],
    "fortran.linter.modOutput": "${workspaceFolder}/.vscode/linter",
    "fortran.fortls.suffixes": [
        "f"
    ],
    "fortran.fortls.directories": [
        "./**"
    ],
    "fortran.fortls.preprocessor.suffixes": [
        ".f"
    ],

有人知道如何解决这个问题吗?

visual-studio-code fortran gfortran
1个回答
0
投票

我还使用 Fortran 和 VSCode,但是我无法让它正常工作。我有像你一样的堡垒和现代的 Fortran 扩展。我无法获得跨文件扩展名,例如查看/转到另一个文件中定义的子例程或函数的定义。请问你能帮帮我吗?第一次发贴,如果这不是正确的地方,请不要介意我,欢迎您重定向我。预先感谢。

© www.soinside.com 2019 - 2024. All rights reserved.