@@ -116,6 +116,20 @@ class TestSuppressions : public TestFixture {
116116 TEST_CASE (suppressionFromErrorMessage);
117117
118118 TEST_CASE (suppressionWildcard);
119+
120+ TEST_CASE (polyspaceMisraC2012);
121+ TEST_CASE (polyspaceMisraC2023);
122+ TEST_CASE (polyspaceMisraCpp2008);
123+ TEST_CASE (polyspaceMisraCpp2023);
124+ TEST_CASE (polyspaceCertC);
125+ TEST_CASE (polyspaceCertCpp);
126+ TEST_CASE (polyspaceAutosar);
127+ TEST_CASE (polyspaceIgnored);
128+ TEST_CASE (polyspaceMultiple1);
129+ TEST_CASE (polyspaceMultiple2);
130+ TEST_CASE (polyspaceMultiple3);
131+ TEST_CASE (polyspaceRange);
132+ TEST_CASE (polyspaceBlock);
119133 }
120134
121135 void suppressionsBadId1 () const {
@@ -1896,6 +1910,172 @@ class TestSuppressions : public TestFixture {
18961910 ASSERT (!suppressions.getUnmatchedGlobalSuppressions ().empty ());
18971911 }
18981912 }
1913+
1914+ void polyspaceMisraC2012 () const {
1915+ SuppressionList list;
1916+ polyspace::Parser parser;
1917+ parser.parse (" /* polyspace MISRA2012 : 2.7 */" , 1 , " file.c" );
1918+ parser.collect (list);
1919+ const auto &supprs = list.getSuppressions ();
1920+ ASSERT_EQUALS (1 , supprs.size ());
1921+ const auto s = supprs.cbegin ();
1922+ ASSERT (s->isInline );
1923+ ASSERT (s->isPolyspace );
1924+ ASSERT_EQUALS (" premium-misra-c-2012-2.7" , s->errorId );
1925+ ASSERT_EQUALS (1 , s->lineNumber );
1926+ ASSERT_EQUALS_ENUM (SuppressionList::Type::unique, s->type );
1927+ ASSERT_EQUALS (SuppressionList::Suppression::NO_LINE, s->lineBegin );
1928+ ASSERT_EQUALS (SuppressionList::Suppression::NO_LINE, s->lineEnd );
1929+ }
1930+
1931+ void polyspaceMisraC2023 () const {
1932+ SuppressionList list;
1933+ polyspace::Parser parser;
1934+ parser.parse (" // polyspace MISRA-C-2023 : *" , 2 , " file.c" );
1935+ parser.collect (list);
1936+ const auto &supprs = list.getSuppressions ();
1937+ ASSERT_EQUALS (1 , supprs.size ());
1938+ const auto s = supprs.cbegin ();
1939+ ASSERT_EQUALS (" premium-misra-c-2023-*" , s->errorId );
1940+ ASSERT_EQUALS (2 , s->lineNumber );
1941+ ASSERT_EQUALS (SuppressionList::Suppression::NO_LINE, s->lineBegin );
1942+ ASSERT_EQUALS (SuppressionList::Suppression::NO_LINE, s->lineEnd );
1943+ }
1944+
1945+ void polyspaceMisraCpp2008 () const {
1946+ SuppressionList list;
1947+ polyspace::Parser parser;
1948+ parser.parse (" // polyspace MISRA-CPP : 7-1-1" , 1 , " file.c" );
1949+ parser.collect (list);
1950+ const auto &supprs = list.getSuppressions ();
1951+ ASSERT_EQUALS (1 , supprs.size ());
1952+ const auto s = supprs.cbegin ();
1953+ ASSERT_EQUALS (" premium-misra-cpp-2008-7-1-1" , s->errorId );
1954+ }
1955+
1956+ void polyspaceMisraCpp2023 () const {
1957+ SuppressionList list;
1958+ polyspace::Parser parser;
1959+ parser.parse (" // polyspace MISRA-CPP-2023 : 4.6.1" , 1 , " file.c" );
1960+ parser.collect (list);
1961+ const auto &supprs = list.getSuppressions ();
1962+ ASSERT_EQUALS (1 , supprs.size ());
1963+ const auto s = supprs.cbegin ();
1964+ ASSERT_EQUALS (" premium-misra-cpp-2023-4.6.1" , s->errorId );
1965+ }
1966+
1967+ void polyspaceCertC () const {
1968+ SuppressionList list;
1969+ polyspace::Parser parser;
1970+ parser.parse (" // polyspace CERT-C : PRE30" , 1 , " file.c" );
1971+ parser.collect (list);
1972+ const auto &supprs = list.getSuppressions ();
1973+ ASSERT_EQUALS (1 , supprs.size ());
1974+ const auto s = supprs.cbegin ();
1975+ ASSERT_EQUALS (" premium-cert-c-PRE30" , s->errorId );
1976+ }
1977+
1978+ void polyspaceCertCpp () const {
1979+ SuppressionList list;
1980+ polyspace::Parser parser;
1981+ parser.parse (" // polyspace CERT-CPP : CTR51" , 1 , " file.c" );
1982+ parser.collect (list);
1983+ const auto &supprs = list.getSuppressions ();
1984+ ASSERT_EQUALS (1 , supprs.size ());
1985+ const auto s = supprs.cbegin ();
1986+ ASSERT_EQUALS (" premium-cert-cpp-CTR51" , s->errorId );
1987+ }
1988+
1989+ void polyspaceAutosar () const {
1990+ SuppressionList list;
1991+ polyspace::Parser parser;
1992+ parser.parse (" // polyspace AUTOSAR-CPP14 : a2-10-1" , 1 , " file.c" );
1993+ parser.collect (list);
1994+ const auto &supprs = list.getSuppressions ();
1995+ ASSERT_EQUALS (1 , supprs.size ());
1996+ const auto s = supprs.cbegin ();
1997+ ASSERT_EQUALS (" premium-autosar-a2-10-1" , s->errorId );
1998+ }
1999+
2000+ void polyspaceIgnored () const {
2001+ SuppressionList list;
2002+ polyspace::Parser parser;
2003+ parser.parse (" // polyspace DEFECT : INT_OVFL" , 1 , " file.c" );
2004+ parser.collect (list);
2005+ ASSERT (list.getSuppressions ().empty ());
2006+ }
2007+
2008+ void polyspaceMultiple1 () const {
2009+ SuppressionList list;
2010+ polyspace::Parser parser;
2011+ parser.parse (" /* polyspace MISRA2012 : 2.7, 9.1 */" , 1 , " file.c" );
2012+ parser.collect (list);
2013+ const auto &supprs = list.getSuppressions ();
2014+ ASSERT_EQUALS (2 , supprs.size ());
2015+ auto s = supprs.cbegin ();
2016+ ASSERT_EQUALS (" premium-misra-c-2012-2.7" , s->errorId );
2017+ s++;
2018+ ASSERT_EQUALS (" premium-misra-c-2012-9.1" , s->errorId );
2019+ }
2020+
2021+ void polyspaceMultiple2 () const {
2022+ SuppressionList list;
2023+ polyspace::Parser parser;
2024+ parser.parse (" /* polyspace MISRA2012 : 2.7 MISRA-CPP : 7-1-1 */" , 1 , " file.c" );
2025+ parser.collect (list);
2026+ const auto &supprs = list.getSuppressions ();
2027+ ASSERT_EQUALS (2 , supprs.size ());
2028+ auto s = supprs.cbegin ();
2029+ ASSERT_EQUALS (" premium-misra-c-2012-2.7" , s->errorId );
2030+ s++;
2031+ ASSERT_EQUALS (" premium-misra-cpp-2008-7-1-1" , s->errorId );
2032+ }
2033+
2034+ void polyspaceMultiple3 () const {
2035+ SuppressionList list;
2036+ polyspace::Parser parser;
2037+ parser.parse (" /* polyspace MISRA2012 : 2.7 [Justified:Low] \" comment 1\" polyspace MISRA-CPP : 7-1-1 \" comment 2\" */" , 1 , " file.c" );
2038+ parser.collect (list);
2039+ const auto &supprs = list.getSuppressions ();
2040+ ASSERT_EQUALS (2 , supprs.size ());
2041+ auto s = supprs.cbegin ();
2042+ ASSERT_EQUALS (" premium-misra-c-2012-2.7" , s->errorId );
2043+ s++;
2044+ ASSERT_EQUALS (" premium-misra-cpp-2008-7-1-1" , s->errorId );
2045+ }
2046+
2047+ void polyspaceRange () const {
2048+ SuppressionList list;
2049+ polyspace::Parser parser;
2050+ parser.parse (" /* polyspace +3 MISRA2012 : 2.7 */" , 1 , " file.c" );
2051+ parser.collect (list);
2052+ const auto &supprs = list.getSuppressions ();
2053+ ASSERT_EQUALS (1 , supprs.size ());
2054+ const auto s = supprs.cbegin ();
2055+ ASSERT (s->isInline );
2056+ ASSERT_EQUALS (" premium-misra-c-2012-2.7" , s->errorId );
2057+ ASSERT_EQUALS (1 , s->lineNumber );
2058+ ASSERT_EQUALS_ENUM (SuppressionList::Type::block, s->type );
2059+ ASSERT_EQUALS (1 , s->lineBegin );
2060+ ASSERT_EQUALS (4 , s->lineEnd );
2061+ }
2062+
2063+ void polyspaceBlock () const {
2064+ SuppressionList list;
2065+ polyspace::Parser parser;
2066+ parser.parse (" /* polyspace-begin MISRA2012 : 2.7 */" , 1 , " file.c" );
2067+ parser.parse (" /* polyspace-end MISRA2012 : 2.7 */" , 5 , " file.c" );
2068+ parser.collect (list);
2069+ const auto &supprs = list.getSuppressions ();
2070+ ASSERT_EQUALS (1 , supprs.size ());
2071+ const auto s = supprs.cbegin ();
2072+ ASSERT (s->isInline );
2073+ ASSERT_EQUALS (" premium-misra-c-2012-2.7" , s->errorId );
2074+ ASSERT_EQUALS (1 , s->lineNumber );
2075+ ASSERT_EQUALS_ENUM (SuppressionList::Type::block, s->type );
2076+ ASSERT_EQUALS (1 , s->lineBegin );
2077+ ASSERT_EQUALS (5 , s->lineEnd );
2078+ }
18992079};
19002080
19012081REGISTER_TEST (TestSuppressions)
0 commit comments