У меня есть кодовая база, использующая Qt, на которой я хочу запустить cppCheck, и я хотел бы, чтобы она работала достаточно чисто (подавляла или исправляла большинство ошибок).
У меня есть эта функция addResultLable:
QLabel * TestScreen::addResultLabel(const QString& labelText, int x, int y)
{
QLabel *pLabel = new QLabel(baseFrame);
pLabel->setText(labelText);
pLabel->setGeometry(x, y, TEST_RESULT_WIDTH, TEST_RESULT_HEIGHT);
pLabel->setAlignment(Qt::AlignCenter);
return pLabel;
}
И я называю это так: addResultLabel("Пакеты", TEST_RESULT_OFFSET, nextY); следующийY += TEST_RESULT_HEIGHT; m_packets = addResultLabel("0", TEST_RESULT_OFFSET, nextY);
cppCheck выдает (error) Return value of allocation function addResultLabel is not stored.
при первом вызове.
Хотя это правда, это не имеет значения: QLabel правильно связан со своим родителем в вызове new QLabel(baseFrame)
, поэтому на самом деле не имеет значения, сохраняет ли его вызывающий addResultLabel
или нет. Этих вызовов несколько, и я не хочу подавлять их в каждом месте вызова.
Что я хотел бы сделать, так это сообщить cppCheck, что addResultLabel
на самом деле НЕ является функцией распределения, чтобы она перестала проверять своих вызывающих.
Я просмотрел руководство, и хотя я вижу, как ДОБАВИТЬ новую функцию распределения, я не вижу, как указать cppCheck НЕ рассматривать функцию как функцию распределения.
void TestScreen::addResultLabel(...)
. Конечно, это не работает, если вы используете возвращаемое значение несколько раз, но не всегда... - person twalberg   schedule 17.06.2015