问题标签 [compiler-warnings]

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 投票
5 回答
1545 浏览

shell - 模拟警告作为错误的Shell脚本?

一些编译器允许您将警告设置为错误,这样您就永远不会留下任何编译器警告,因为如果您这样做,代码将无法构建。这是一件好事。

不幸的是,一些编译器没有警告作为错误的标志。

我需要编写一个提供该功能的 shell 脚本或包装器。

大概它解析编译控制台输出并在有任何编译器警告(或错误)时返回失败,否则返回成功。“失败”也意味着(我认为)不应该产生目标代码。

什么是您可以编写的最短、最简单的 UNIX/Linux shell 脚本,它满足上述显式要求,以及以下隐含要求,否则其行为就像编译器一样: - 接受所有标志、选项、参数 - 支持 stdout 和 stderr 的重定向- 按照指示生成目标代码和链接

关键词:优雅,满足所有要求。

额外的功劳:易于合并到 GNU make 文件中。

谢谢你的帮助。

===线索===这个解决不同问题的方法,使用shell函数(?),将文本附加到 bash 中的stderr重定向,可能会出现。想知道如何邀请litb的朋友“非常了解 bash”来解决我的问题?

===回答状态===

感谢查理马丁的简短回答,但不幸的是,这就是我开始的。不久前,我使用它,将其发布以供办公室使用,并在几个小时内向我指出了它最严重的缺点:它将通过编译而没有警告,但只有错误。这真的很糟糕,因为那时我们正在交付编译器肯定不会工作的目标代码。简单的解决方案也不满足列出的其他要求。

感谢Adam Rosenfield的速记,以及Chris Dodd将 pipefail 引入解决方案。Chris 的回答看起来最接近,因为我认为 pipefail 应该确保如果编译实际上因错误而失败,我们将得到应有的失败。克里斯,管道故障是否适用于所有外壳?对上面列出的其他隐含要求有什么想法吗?

0 投票
3 回答
1483 浏览

c - SQLite C 警告

我正在使用 sqlite3.c 库。
它编译时带有 140 个转换警告。
我的设置有什么问题?

谢谢。

0 投票
5 回答
6085 浏览

c++ - 使用 qmake/gcc 有条件地禁用警告?

我参与了一个用 Qt 编写并在 Linux 上使用 qmake 和 gcc 构建的软件项目。我们必须链接到一个质量相当低并且会发出大量警告的第三方库。我想在我们的源代码上使用 -W -Wall,但是将 -w 传递给讨厌的第三方库以保持控制台没有噪音和混乱,这样我们就可以专注于我们的代码质量。

在 qmake 中,有没有办法有条件地将 CFLAGS/CXXFLAGS 添加到某些文件和库中?

0 投票
2 回答
1216 浏览

java - 消除 Jasper 生成的 Java 源文件中 JSP 的 Javac 警告?

