【问题标题】:Real-time linting of C codeC 代码的实时 linting
【发布时间】:2012-07-07 03:46:07
【问题描述】:

我正在寻找类似于 JavaScript linting 工具 JSHint 或 JSLint for C 的东西。我的文本编辑器 (Sublime Text 2) 有一个 JSHint 插件,可为我的 JavaScript 代码提供实时反馈。

获得有关我的 C 代码质量反馈的最佳方式是什么?是否有任何工具可以让我实时进行 linting?

【问题讨论】:

标签: c lint


【解决方案1】:

我编造了一种方法,将一些为 SublimeText 2 编写的用户制作的 linters 放入混合中,以使 linting 与 SublimeLinter 和 ANSI C 一起工作。另外请注意,这是一种让它工作的有点“hacky”的方式.

  • 必须安装了 clang(对于 OS X,您可以使用 Apple's command line tools 安装 clang/LLVM 编译器,它只需要一个免费的开发者帐户),您还必须在 Sublime Text 2 中安装 SublimeLinter

  • 导航到 SublimeLinter 的 this user's fork 并继续从模块文件夹中下载“c.py”模块

  • 将此模块复制到位于**your SublimeText 2 data directory**\Packages\SublimeLinter\sublimelinter\modules\ 下的SublimeLinter 工作模块目录(see this 以获取有关数据目录的更多信息)

  • 重启 Sublime Text 2



†确保窗口右下角的当前语言设置为“C”,而不是“C++”、“Python”等。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      另外,请查看cppcheck

      【讨论】:

        【解决方案4】:

        通过带有完整警告的编译器传递它是一个非常好的基本 lint。它会捕获诸如拼写错误的变量之类的东西。关闭优化的 clang 足够快,可以用作实时插件的基础,但对于 sublime 文本我不知道。

        【讨论】:

          【解决方案5】:

          你有足够的代表,我觉得这可能是一个太明显的建议,但听起来你基本上会从 IDE 中受益?例如,日食。我在 Eclipse/Java 中开发,它在错误/警告方面非常激进,当然比我见过的编译器要多。

          【讨论】:

            【解决方案6】:

            自从提出并回答了这个问题以来,现在在 Sublime 中有一些C/C++ linting 选项比接受的答案更加用户友好。所有这些都是 SublimeLinter 的插件。我建议使用 Package Control 作为 Sublime Text 的包管理器(插件作者也是如此)。

            首先,如果您还没有 Sublime Linter,请安装它(它是一个非常流行的多语言 linting 框架)。正如作者所推荐的,它最容易通过包控制安装,但更多信息在 github 站点上。一旦安装了 Sublime Linter,现在就有两到四个不同的附件包用于 linting CC++ 代码。

            其中两个使用C/C++ 编译器本身进行检查;这些是SublimeLinter-gccSublimeLinter-clang。两者都可以通过 Package Control 安装,并为 SublimeLinter 提供到相关底层编译器的接口。 gcc 包可以很容易地指定您想要使用的编译器可执行文件,以防您可能想要检查代码以进行交叉编译。

            另外两个分别是cpplintcppcheck 的接口。这两个在 Package Control 上也可用,尽管名称似乎都将 lint C 和 C++ 代码。

            请注意,您可能一次只希望启用其中一个选项,尽管 SublimeLinter 设置允许您安装多个选项,并且通过 "linters": {...} 选项节仅启用一个。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-07-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-12-06
              相关资源
              最近更新 更多