【问题标题】:Why does cpplint not spot missing semicolons?为什么 cpplint 没有发现丢失的分号?
【发布时间】:2018-06-02 18:40:58
【问题描述】:

我在 NodeJS 中使用 linter 已经有一段时间了 eslint 并且已经开始在我的 C++ 中的 Arduino 库中使用 cpplint。它似乎没有掌握一些基本原理,例如缺少分号(但它确实识别出错误行上的大括号)。它似乎也没有区分用于缩进的空格和制表符或实现文件中缩进严重的代码。

来自 NodeJS 背景,cpplint 似乎遗漏了很多检查,还是我完全没有抓住重点?

【问题讨论】:

  • 可能是因为您的编译器无法发现它们。
  • 谢谢,我意识到了这一点,但我希望 linter 能够接受它,而不是在被发现之前必须经过编译过程。我应该假设这是使用 C++ 的痛苦的一部分吗?
  • 解析 C++ 是困难大多数句法元素都有双重或三重职责,因此当给定一个格式不正确的程序时,试图识别你的意思是一项人工智能级别的任务

标签: c++ cpplint


【解决方案1】:

cpplint 仅检查基于Google C++ Style Guide 的代码样式。据我所知,它不会检查语法错误。如果我们查看cpplint.py 的实现,我们不会发现任何关于缺少分号的正则表达式规则。关于缩进,只要空格宽度是偶数而不是制表符,cpplint 就会通过。

【讨论】:

  • 谢谢,问题是如果空格不均匀,它甚至不会标记出来,我在一行上塞进了一大堆制表符,但它没能找到它。这就是为什么我不确定是否缺少某些设置(Google 肯定需要一致的缩进!!)。
  • @MarkTyers - 你假设的谷歌风格指南比实际情况更多。查看 Tirtadwipa 链接到的谷歌风格指南。它没有说明一行中的额外空格(末尾除外)。
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多