问题标签 [lint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2530 浏览

c++ - 将 SCons 设置为 Autolint

我正在使用 google 的cpplint.py来验证我的项目中的源代码是否符合Google C++ Style Guide中规定的标准。我们使用 SCons 来构建,所以我想通过让 SCons 首先读取我们所有的 .h 和 .cc 文件然后在它们上运行 cpplint.py 来自动化这个过程,只有在它通过时才构建一个文件。问题如下:

  1. 在 SCons 中,我如何预先挂钩构建过程?在通过 linting 之前,不应编译任何文件。
  2. cpplint 不返回退出代码。如何在 SCons 中运行命令并检查结果是否与正则表达式匹配?IE,我如何获得输出的文本?
  3. 该项目很大,无论#1 和#2 的解决方案如何,当 -j 选项传递给 SCons 时,它都应该同时运行。
  4. 我需要一个允许某些文件跳过 lint 检查的白名单。
0 投票
4 回答
12050 浏览

verilog - Verilog linting 工具?

verilog 有哪些好的 linting 工具?我更喜欢可以配置为处理或忽略某些供应商特定原语(如 LUT、PLL 等)的。

我最近尝试了verilator-3.810,但是开箱即用它需要一些关于原语的帮助。

那么你使用什么(linting)工具来处理不那么严格的 verilog 语法?

0 投票
2 回答
481 浏览

lint - 用于增量构建的 PC Lint - 最新代码出错


我正在使用增量构建进行 CI 设置。作为静态检查的一部分,我计划配置一个增量 PC Lint 报告 - 该报告忽略所有其他以前的 Lint 报告,应该只提供新代码中引发的错误。有没有什么工具可以做到这一点?

任何有关探索相关区域的提示都会对我们有所帮助。


我试过报告差异。但由于行号与上次签入不同,因此不会引入实际的增量错误。

我将 Linux 用于我的项目构建,并使用 Windows 生成 PC Lint 报告。

问候,

0 投票
2 回答
7551 浏览

objective-c - 用于 Objective-C 开发的 Lint 检查工具

具有多个开发人员的大型项目通常会导致代码风格不一致。我正在寻找一种为 Objective-C 量身定制的类似lint的工具,它超出了 Clang静态分析器的范围,并检查是否遵守了风格约定;例如大括号、缩进、注释格式、在函数顶部声明变量等等。

我知道AnalysisTool,但它并不完全符合我的要求。我在 SO 的其他地方看到了这个问题,但不清楚提问者是否在追求同样的事情。

这样的工具存在吗?

0 投票
1 回答
1286 浏览

c++ - 为 C 和 C++ 定义不同的结构 - 它安全吗?PC-Lint 警告

以下声明添加了几个用于在 C++ 文件中编译的运算符。该定义包含在 C 和 C++ 文件中。

PC-Lint 报告错误 114:标签“矩形”的结构声明不一致,但我确信它是安全的。

我正在使用 Visual Studio 2008 进行编译。

编辑 - 添加我发送给客户的解释

关于 Rect 问题;知道结构在 C 和 C++ 中的大小相同如何消除对“未定义行为”的怀疑。

如果数据结构中字段的实际位置因编译而异,则会发生未定义的行为。

您必须将所有成员变量访问视为最终解析为指针,该指针由指向对象存储开头的指针加上偏移量计算,具体取决于该结构中的内容。

打包和数据对齐设置会影响偏移值。

允许编译器重新排序类型以获得最佳访问 - 假设仅仅因为您以给定顺序声明了两个成员,它们实际上是按该顺序存储的,这是未定义的行为。声明顺序唯一保证的是初始化、复制和销毁顺序。

但是,当您在同一编译器中讨论给定结构的 C 和 C++ 编译时,使用相同的偏移设置,实际重新排序的机会实际上为零。

因此,我们唯一需要担心的是字段偏移量的任何差异。

对于包含简单 4 个短整数的结构,只需确认 C 版本和 C++ 版本的大小相同即可保证它们的偏移量都相同。为了更加小心,我们还可以检查结构大小 = 4*sizeof(short)。

我认为添加这些检查是值得的,但是一旦完成,就无需重构代码,因为在 C 和 C++ 中使用单独的类型(或将正在使用的函数移到自由函数中)。

0 投票
2 回答
248 浏览

python - Django 国际化(i18n)皮棉检查器?告诉我什么没有被 _()'ed 或 {% trans %}'ed

我必须国际化(i18n)一个 django 项目。它结合了许多内部 django 应用程序。它已经部分地被i18n'ed,即一些字符串是_(),但有些是裸露的。一些模板使用{% blocktrans %}or {% trans %},但有时英文文本直接在那里。我需要大量的手工工作才能改变这一切。那好吧。

有什么方法可以查看python代码中的哪些字符串以及html模板中的哪些文本没有通过_()/{% trans %}?“i18n lint”检查器?一个命令将打印出尚未 _()'ed 或不在 {% trans %} 中的字符串的行和文件名,我可以接受它抛出误报(和误报),我只是想要一些方法来确保我没有错过任何东西。

0 投票
4 回答
1752 浏览

r - 编写 R lint 程序

当我在 python 中编程时,我发现使用 pylint 非常有用。但是,当我在 R 中编程时,没有可比性。

作为一个小型项目,我认为尝试编写一个小型 lint 程序会很有趣。没有什么太花哨的东西,类似于:

  • 确保函数名是驼峰式的
  • 平均函数长度
  • 检测未使用的变量
  • 间距。例如,function(x=1, y=2)而不是function(x=1,y=2)

但是,我不确定如何开始(我已经开始查看 pylint 源代码)。

我应该如何开始?这种类型的项目有标准的编程技术吗?我应该考虑任何好的资源吗?

我想用 R 编写整个项目。

0 投票
2 回答
413 浏览

static-analysis - 静态分析器应该分析什么级别?

我注意到一些静态分析器在源代码上运行,而另一些在字节码上运行(例如,FindBugs)。我敢肯定,甚至有一些适用于目标代码。

我的问题很简单,为不同级别的分析编写不同种类的静态分析器有什么优缺点?

在“静态分析器”下,我包括了 linter、bug finder,甚至是成熟的验证器。通过分析级别,我将包括源代码、高级 IR、低级 IR、字节码、目标代码和可以访问所有阶段的编译器插件。

0 投票
2 回答
758 浏览

c - 适合 C 的文本编辑器,包括 lint 和 cstyle?

我想使用一个不错的 C 代码编辑器,它内置支持:

  1. C、Make、XML、Java 等的代码着色。
  2. 皮棉
  3. 风格
  4. 在 Ubuntu 下工作
  5. 也可能集成了一个不错的可视化调试器?

我宁愿不使用 IDE,因为在我看来它们中的大多数对 C 语言有些笨拙。

我是一名前 Java 开发人员,所以如果我听起来很无聊,我很抱歉。

多谢你们!

0 投票
1 回答
6546 浏览

eclipse - 在 Eclipse 中解析 Lint 错误

不久前我写了一篇关于在 eclipse 中使用 lint的博客,现在我想最终让错误解析工作,以便我可以单击 lint info/warning/error 行并让它跳转到代码中的那个位置。似乎有几种标准方法,但我无法让它们起作用。我愿意接受以下问题之一的一般答案或具体答案。

  1. 使用 makefile 而不是外部工具。我使用了托管构建,但我已经接近了,现在在我的托管构建中,我有一个尝试运行 lint 而不是构建的配置。唯一的问题是 Eclipse 中的某些东西不断在命令中添加“-k”选项,这会导致 lint 失败。有谁知道如何阻止 Eclipse 添加该 -k 选项?(如果我删除它,它就会回来)。显示 -k 选项的屏幕截图

  2. 另一种方法是将输出解析到控制台窗口。我发现一个名为 ErrorLink 的插件看起来很完美。不幸的是,要么我无法构造符合要求的正则表达式,要么我没有配置工具以正确运行 lint。相当稀疏的方向说将您的 exe 添加到 .xml 文件中。我找到了xml文件并添加了

    <consoleLineTracker class="net.sourceforge.sunshade.errorlink.RegexpLineTracker" processType="lint-nt" id="regexpLineTracker"> </consoleLineTracker>

然后我尝试了一个简单的正则表达式,例如 (SomeFileName`.cpp),我确保 SomeFileName.cpp 出现在结果中,但没有生成链接。我不知道 ErrorLink 插件是否真的运行了,但我猜它没有运行。那么有人用过这个插件吗?关于如何让它与 lint 一起工作的任何提示?