Resharper C ++ и Plog Logger - PullRequest
       7

Resharper C ++ и Plog Logger

0 голосов
/ 30 мая 2018

Я использую Plog в своем проекте для регистрации.Я также использую Resharper C ++.

Есть несколько макросов, используемых для ведения журнала, которые делают его менее многословным.Один из макросов всегда помечается как проблема с Resharper, но я не знаю почему.

Макрос это LOGD, который расширяется до

            if (!plog::get<0>() || !plog::get<0>()- 
              >checkSeverity(plog::debug)) {;} else (*plog::get<0>()) += 
              plog::Record(plog::debug, __FUNCTION__, 151, "", 
              __if_exists(this) { this } __if_not_exists(this) { 0 }) << 
              "Message";

Предупреждение указывает на использование "это "как он ожидает идентификатор.

Метод, который он вызывает, имеет подпись:

Record(Severity severity, const char* func, size_t line, const char* file, const void* object)
        : m_severity(severity), m_tid(util::gettid()), m_object(object), m_line(line), m_func(func), m_file(file)

Кто-нибудь имеет опыт с этим знает, как изменить макрос, чтобы он нежалуются?

1 Ответ

0 голосов
/ 31 мая 2018

Я подал RSCPP-22423 , мы попытаемся исправить это в одной из сборок EAP 2018.2.До этого вы можете переопределить макрос PLOG_GET_THIS для ReSharper C ++ следующим образом:

#include <plog/Log.h>
#if defined(__RESHARPER__)
#define PLOG_GET_THIS() reinterpret_cast<void*>(0)
#endif

Или аналогичным образом обновить исходное определение PLOG_GET_THIS (он уже проверяет наличие аналогичного макроса __INTELLISENSE__, чтобы определить,__if_exists можно использовать).

...