Clang: Fix/silence some coverty issues

clangcompletionassistprocessor.cpp: 136
CID 1475671:  Possible Control flow issues  (DEADCODE)
  Execution cannot reach the expression "codeCompletion.completionKind
  != ClangBackEnd::CodeCompletion::SlotCompletionKind" inside this
  statement: "if (slotCompletion && codeC...".

clangbackendcommunicator.cpp: 272
CID 1475649:  Null pointer dereferences  (NULL_RETURNS)
  Dereferencing a pointer that might be null "document" when calling
  "contents". (The dereference happens because this is a virtual
  function call.)

clangutils.cpp: 335
CID 1475678:  Error handling issues  (CHECKED_RETURN)
  Calling "open" without checking return value (as is done elsewhere 144
  out of 158 times).

codecompletionsextractor.cpp: 48
CID 1475676:  Uninitialized members  (UNINIT_CTOR)
  Non-static class member field
  "currentCxCodeCompleteResult.CompletionString" is not initialized in
  this constructor nor in any functions that it calls.

Change-Id: I4c8767ee6e824ba1c42d2f8914ad66dc95ac6717
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-12-03 08:26:48 +01:00
parent c7c800a73e
commit 99a7f7ec00
4 changed files with 10 additions and 12 deletions

View File

@@ -122,8 +122,9 @@ static QList<AssistProposalItemInterface *> toAssistProposalItems(
const CodeCompletions &completions,
const ClangCompletionAssistInterface *interface)
{
bool signalCompletion = false; // TODO
bool slotCompletion = false; // TODO
// TODO: Handle Qt4's SIGNAL/SLOT
// Possibly check for m_completionOperator == T_SIGNAL
// Possibly check for codeCompletion.completionKind == CodeCompletion::SignalCompletionKind
QList<AssistProposalItemInterface *> items;
items.reserve(completions.size());
@@ -131,11 +132,6 @@ static QList<AssistProposalItemInterface *> toAssistProposalItems(
if (codeCompletion.text.isEmpty())
continue; // It's an OverloadCandidate which has text but no typedText.
if (signalCompletion && codeCompletion.completionKind != CodeCompletion::SignalCompletionKind)
continue;
if (slotCompletion && codeCompletion.completionKind != CodeCompletion::SlotCompletionKind)
continue;
const QString name = codeCompletion.completionKind == CodeCompletion::KeywordCompletionKind
? CompletionChunksToTextConverter::convertToName(codeCompletion.chunks)
: codeCompletion.text.toString();