fix cppcorecheck warnings (#703)

* Added c++17 test configurations for clang5.0 and clang6.0

* Fixed CppCoreCheck warnings in GSL and tests

- Added CMakeSettings.json for VS Open Folder configuration
	- So we can easily run CppCoreCheck in VS
- Fixed CppCorecheck warnings where it made sense
- Suppressed the rest
	- Some suppression does not work due to compiler/tool bugs,
          so replaced by #pragma disable
	- CppCoreCheck has noise, suppressed those with comments
	- Catch produces many warnings, blanket-supressed them all
- Had to fix clang formatting to keep attributes in place
	- clang-format does not support attributes, so I am using
        - "CommentPragmas: '^ NO-FORMAT:'" to skip formatiting on them
- Removed GSL_NOEXCEPT macro, removed incorred noexcepts

* Ignore unknown attributes

* ignore unknown attributes in noexception mode tests

* fixed C26472 in at()

* created GSL_SUPPRESS macro to allow all compilers to parse suppression attributes

* try to fix gcc compilation problems with attributes

* ignore gsl::suppress for gcc

* move suppression to function level on return statements

clang5.0 and up does not allow attributes on return statemets in constexpr functions

* move suppression to function level on return statements

* use GSL_SUPPRESS in algorithm_tests

* Addressed PR comments
This commit is contained in:
Anna Gringauze
2018-08-12 21:44:17 -07:00
committed by Neil MacIntosh
parent 6a75903c79
commit cea0d0ac2b
25 changed files with 940 additions and 503 deletions
+4 -4
View File
@@ -17,10 +17,10 @@
#include <cstdlib> // for std::exit
#include <gsl/span> // for span
int operator_subscript_no_throw()
int operator_subscript_no_throw() noexcept
{
int arr[10];
gsl::span<int> sp { arr };
const gsl::span<int> sp { arr };
return sp[11];
}
@@ -30,7 +30,7 @@ void test_terminate()
std::exit(0);
}
void setup_termination_handler()
void setup_termination_handler() noexcept
{
#if defined(_MSC_VER)
@@ -45,7 +45,7 @@ void setup_termination_handler()
}
int main()
int main() noexcept
{
setup_termination_handler();
operator_subscript_no_throw();