FlexeLint/PC-lint ist eine Warnung darüber, dass der Rückgabewert von std :: string :: append nicht auf folgende Werte reduziert wird: sample code:FlexeLint/PC-Lint warnt davor, dass der Rückgabewert von std :: string :: append nicht berücksichtigt wird
#include <iostream>
#include <string>
int main() {
std::string s("Hell");
s.append(1,'o');
std::cout << s << std::endl;
return 0;
FlexeLint Aufruf gibt die folgende Warnung:
Warning 534: Ignoring return value of function 'std::basic_string<char>::append(unsigned long, char)'
Während diese Nachricht wahr ist, macht es keinen Sinn machen, den Rückgabewert in diesem Fall zu fangen, weil std::string::append gibt einfach * this.
Darüber hinaus können alle Iteratoren, Zeiger und Verweise, die sich auf dieses Objekt beziehen, ungültig gemacht werden. Dies ist jedoch nicht der Fall, es werden keine Iteratoren, Zeiger und Referenzen verwendet.
Frage
Habe ich etwas Wichtiges oder ist dies einfach ein falsch positives Ergebnis von FlexeLint?
Hinzufügen * Während diese Nachricht wahr ist * - Ist das nicht der Job eines lint-Dienstprogramms, und das heißt, alle Probleme zu finden (es sei denn, Sie unterdrücken diese Warnungen)? Ich möchte keinen Nutzen haben, der allein entscheidet, was er mir zeigen wollte. – PaulMcKenzie
@PaulMcKenzie Ich denke immer noch, dass das Werkzeug mir schlauer sein sollte, sogar in wirklich einfachen Fällen wie diesem. Mein Verständnis eines Linter-Tools unterscheidet sich von Ihrem - ich möchte ein Dienstprogramm haben, das intelligent genug ist, um zu entscheiden, was relevant ist. – orbitcowboy
@orbitcowboy intelligente Analyse ist ein Kontinuum und ich kann Ihnen versichern, dass FlexeLint bereits viele dumme Fehlalarme wegfiltert. Es ist nicht trivial, mit geschickter und motivierter menschlicher Analyse zu konkurrieren :) –