Ошибка cprg-tidy-clang-tidy ведет себя странно с MSV C STL - PullRequest
1 голос
/ 03 апреля 2020

Я использую clang-tidy 10 в проекте, и он ведет себя странно на Windows с MSV C STL. Минимальным примером является следующий:

#include <iostream>
#include <stdexcept>

int main()
{
    try {
        throw std::runtime_error {"Boom!"};
    } catch (...) {
        std::cerr << "Unexpected non-exception error!\n";
    }
}

Если я скажу включить в него проверку bugprone-exception-escape, это говорит о том, что исключение может быть вызвано в функции 'main'. Однако, если я изменяю потоковую передачу строки на std :: cerr со следующим, то проверка не вызывает жалоб:

std::cerr << "Unexpected non-exception error!\n" << std::flush;

Я предполагаю, что причиной двух последовательных потоковых операций в одной строке является проблема потому что следующее действительно поднимает проблему.

std::cerr << "Unexpected non-exception error!\n";
std::cerr << std::flush;

Я заметил, что clang-tidy не жалуется ни на один из этих примеров на Linux, по крайней мере, если я передам -stdlib = libc ++. Есть ли какая-то странная тонкость, которую я упускаю, или это ошибка в clang-tidy и / или реализации STL MSV C?

...