Coverity가 C++ 11 noexcept
을 throw()
, 으로 인식하기 시작하여 Boost와 같은 타사 라이브러리 을 호출하는 코드에 허위 오 탐지가 발생합니다. 또한 일부 코드는 의도적으로 예외 에서 충돌을 일으 킵니다.이 경우 예외는 복구 할 수 없거나 계약이 잘못되거나 버그가 발생하기 때문입니다. 이 경우에 대한Coverity를 무시하는 모델 작성 방법 C++ 'noexcept'false-positives?
예 커버 리티 보고서는 다음과 같습니다
CID 178,772 (1 # 1) : catch되지 않은 예외 (UNCAUGHT_EXCEPT) exn_spec_violation : 형 부스트의 예외 :: exception_detail :: clone_impl> 발생 되나 throw 목록 throw()는 throw 될 수 없도록합니다. 이것은 통상 terminate()를 호출하는 unexpected()를 호출합니다.
전 세계적으로 noexcept
을 무시하도록 Coverity 검사에 제출할 모델링 파일은 무엇입니까?
제출은 Travis-CI 통합 을 통해 이루어 지므로''coverity_config.xml''이 어디에 있는지 확실하지 않습니다. –
"defanging"접근법은 코드에서 "noexcept"와 "noexcept (...)"가 허용되기 때문에 에 문제가 있습니다. 두 매크로를 단일 매크로로 defang하는 방법은 무엇입니까? –
좀 더 어렵습니다. (대답은 모든 매크로 질문에서 동일합니다.) 대신에 ppp_translator를 사용해 볼 수도 있습니다 - 이것을'--xml-option'을 통해'cov-configure '에 지정할 수 있습니다. 예를 들어, 'cov-configure ...'- xml-option = append_arg : - ppp_translator =/noexcept \ s * (\ (. * \))?/''. ppp_translator는 정규 표현식을 취하고 전 처리기가 적용되기 전에 적용됩니다 (ppp는 'pre-pre-process'를 의미 함). 따라서 코드를 매크로 친화적 인 형태로 마사지 할 수도 있습니다. – Caleb