当使用 Jasper 编译器(使用 Tomcat)和 Java 编译器预编译 JSP 时,我看到javac这样的警告(我启用了javac's-Xlint标志):

现在,它“只是一个警告”,但我喜欢干净的构建,所以我自然想摆脱警告。当然,我可以-Xlint关闭 JSP 编译,但这-Xlint是好东西,所以它会保留。

在此示例警告中,问题在于未使用通用语法。取而代之的是List<String>,我们只有List。我意识到编写 Jasper 的好人必须迎合那些仍然被困在 Java5 之前的世界中的不幸灵魂。这很好,但我为什么要遭受这些警告呢?

是否有一些众所周知的方法可以消除由 Jasper JSP 编译器创建的 Java 源代码引起的 javac 警告?我对特定于 IDE 的解决方案不感兴趣(尽管对于某些使用特定 IDE 的人来说,这将是部分解决方案)。我正在寻找一个普遍适用的解决方案。

对 Jasper 源代码的扫描没有发现任何会导致泛型语法发射的“Java 5+”开关。事实上,恰恰相反,我发现了这一点:

这清楚地表明硬编码的代码没有任何注入优雅的通用语法的希望。

0 投票
2 回答
22312 浏览

c - “警告:返回使指针从没有强制转换的整数”在C中是什么意思?

我正在用 C 编写一个简单的函数,其目的是获取一个 6 位数字,计算出前 3 位,并在此基础上返回一个“r”、“w”或“o”。

但是,当我编译时,我收到此警告:'return 从指针中生成整数而不进行强制转换'。然后,当我运行程序时,我发现该函数正在返回一个奇怪的字符,它绝对不是我所追求的三个字符之一。

这里发生了什么?提前致谢。

这是我的功能:

0 投票
4 回答
632 浏览

c - 在 C 中使用函数指针时的警告

这实际上是一个非关键问题,但我在大多数情况下使用函数指针时都会收到此警告,但我自己仍然无法弄清楚为什么。考虑以下原型:

到目前为止,我可以编译我的千行代码并获得零警告。所以我假设我正确地编写了声明。但后来我在代码中调用它,将 free 作为我的析构函数传递,因为存储在树节点中的数据是简单的结构:

这让我得到了一个"warning: passing argument 2 of 'tree_destroyLineage' from incompatible pointer type"信息。我的第一个假设是编译器在编译时无法弄清楚这是同一件事Pointervoid *所以我尝试使用完全相同类型的函数指针创建另一个函数,以“重新传递”调用free()并更改函数指针声明接受 avoid *而不是指针。这两种方法在同一个地方给了我同样的警告。

我做错了什么,我该如何解决?

0 投票
1 回答
1468 浏览

delphi - 有没有办法从包含文件中获取当前单位的名称?

我正在将一些代码从一个框架库移植到另一个框架库,这需要我注释掉大部分代码只是为了让它编译,然后小心地恢复它们。与此同时,由于所有注释掉的代码,我收到了大量警告。所以我决定写一个快速的包含文件来抑制它们:

我将它包含在所有给我大量警告的单元中,但是现在当我编译时,编译器返回的消息如下:

[DCC 警告] unfinished.inc(1):未移植单元的 W1054 警告被抑制,带有注释掉的代码

我希望它告诉我警告来自执行包含的单元,而不是包含文件本身。有没有办法做到这一点,或者将单元的名称放入消息中,而无需实际将 $MESSAGE 指令从包含文件中移出并移到我执行此操作的每个单元中?

0 投票
3 回答
6292 浏览

eclipse - Eclipse - @SuppressWarnings("javadoc") 不起作用

我将 Eclipse 配置为在缺少公共元素的 javadoc 注释和标签时显示警告。这对我来说非常有用,可以很好地记录我的代码。

但有时我有一个类,我有几个常量描述例如 DFA 的状态或其他东西.. 没有必要记录这些常量,因为它们是不言自明的..

所以我在类中添加了注解@SuppressWarnings("javadoc"),这就是我的观点——Eclipse 不考虑注解并且仍然在缺少 javadocs 时显示警告。

@SuppressWarnings("all")完成了这项工作,但这有副作用,这是不希望的;-)

您是否遇到同样的问题?这是一个错误还是我只有配置错误的东西?有什么解决方法吗?或者这在新版本中是否得到纠正?

PS:我正在使用版本:3.3.2 Build id:M20080221-1800

0 投票
6 回答
11300 浏览

c++ - 在 C++ 中,什么时候可以在同一范围内看到两个同名变量?

这段代码说明了一些我认为应该被视为不好的做法,并引发编译器关于重新定义或屏蔽变量的警告:

它的输出(用 g++ 编译):

我查看了一些参考资料(Stroustrup 和 The Complete C++ Reference),但找不到任何关于何时以及为何允许这样做的信息。不过,我知道它不在一个本地范围内。

何时以及为何允许这样做?这个结构有什么好的用途吗?我怎样才能让 g++ 警告我呢?其他编译器是否对此大喊大叫?

0 投票
4 回答
54782 浏览

c++ - 仅针对部分翻译单元有选择地禁用 GCC 警告

与此MSVC预处理器代码最接近的 GCC 是什么?

我们在通常包含的标头中有代码,我们不想为其生成特定的警告。但是,我们希望包含这些标头的文件继续生成该警告(如果项目启用了该警告)。