[{"data":1,"prerenderedAt":2050},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc52-cpp":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc52-cpp":1358,"sidebar-sei-cert-cpp-coding-standard":1365},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":27,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":25,"path":26},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":29,"title":30,"body":31,"description":1344,"extension":1345,"meta":1346,"navigation":7,"path":1354,"seo":1355,"stem":1356,"__hash__":1357},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F3.msc52-cpp.md","MSC52-CPP. Value-returning functions must return a value from all exit paths",{"type":32,"value":33,"toc":1333},"minimark",[34,38,48,59,77,88,93,96,178,182,185,244,247,256,369,372,378,475,479,503,513,762,766,777,844,848,1246,1250,1263,1267,1305,1308,1329],[35,36,30],"h1",{"id":37},"msc52-cpp-value-returning-functions-must-return-a-value-from-all-exit-paths",[39,40,41,42,47],"p",{},"The C++ Standard, [stmt.return], paragraph 2 [ ",[43,44,46],"a",{"href":45},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ], states the following:",[49,50,51],"blockquote",{},[39,52,53,54,58],{},"Flowing off the end of a function is equivalent to a ",[55,56,57],"code",{},"return"," with no value; this results in undefined behavior in a value-returning function.",[39,60,61,62,66,67,76],{},"A value-returning function must return a value from all code paths; otherwise, it will result in ",[43,63,65],{"href":64},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior"," . This includes returning through less-common code paths, such as from a ",[68,69,70],"em",{},[43,71,75],{"href":72,"rel":73},"https:\u002F\u002Fen.cppreference.com\u002Fw\u002Fcpp\u002Flanguage\u002Ffunction-try-block",[74],"nofollow","function-try-block"," , as explained in the C++ Standard, [except.handle], paragraph 15:",[49,78,79],{},[39,80,81,82,84,85,87],{},"Flowing off the end of a ",[68,83,75],{}," is equivalent to a ",[55,86,57],{}," with no value; this results in undefined behavior in a value-returning function (6.6.3).",[89,90,92],"h2",{"id":91},"noncompliant-code-example","Noncompliant Code Example",[39,94,95],{},"In this noncompliant code example, the programmer forgot to return the input value for positive input, so not all code paths return a value.",[97,98,100],"code-block",{"quality":99},"bad",[101,102,107],"pre",{"className":103,"code":104,"language":105,"meta":106,"style":106},"language-cpp shiki shiki-themes github-light github-dark monokai","int absolute_value(int a) {\n  if (a \u003C 0) {\n    return -a;\n  }\n}\n","cpp","",[55,108,109,135,154,166,172],{"__ignoreMap":106},[110,111,114,118,122,126,128,132],"span",{"class":112,"line":113},"line",1,[110,115,117],{"class":116},"sq6CD","int",[110,119,121],{"class":120},"srTi1"," absolute_value",[110,123,125],{"class":124},"sMOD_","(",[110,127,117],{"class":116},[110,129,131],{"class":130},"sTHNf"," a",[110,133,134],{"class":124},") {\n",[110,136,138,142,145,148,152],{"class":112,"line":137},2,[110,139,141],{"class":140},"sC2Qs","  if",[110,143,144],{"class":124}," (a ",[110,146,147],{"class":140},"\u003C",[110,149,151],{"class":150},"s7F3e"," 0",[110,153,134],{"class":124},[110,155,157,160,163],{"class":112,"line":156},3,[110,158,159],{"class":140},"    return",[110,161,162],{"class":140}," -",[110,164,165],{"class":124},"a;\n",[110,167,169],{"class":112,"line":168},4,[110,170,171],{"class":124},"  }\n",[110,173,175],{"class":112,"line":174},5,[110,176,177],{"class":124},"}\n",[89,179,181],{"id":180},"compliant-solution","Compliant Solution",[39,183,184],{},"In this compliant solution, all code paths now return a value.",[97,186,188],{"quality":187},"good",[101,189,191],{"className":103,"code":190,"language":105,"meta":106,"style":106},"int absolute_value(int a) {\n  if (a \u003C 0) {\n    return -a;\n  }\n  return a;\n}\n",[55,192,193,207,219,227,231,239],{"__ignoreMap":106},[110,194,195,197,199,201,203,205],{"class":112,"line":113},[110,196,117],{"class":116},[110,198,121],{"class":120},[110,200,125],{"class":124},[110,202,117],{"class":116},[110,204,131],{"class":130},[110,206,134],{"class":124},[110,208,209,211,213,215,217],{"class":112,"line":137},[110,210,141],{"class":140},[110,212,144],{"class":124},[110,214,147],{"class":140},[110,216,151],{"class":150},[110,218,134],{"class":124},[110,220,221,223,225],{"class":112,"line":156},[110,222,159],{"class":140},[110,224,162],{"class":140},[110,226,165],{"class":124},[110,228,229],{"class":112,"line":168},[110,230,171],{"class":124},[110,232,233,236],{"class":112,"line":174},[110,234,235],{"class":140},"  return",[110,237,238],{"class":124}," a;\n",[110,240,242],{"class":112,"line":241},6,[110,243,177],{"class":124},[89,245,92],{"id":246},"noncompliant-code-example-1",[39,248,249,250,252,253,255],{},"In this noncompliant code example, the ",[68,251,75],{}," handler does not return a value, resulting in ",[43,254,65],{"href":64}," when an exception is thrown.",[97,257,258],{"quality":99},[101,259,261],{"className":103,"code":260,"language":105,"meta":106,"style":106},"#include \u003Cvector>\n \nstd::size_t f(std::vector\u003Cint> &v, std::size_t s) try {\n  v.resize(s);\n  return s;\n} catch (...) {\n}\n",[55,262,263,272,277,335,346,353,364],{"__ignoreMap":106},[110,264,265,268],{"class":112,"line":113},[110,266,267],{"class":140},"#include",[110,269,271],{"class":270},"sstjo"," \u003Cvector>\n",[110,273,274],{"class":112,"line":137},[110,275,276],{"class":124}," \n",[110,278,279,283,286,289,292,294,296,298,301,303,305,308,311,314,317,319,321,323,326,329,332],{"class":112,"line":156},[110,280,282],{"class":281},"sz2Vg","std",[110,284,285],{"class":124},"::",[110,287,288],{"class":116},"size_t",[110,290,291],{"class":120}," f",[110,293,125],{"class":124},[110,295,282],{"class":281},[110,297,285],{"class":124},[110,299,300],{"class":281},"vector",[110,302,147],{"class":124},[110,304,117],{"class":116},[110,306,307],{"class":124},"> ",[110,309,310],{"class":140},"&",[110,312,313],{"class":130},"v",[110,315,316],{"class":124},", ",[110,318,282],{"class":281},[110,320,285],{"class":124},[110,322,288],{"class":116},[110,324,325],{"class":130}," s",[110,327,328],{"class":124},") ",[110,330,331],{"class":140},"try",[110,333,334],{"class":124}," {\n",[110,336,337,340,343],{"class":112,"line":168},[110,338,339],{"class":124},"  v.",[110,341,342],{"class":120},"resize",[110,344,345],{"class":124},"(s);\n",[110,347,348,350],{"class":112,"line":174},[110,349,235],{"class":140},[110,351,352],{"class":124}," s;\n",[110,354,355,358,361],{"class":112,"line":241},[110,356,357],{"class":124},"} ",[110,359,360],{"class":140},"catch",[110,362,363],{"class":124}," (...) {\n",[110,365,367],{"class":112,"line":366},7,[110,368,177],{"class":124},[89,370,181],{"id":371},"compliant-solution-1",[39,373,374,375,377],{},"In this compliant solution, the exception handler of the ",[68,376,75],{}," also returns a value.",[97,379,380],{"quality":187},[101,381,383],{"className":103,"code":382,"language":105,"meta":106,"style":106},"#include \u003Cvector>\n \nstd::size_t f(std::vector\u003Cint> &v, std::size_t s) try {\n  v.resize(s);\n  return s;\n} catch (...) {\n  return 0;\n}\n",[55,384,385,391,395,439,447,453,461,470],{"__ignoreMap":106},[110,386,387,389],{"class":112,"line":113},[110,388,267],{"class":140},[110,390,271],{"class":270},[110,392,393],{"class":112,"line":137},[110,394,276],{"class":124},[110,396,397,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,433,435,437],{"class":112,"line":156},[110,398,282],{"class":281},[110,400,285],{"class":124},[110,402,288],{"class":116},[110,404,291],{"class":120},[110,406,125],{"class":124},[110,408,282],{"class":281},[110,410,285],{"class":124},[110,412,300],{"class":281},[110,414,147],{"class":124},[110,416,117],{"class":116},[110,418,307],{"class":124},[110,420,310],{"class":140},[110,422,313],{"class":130},[110,424,316],{"class":124},[110,426,282],{"class":281},[110,428,285],{"class":124},[110,430,288],{"class":116},[110,432,325],{"class":130},[110,434,328],{"class":124},[110,436,331],{"class":140},[110,438,334],{"class":124},[110,440,441,443,445],{"class":112,"line":168},[110,442,339],{"class":124},[110,444,342],{"class":120},[110,446,345],{"class":124},[110,448,449,451],{"class":112,"line":174},[110,450,235],{"class":140},[110,452,352],{"class":124},[110,454,455,457,459],{"class":112,"line":241},[110,456,357],{"class":124},[110,458,360],{"class":140},[110,460,363],{"class":124},[110,462,463,465,467],{"class":112,"line":366},[110,464,235],{"class":140},[110,466,151],{"class":150},[110,468,469],{"class":124},";\n",[110,471,473],{"class":112,"line":472},8,[110,474,177],{"class":124},[89,476,478],{"id":477},"exceptions","Exceptions",[39,480,481,485,486,489,490,493,494,496,497,499,500,502],{},[482,483,484],"strong",{},"MSC54-CPP-EX1:"," Flowing off the end of the ",[55,487,488],{},"main()"," function is equivalent to a ",[55,491,492],{},"  return 0; "," statement, according to the C++ Standard, [basic.start.main], paragraph 5 [ ",[43,495,46],{"href":45}," ].  Thus, flowing off the end of the ",[55,498,488],{}," function does not result in ",[43,501,65],{"href":64}," .",[39,504,505,508,509,512],{},[482,506,507],{},"MSC54-CPP-EX2:"," It is permissible for a control path to not return a value if that code path is never expected to be taken and a function marked ",[55,510,511],{},"[[noreturn]]"," is called as part of that code path or if an exception is thrown, as is illustrated in the following code example.",[97,514,515],{"quality":187},[101,516,518],{"className":103,"code":517,"language":105,"meta":106,"style":106},"#include \u003Ccstdlib>\n#include \u003Ciostream>\n[[noreturn]] void unreachable(const char *msg) {\n  std::cout \u003C\u003C \"Unreachable code reached: \" \u003C\u003C msg \u003C\u003C std::endl;\n  std::exit(1);\n}\n\nenum E {\n  One,\n  Two,\n  Three\n};\n\nint f(E e) {\n  switch (e) {\n  case One: return 1;\n  case Two: return 2;\n  case Three: return 3;\n  }\n  unreachable(\"Can never get here\");\n}\n",[55,519,520,527,534,569,597,614,618,623,633,642,650,656,662,667,684,693,709,724,739,744,757],{"__ignoreMap":106},[110,521,522,524],{"class":112,"line":113},[110,523,267],{"class":140},[110,525,526],{"class":270}," \u003Ccstdlib>\n",[110,528,529,531],{"class":112,"line":137},[110,530,267],{"class":140},[110,532,533],{"class":270}," \u003Ciostream>\n",[110,535,536,540,544,547,550,553,555,558,561,564,567],{"class":112,"line":156},[110,537,539],{"class":538},"sXSQT","[[",[110,541,543],{"class":542},"s_OQ2","noreturn",[110,545,546],{"class":538},"]]",[110,548,549],{"class":116}," void",[110,551,552],{"class":120}," unreachable",[110,554,125],{"class":124},[110,556,557],{"class":140},"const",[110,559,560],{"class":116}," char",[110,562,563],{"class":140}," *",[110,565,566],{"class":130},"msg",[110,568,134],{"class":124},[110,570,571,574,577,580,583,586,589,591,594],{"class":112,"line":168},[110,572,573],{"class":281},"  std",[110,575,576],{"class":124},"::cout ",[110,578,579],{"class":140},"\u003C\u003C",[110,581,582],{"class":270}," \"Unreachable code reached: \"",[110,584,585],{"class":140}," \u003C\u003C",[110,587,588],{"class":124}," msg ",[110,590,579],{"class":140},[110,592,593],{"class":281}," std",[110,595,596],{"class":124},"::endl;\n",[110,598,599,601,603,606,608,611],{"class":112,"line":174},[110,600,573],{"class":281},[110,602,285],{"class":124},[110,604,605],{"class":120},"exit",[110,607,125],{"class":124},[110,609,610],{"class":150},"1",[110,612,613],{"class":124},");\n",[110,615,616],{"class":112,"line":241},[110,617,177],{"class":124},[110,619,620],{"class":112,"line":366},[110,621,622],{"emptyLinePlaceholder":7},"\n",[110,624,625,628,631],{"class":112,"line":472},[110,626,627],{"class":116},"enum",[110,629,630],{"class":281}," E",[110,632,334],{"class":124},[110,634,636,639],{"class":112,"line":635},9,[110,637,638],{"class":538},"  One",[110,640,641],{"class":124},",\n",[110,643,645,648],{"class":112,"line":644},10,[110,646,647],{"class":538},"  Two",[110,649,641],{"class":124},[110,651,653],{"class":112,"line":652},11,[110,654,655],{"class":538},"  Three\n",[110,657,659],{"class":112,"line":658},12,[110,660,661],{"class":124},"};\n",[110,663,665],{"class":112,"line":664},13,[110,666,622],{"emptyLinePlaceholder":7},[110,668,670,672,674,676,679,682],{"class":112,"line":669},14,[110,671,117],{"class":116},[110,673,291],{"class":120},[110,675,125],{"class":124},[110,677,678],{"class":281},"E",[110,680,681],{"class":130}," e",[110,683,134],{"class":124},[110,685,687,690],{"class":112,"line":686},15,[110,688,689],{"class":140},"  switch",[110,691,692],{"class":124}," (e) {\n",[110,694,696,699,702,704,707],{"class":112,"line":695},16,[110,697,698],{"class":140},"  case",[110,700,701],{"class":124}," One: ",[110,703,57],{"class":140},[110,705,706],{"class":150}," 1",[110,708,469],{"class":124},[110,710,712,714,717,719,722],{"class":112,"line":711},17,[110,713,698],{"class":140},[110,715,716],{"class":124}," Two: ",[110,718,57],{"class":140},[110,720,721],{"class":150}," 2",[110,723,469],{"class":124},[110,725,727,729,732,734,737],{"class":112,"line":726},18,[110,728,698],{"class":140},[110,730,731],{"class":124}," Three: ",[110,733,57],{"class":140},[110,735,736],{"class":150}," 3",[110,738,469],{"class":124},[110,740,742],{"class":112,"line":741},19,[110,743,171],{"class":124},[110,745,747,750,752,755],{"class":112,"line":746},20,[110,748,749],{"class":120},"  unreachable",[110,751,125],{"class":124},[110,753,754],{"class":270},"\"Can never get here\"",[110,756,613],{"class":124},[110,758,760],{"class":112,"line":759},21,[110,761,177],{"class":124},[89,763,765],{"id":764},"risk-assessment","Risk Assessment",[39,767,768,769,771,772,776],{},"Failing to return a value from a code path in a value-returning function results in ",[43,770,65],{"href":64}," that might be ",[43,773,775],{"href":774},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-exploit","exploited"," to cause data integrity violations.",[778,779,780,781,780,811],"table",{},"\n  ",[782,783,784,785,780],"thead",{},"\n    ",[786,787,788,789,788,793,788,796,788,799,788,802,788,805,788,808,784],"tr",{},"\n      ",[790,791,792],"th",{},"Rule",[790,794,795],{},"Severity",[790,797,798],{},"Likelihood",[790,800,801],{},"Detectable",[790,803,804],{},"Repairable",[790,806,807],{},"Priority",[790,809,810],{},"Level",[812,813,784,814,780],"tbody",{},[786,815,788,816,788,820,788,823,788,826,788,829,788,832,788,839,784],{},[817,818,819],"td",{},"MSC52-CPP",[817,821,822],{},"Medium",[817,824,825],{},"Probable",[817,827,828],{},"Yes",[817,830,831],{},"No",[817,833,835],{"style":834},"color: #f1c40f;",[836,837,838],"b",{},"P8",[817,840,841],{"style":834},[836,842,843],{},"L2",[89,845,847],{"id":846},"automated-detection","Automated Detection",[778,849,852],{"className":850},[851],"wrapped",[812,853,854,878,909,936,962,995,1021,1051,1083,1109,1135,1164,1186,1219],{},[786,855,858,863,868,873],{"className":856},[857],"header",[790,859,860],{},[39,861,862],{},"Tool",[790,864,865],{},[39,866,867],{},"Version",[790,869,870],{},[39,871,872],{},"Checker",[790,874,875],{},[39,876,877],{},"Description",[786,879,882,888,898,906],{"className":880},[881],"odd",[817,883,884],{},[43,885,887],{"href":886},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","Astrée",[817,889,890],{},[891,892,895],"div",{"className":893},[894],"content-wrapper",[39,896,897],{},"25.10",[817,899,900],{},[482,901,902,903],{},"return-implicit",[904,905],"br",{},[817,907,908],{},"Fully checked",[786,910,913,919,927,932],{"className":911},[912],"even",[817,914,915],{},[43,916,918],{"href":917},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite","Axivion Bauhaus Suite",[817,920,921],{},[891,922,924],{"className":923},[894],[39,925,926],{},"7.2.0",[817,928,929],{},[482,930,931],{},"CertC++-MSC52",[817,933,934],{},[904,935],{},[786,937,939,945,951,956],{"className":938},[881],[817,940,941],{},[43,942,944],{"href":943},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang","Clang",[817,946,947],{},[891,948,950],{"className":949},[894],"3.9",[817,952,953],{},[482,954,955],{},"-Wreturn-type",[817,957,958,959],{},"Does not catch all instances of this rule, such as ",[68,960,961],{},"function-try-blocks",[786,963,965,971,977,989],{"className":964},[912],[817,966,967],{},[43,968,970],{"href":969},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[817,972,973],{},[891,974,976],{"className":975},[894],"9.1p0",[817,978,979],{},[39,980,981],{},[482,982,983,984,986,987],{},"LANG.STRUCT.MRS",[904,985],{},"\nLANG.STRUCT.NVNR",[904,988],{},[817,990,991,992,994],{},"Missing return statement",[904,993],{},"\nNon-void noreturn,",[786,996,998,1004,1012,1017],{"className":997},[881],[817,999,1000],{},[43,1001,1003],{"href":1002},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[817,1005,1006],{},[891,1007,1009],{"className":1008},[894],[39,1010,1011],{},"2025.2",[817,1013,1014],{},[482,1015,1016],{},"DF2888",[817,1018,1019],{},[904,1020],{},[786,1022,1024,1030,1035,1047],{"className":1023},[912],[817,1025,1026],{},[43,1027,1029],{"href":1028},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork","Klocwork",[817,1031,1032],{},[891,1033,1011],{"className":1034},[894],[817,1036,1037,1042],{},[39,1038,1039],{},[482,1040,1041],{},"FUNCRET.GEN",[39,1043,1044],{},[482,1045,1046],{},"FUNCRET.IMPLICIT",[817,1048,1049],{},[904,1050],{},[786,1052,1054,1060,1066,1078],{"className":1053},[881],[817,1055,1056],{},[43,1057,1059],{"href":1058},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","LDRA tool suite",[817,1061,1062],{},[891,1063,1065],{"className":1064},[894],"9.7.1",[817,1067,1068],{},[39,1069,1070,1073,1074],{},[482,1071,1072],{},"2 D, 36 S"," ",[482,1075,1076],{},[904,1077],{},[817,1079,1080],{},[39,1081,1082],{},"Fully implemented",[786,1084,1086,1092,1097,1104],{"className":1085},[912],[817,1087,1088],{},[43,1089,1091],{"href":1090},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[817,1093,1094],{},[891,1095,1011],{"className":1096},[894],[817,1098,1099],{},[39,1100,1101],{},[482,1102,1103],{},"CERT_CPP-MSC52-a",[817,1105,1106],{},[39,1107,1108],{},"All exit paths from a function, except main(), with non-void return type shall have an explicit return statement with an expression",[786,1110,1112,1118,1126,1132],{"className":1111},[881],[817,1113,1114],{},[43,1115,1117],{"href":1116},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[817,1119,1120],{},[891,1121,1123],{"className":1122},[894],[39,1124,1125],{},"R2025b",[817,1127,1128],{},[43,1129,1131],{"href":1130},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcmsc52cpp.html","CERT C++: MSC52-CPP",[817,1133,1134],{},"Checks for missing return statements (rule partially covered)",[786,1136,1138,1144,1152,1160],{"className":1137},[912],[817,1139,1140],{},[43,1141,1143],{"href":1142},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio","PVS-Studio",[817,1145,1146],{},[891,1147,1149],{"className":1148},[894],[39,1150,1151],{},"7.42",[817,1153,1154],{},[482,1155,1156],{},[43,1157,1159],{"href":1158},"https:\u002F\u002Fpvs-studio.com\u002Fen\u002Fdocs\u002Fwarnings\u002Fv591\u002F","V591",[817,1161,1162],{},[904,1163],{},[786,1165,1167,1173,1178,1184],{"className":1166},[881],[817,1168,1169],{},[43,1170,1172],{"href":1171},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker","RuleChecker",[817,1174,1175],{},[891,1176,897],{"className":1177},[894],[817,1179,1180],{},[482,1181,902,1182],{},[904,1183],{},[817,1185,908],{},[786,1187,1189,1195,1203,1217],{"className":1188},[912],[817,1190,1191],{},[43,1192,1194],{"href":1193},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[817,1196,1197],{},[891,1198,1200],{"className":1199},[894],[39,1201,1202],{},"6.02",[817,1204,1205],{},[482,1206,1207,1208,1210,1211,1213,1214,1216],{},"RTOS_09",[904,1209],{},"\nRTOS_10",[904,1212],{},"\nRTOS_11",[904,1215],{},"\nRTOS_12",[817,1218,1082],{},[786,1220,1222,1228,1234,1242],{"className":1221},[881],[817,1223,1224],{},[43,1225,1227],{"href":1226},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin","SonarQube C\u002FC++ Plugin",[817,1229,1230],{},[891,1231,1233],{"className":1232},[894],"4.10",[817,1235,1236],{},[482,1237,1238],{},[43,1239,1241],{"href":1240},"https:\u002F\u002Fwww.sonarsource.com\u002Fproducts\u002Fcodeanalyzers\u002Fsonarcfamilyforcpp\u002Frules-cpp.html#RSPEC-935","S935",[817,1243,1244],{},[904,1245],{},[89,1247,1249],{"id":1248},"related-vulnerabilities","Related Vulnerabilities",[39,1251,1252,1253,1257,1258,502],{},"Search for ",[43,1254,1256],{"href":1255},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vulnerability","vulnerabilities"," resulting from the violation of this rule on the ",[43,1259,1262],{"href":1260,"rel":1261},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+MSC52-CPP",[74],"CERT website",[89,1264,1266],{"id":1265},"bibliography","Bibliography",[778,1268,1270,1279],{"className":1269},[851],[1271,1272,1273,1277],"colgroup",{},[1274,1275],"col",{"style":1276},"width: 50%",[1274,1278],{"style":1276},[812,1280,1281],{},[786,1282,1284,1290],{"className":1283},[881],[817,1285,1286,1287,1289],{},"[ ",[43,1288,46],{"href":45}," ]",[817,1291,1292],{},[39,1293,1294,1295,1297,1298,1301,1302,1304],{},"Subclause 3.6.1, \"Main Function\"",[904,1296],{},"\nSubclause 6.6.3, \"The ",[55,1299,1300],{},"       return      "," Statement\"",[904,1303],{},"\nSubclause 15.3, \"Handling an Exception\"",[1306,1307],"hr",{},[39,1309,1310,1073,1317,1073,1323],{},[43,1311,1313],{"href":1312},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc51-cpp",[1314,1315],"img",{"src":1316},"\u002Fattachments\u002F88046682\u002F88480621.png",[43,1318,1320],{"href":1319},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002F",[1314,1321],{"src":1322},"\u002Fattachments\u002F88046682\u002F88475556.png",[43,1324,1326],{"href":1325},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc53-cpp",[1314,1327],{"src":1328},"\u002Fattachments\u002F88046682\u002F88475555.png",[1330,1331,1332],"style",{},"html pre.shiki code .sq6CD, html code.shiki .sq6CD{--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sTHNf, html code.shiki .sTHNf{--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sz2Vg, html code.shiki .sz2Vg{--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .sXSQT, html code.shiki .sXSQT{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#F8F8F2}html pre.shiki code .s_OQ2, html code.shiki .s_OQ2{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#F8F8F2}",{"title":106,"searchDepth":137,"depth":137,"links":1334},[1335,1336,1337,1338,1339,1340,1341,1342,1343],{"id":91,"depth":137,"text":92},{"id":180,"depth":137,"text":181},{"id":246,"depth":137,"text":92},{"id":371,"depth":137,"text":181},{"id":477,"depth":137,"text":478},{"id":764,"depth":137,"text":765},{"id":846,"depth":137,"text":847},{"id":1248,"depth":137,"text":1249},{"id":1265,"depth":137,"text":1266},"The C++ Standard, [stmt.return], paragraph 2 [ ISO\u002FIEC 14882-2014 ], states the following:","md",{"tags":1347},[1348,1349,1350,1351,1352,1353],"review","ptc","review-dms","rule","msc","review-ajb","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc52-cpp",{"title":30,"description":1344},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F3.msc52-cpp","5-rHt4fu2ue6ACbnQMyB5QFA9R7VuM_Je3iCAKa1AEc",[1359,1362],{"title":1360,"path":1312,"stem":1361,"children":-1},"MSC51-CPP. Ensure your random number generator is properly seeded","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F2.msc51-cpp",{"title":1363,"path":1325,"stem":1364,"children":-1},"MSC53-CPP. Do not return from a function declared [[noreturn]]","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F4.msc53-cpp",[1366],{"title":1367,"path":1368,"stem":1369,"children":1370},"SEI CERT C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1371,1372,1439,1834,2036,2046],{"title":1367,"path":1368,"stem":1369},{"title":1373,"path":1374,"stem":1375,"children":1376},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1377,1378],{"title":1373,"path":1374,"stem":1375},{"title":1379,"path":1380,"stem":1381,"children":1382},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1383,1384,1388,1392,1396,1400,1404,1408,1412,1416,1420,1424,1428,1432,1436],{"title":1379,"path":1380,"stem":1381},{"title":1385,"path":1386,"stem":1387},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1389,"path":1390,"stem":1391},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1393,"path":1394,"stem":1395},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1397,"path":1398,"stem":1399},"How this Coding Standard Is Organized","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fhow-this-coding-standard-is-organized","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F05.how-this-coding-standard-is-organized",{"title":1401,"path":1402,"stem":1403},"Relation to the CERT C Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frelation-to-the-cert-c-coding-standard","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F06.relation-to-the-cert-c-coding-standard",{"title":1405,"path":1406,"stem":1407},"Rules Versus Recommendations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frules-versus-recommendations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F07.rules-versus-recommendations",{"title":1409,"path":1410,"stem":1411},"Tool Selection and Validation","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Ftool-selection-and-validation","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F08.tool-selection-and-validation",{"title":1413,"path":1414,"stem":1415},"Conformance Testing","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fconformance-testing","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F09.conformance-testing",{"title":1417,"path":1418,"stem":1419},"Development Process","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fdevelopment-process","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F10.development-process",{"title":1421,"path":1422,"stem":1423},"System Qualities","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsystem-qualities","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F11.system-qualities",{"title":1425,"path":1426,"stem":1427},"Automatically Generated Code","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomatically-generated-code","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F12.automatically-generated-code",{"title":1429,"path":1430,"stem":1431},"Government Regulations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fgovernment-regulations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F13.government-regulations",{"title":1433,"path":1434,"stem":1435},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":847,"path":1437,"stem":1438},"\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomated-detection","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F15.automated-detection",{"title":1440,"path":1441,"stem":1442,"children":1443},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1444,1445,1467,1501,1543,1593,1651,1713,1727,1737,1775,1792],{"title":1440,"path":1441,"stem":1442},{"title":1446,"path":1447,"stem":1448,"children":1449},"Characters and Strings (STR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F1.index",[1450,1451,1455,1459,1463],{"title":1446,"path":1447,"stem":1448},{"title":1452,"path":1453,"stem":1454},"STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F2.str50-cpp",{"title":1456,"path":1457,"stem":1458},"STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F3.str52-cpp",{"title":1460,"path":1461,"stem":1462},"STR53-CPP. Range check element access","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F4.str53-cpp",{"title":1464,"path":1465,"stem":1466},"string from a null pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.string-from-a-null-pointer",{"title":1468,"path":1469,"stem":1470,"children":1471},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1472,1473,1477,1481,1485,1489,1493,1497],{"title":1468,"path":1469,"stem":1470},{"title":1474,"path":1475,"stem":1476},"CON50-CPP. Do not destroy a mutex while it is locked","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F2.con50-cpp",{"title":1478,"path":1479,"stem":1480},"CON51-CPP. Ensure actively held locks are released on exceptional conditions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F3.con51-cpp",{"title":1482,"path":1483,"stem":1484},"CON52-CPP. Prevent data races when accessing bit-fields from multiple threads","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F4.con52-cpp",{"title":1486,"path":1487,"stem":1488},"CON53-CPP. Avoid deadlock by locking in a predefined order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F5.con53-cpp",{"title":1490,"path":1491,"stem":1492},"CON54-CPP. Wrap functions that can spuriously wake up in a loop","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F6.con54-cpp",{"title":1494,"path":1495,"stem":1496},"CON55-CPP. Preserve thread safety and liveness when using condition variables","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F7.con55-cpp",{"title":1498,"path":1499,"stem":1500},"CON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F8.con56-cpp",{"title":1502,"path":1503,"stem":1504,"children":1505},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1506,1507,1511,1515,1519,1523,1527,1531,1535,1539],{"title":1502,"path":1503,"stem":1504},{"title":1508,"path":1509,"stem":1510},"CTR50-CPP. Guarantee that container indices and iterators are within the valid range","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F02.ctr50-cpp",{"title":1512,"path":1513,"stem":1514},"CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F03.ctr51-cpp",{"title":1516,"path":1517,"stem":1518},"CTR52-CPP. Guarantee that library functions do not overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F04.ctr52-cpp",{"title":1520,"path":1521,"stem":1522},"CTR53-CPP. Use valid iterator ranges","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F05.ctr53-cpp",{"title":1524,"path":1525,"stem":1526},"CTR54-CPP. Do not subtract iterators that do not refer to the same container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F06.ctr54-cpp",{"title":1528,"path":1529,"stem":1530},"CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F07.ctr55-cpp",{"title":1532,"path":1533,"stem":1534},"CTR56-CPP. Do not use pointer arithmetic on polymorphic objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F08.ctr56-cpp",{"title":1536,"path":1537,"stem":1538},"CTR57-CPP. Provide a valid ordering predicate","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F09.ctr57-cpp",{"title":1540,"path":1541,"stem":1542},"CTR58-CPP. Predicate function objects should not be mutable","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F10.ctr58-cpp",{"title":1544,"path":1545,"stem":1546,"children":1547},"Declarations and Initialization (DCL)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F01.index",[1548,1549,1553,1557,1561,1565,1569,1573,1577,1581,1585,1589],{"title":1544,"path":1545,"stem":1546},{"title":1550,"path":1551,"stem":1552},"DCL50-CPP. Do not define a C-style variadic function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F02.dcl50-cpp",{"title":1554,"path":1555,"stem":1556},"DCL51-CPP. Do not declare or define a reserved identifier","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F03.dcl51-cpp",{"title":1558,"path":1559,"stem":1560},"DCL52-CPP. Never qualify a reference type with const or volatile","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F04.dcl52-cpp",{"title":1562,"path":1563,"stem":1564},"DCL53-CPP. Do not write syntactically ambiguous declarations","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F05.dcl53-cpp",{"title":1566,"path":1567,"stem":1568},"DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F06.dcl54-cpp",{"title":1570,"path":1571,"stem":1572},"DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F07.dcl55-cpp",{"title":1574,"path":1575,"stem":1576},"DCL56-CPP. Avoid cycles during initialization of static objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F08.dcl56-cpp",{"title":1578,"path":1579,"stem":1580},"DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F09.dcl57-cpp",{"title":1582,"path":1583,"stem":1584},"DCL58-CPP. Do not modify the standard namespaces","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F10.dcl58-cpp",{"title":1586,"path":1587,"stem":1588},"DCL59-CPP. Do not define an unnamed namespace in a header file","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F11.dcl59-cpp",{"title":1590,"path":1591,"stem":1592},"DCL60-CPP. Obey the one-definition rule","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F12.dcl60-cpp",{"title":1594,"path":1595,"stem":1596,"children":1597},"Exceptions and Error Handling (ERR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F01.index",[1598,1599,1603,1607,1611,1615,1619,1623,1627,1631,1635,1639,1643,1647],{"title":1594,"path":1595,"stem":1596},{"title":1600,"path":1601,"stem":1602},"ERR50-CPP. Do not abruptly terminate the program","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F02.err50-cpp",{"title":1604,"path":1605,"stem":1606},"ERR51-CPP. Handle all exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F03.err51-cpp",{"title":1608,"path":1609,"stem":1610},"ERR52-CPP. Do not use setjmp() or longjmp()","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F04.err52-cpp",{"title":1612,"path":1613,"stem":1614},"ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F05.err53-cpp",{"title":1616,"path":1617,"stem":1618},"ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F06.err54-cpp",{"title":1620,"path":1621,"stem":1622},"ERR55-CPP. Honor exception specifications","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F07.err55-cpp",{"title":1624,"path":1625,"stem":1626},"ERR56-CPP. Guarantee exception safety","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F08.err56-cpp",{"title":1628,"path":1629,"stem":1630},"ERR57-CPP. Do not leak resources when handling exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F09.err57-cpp",{"title":1632,"path":1633,"stem":1634},"ERR58-CPP. Handle all exceptions thrown before main() begins executing","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F10.err58-cpp",{"title":1636,"path":1637,"stem":1638},"ERR59-CPP. Do not throw an exception across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F11.err59-cpp",{"title":1640,"path":1641,"stem":1642},"ERR60-CPP. Exception objects must be nothrow copy constructible","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F12.err60-cpp",{"title":1644,"path":1645,"stem":1646},"ERR61-CPP. Catch exceptions by lvalue reference","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F13.err61-cpp",{"title":1648,"path":1649,"stem":1650},"ERR62-CPP. Detect errors when converting a string to a number","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F14.err62-cpp",{"title":1652,"path":1653,"stem":1654,"children":1655},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1656,1657,1661,1665,1669,1673,1677,1681,1685,1689,1693,1697,1701,1705,1709],{"title":1652,"path":1653,"stem":1654},{"title":1658,"path":1659,"stem":1660},"EXP50-CPP. Do not depend on the order of evaluation for side effects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F02.exp50-cpp",{"title":1662,"path":1663,"stem":1664},"EXP51-CPP. Do not delete an array through a pointer of the incorrect type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F03.exp51-cpp",{"title":1666,"path":1667,"stem":1668},"EXP52-CPP. Do not rely on side effects in unevaluated operands","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F04.exp52-cpp",{"title":1670,"path":1671,"stem":1672},"EXP53-CPP. Do not read uninitialized memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F05.exp53-cpp",{"title":1674,"path":1675,"stem":1676},"EXP54-CPP. Do not access an object outside of its lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F06.exp54-cpp",{"title":1678,"path":1679,"stem":1680},"EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F07.exp55-cpp",{"title":1682,"path":1683,"stem":1684},"EXP56-CPP. Do not call a function with a mismatched language linkage","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F08.exp56-cpp",{"title":1686,"path":1687,"stem":1688},"EXP57-CPP. Do not cast or delete pointers to incomplete classes","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F09.exp57-cpp",{"title":1690,"path":1691,"stem":1692},"EXP58-CPP. Pass an object of the correct type to va_start","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F10.exp58-cpp",{"title":1694,"path":1695,"stem":1696},"EXP59-CPP. Use offsetof() on valid types and members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F11.exp59-cpp",{"title":1698,"path":1699,"stem":1700},"EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F12.exp60-cpp",{"title":1702,"path":1703,"stem":1704},"EXP61-CPP. A lambda object must not outlive any of its reference captured objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F13.exp61-cpp",{"title":1706,"path":1707,"stem":1708},"EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F14.exp62-cpp",{"title":1710,"path":1711,"stem":1712},"EXP63-CPP. Do not rely on the value of a moved-from object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp63-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F15.exp63-cpp",{"title":1714,"path":1715,"stem":1716,"children":1717},"Input Output (FIO)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F1.index",[1718,1719,1723],{"title":1714,"path":1715,"stem":1716},{"title":1720,"path":1721,"stem":1722},"FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F2.fio50-cpp",{"title":1724,"path":1725,"stem":1726},"FIO51-CPP. Close files when they are no longer needed","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F3.fio51-cpp",{"title":1728,"path":1729,"stem":1730,"children":1731},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1732,1733],{"title":1728,"path":1729,"stem":1730},{"title":1734,"path":1735,"stem":1736},"INT50-CPP. Do not cast to an out-of-range enumeration value","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int\u002Fint50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F2.int50-cpp",{"title":1738,"path":1739,"stem":1740,"children":1741},"Memory Management (MEM)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F1.index",[1742,1743,1747,1751,1755,1759,1763,1767,1771],{"title":1738,"path":1739,"stem":1740},{"title":1744,"path":1745,"stem":1746},"MEM50-CPP. Do not access freed memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F2.mem50-cpp",{"title":1748,"path":1749,"stem":1750},"MEM51-CPP. Properly deallocate dynamically allocated resources","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F3.mem51-cpp",{"title":1752,"path":1753,"stem":1754},"MEM52-CPP. Detect and handle memory allocation errors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F4.mem52-cpp",{"title":1756,"path":1757,"stem":1758},"MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F5.mem53-cpp",{"title":1760,"path":1761,"stem":1762},"MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F6.mem54-cpp",{"title":1764,"path":1765,"stem":1766},"MEM55-CPP. Honor replacement dynamic storage management requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F7.mem55-cpp",{"title":1768,"path":1769,"stem":1770},"MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F8.mem56-cpp",{"title":1772,"path":1773,"stem":1774},"MEM57-CPP. Avoid using default operator new for over-aligned types","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F9.mem57-cpp",{"title":1776,"path":1777,"stem":1778,"children":1779},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[1780,1781,1782,1783,1784,1788],{"title":1776,"path":1777,"stem":1778},{"title":1360,"path":1312,"stem":1361},{"title":30,"path":1354,"stem":1356},{"title":1363,"path":1325,"stem":1364},{"title":1785,"path":1786,"stem":1787},"MSC54-CPP. A signal handler must be a plain old function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F5.msc54-cpp",{"title":1789,"path":1790,"stem":1791},"rand() for generating pseudorandom numbers","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Frand-for-generating-pseudorandom-numbers","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F6.rand-for-generating-pseudorandom-numbers",{"title":1793,"path":1794,"stem":1795,"children":1796},"Object Oriented Programming (OOP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F01.index",[1797,1798,1802,1806,1810,1814,1818,1822,1826,1830],{"title":1793,"path":1794,"stem":1795},{"title":1799,"path":1800,"stem":1801},"OOP50-CPP. Do not invoke virtual functions from constructors or destructors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F02.oop50-cpp",{"title":1803,"path":1804,"stem":1805},"OOP51-CPP. Do not slice derived objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F03.oop51-cpp",{"title":1807,"path":1808,"stem":1809},"OOP52-CPP. Do not delete a polymorphic object without a virtual destructor","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F04.oop52-cpp",{"title":1811,"path":1812,"stem":1813},"OOP53-CPP. Write constructor member initializers in the canonical order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F05.oop53-cpp",{"title":1815,"path":1816,"stem":1817},"OOP54-CPP. Gracefully handle self-copy assignment","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F06.oop54-cpp",{"title":1819,"path":1820,"stem":1821},"OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F07.oop55-cpp",{"title":1823,"path":1824,"stem":1825},"OOP56-CPP. Honor replacement handler requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F08.oop56-cpp",{"title":1827,"path":1828,"stem":1829},"OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F09.oop57-cpp",{"title":1831,"path":1832,"stem":1833},"OOP58-CPP. Copy operations must not mutate the source object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F10.oop58-cpp",{"title":1835,"path":1836,"stem":1837,"children":1838},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[1839,1840,1844,1848,2018,2032],{"title":1835,"path":1836,"stem":1837},{"title":1841,"path":1842,"stem":1843},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":1845,"path":1846,"stem":1847},"BB. Definitions","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":1849,"path":1850,"stem":1851,"children":1852},"CC. Analyzers","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F01.index",[1853,1854,1856,1860,1862,1866,1868,1872,1876,1880,1884,1888,1892,1894,1898,1902,1906,1910,1914,1918,1922,1926,1930,1932,1936,1938,1942,1945,1949,1952,1956,1958,1962,1966,1970,1972,1976,1980,1984,1986,1990,1992,1996,2000,2004,2006,2010,2014],{"title":1849,"path":1850,"stem":1851},{"title":887,"path":886,"stem":1855},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":1857,"path":1858,"stem":1859},"Astrée_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F03.astree_v",{"title":918,"path":917,"stem":1861},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-bauhaus-suite",{"title":1863,"path":1864,"stem":1865},"Axivion Bauhaus Suite_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F05.axivion-bauhaus-suite_v",{"title":944,"path":943,"stem":1867},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F06.clang",{"title":1869,"path":1870,"stem":1871},"Clang_38_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_38_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F07.clang_38_v",{"title":1873,"path":1874,"stem":1875},"Clang_39_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_39_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F08.clang_39_v",{"title":1877,"path":1878,"stem":1879},"Clang_40_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_40_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F09.clang_40_v",{"title":1881,"path":1882,"stem":1883},"Clang_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F10.clang_v",{"title":1885,"path":1886,"stem":1887},"Codee","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F11.codee",{"title":1889,"path":1890,"stem":1891},"Codee_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F12.codee_v",{"title":970,"path":969,"stem":1893},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":1895,"path":1896,"stem":1897},"CodeSonar_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F14.codesonar_v",{"title":1899,"path":1900,"stem":1901},"Coverity","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F15.coverity",{"title":1903,"path":1904,"stem":1905},"Coverity_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F16.coverity_v",{"title":1907,"path":1908,"stem":1909},"ECLAIR","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F17.eclair",{"title":1911,"path":1912,"stem":1913},"ECLAIR_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F18.eclair_v",{"title":1915,"path":1916,"stem":1917},"EDG","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F19.edg",{"title":1919,"path":1920,"stem":1921},"Edg_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F20.edg_v",{"title":1923,"path":1924,"stem":1925},"GCC","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F21.gcc",{"title":1927,"path":1928,"stem":1929},"Gcc_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F22.gcc_v",{"title":1003,"path":1002,"stem":1931},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":1933,"path":1934,"stem":1935},"Helix QAC_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F24.helix-qac_v",{"title":1029,"path":1028,"stem":1937},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F25.klocwork",{"title":1939,"path":1940,"stem":1941},"Klocwork_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F26.klocwork_v",{"title":1943,"path":1058,"stem":1944},"LDRA","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":1946,"path":1947,"stem":1948},"Ldra_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F28.ldra_v",{"title":1950,"path":1090,"stem":1951},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":1953,"path":1954,"stem":1955},"Parasoft_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F30.parasoft_v",{"title":1117,"path":1116,"stem":1957},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":1959,"path":1960,"stem":1961},"Polyspace Bug Finder_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F32.polyspace-bug-finder_v",{"title":1963,"path":1964,"stem":1965},"PRQA QA-C++","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F33.prqa-qa-cpp",{"title":1967,"path":1968,"stem":1969},"PRQA QA-C++_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F34.prqa-qa-cpp_v",{"title":1143,"path":1142,"stem":1971},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F35.pvs-studio",{"title":1973,"path":1974,"stem":1975},"PVS-Studio_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F36.pvs-studio_v",{"title":1977,"path":1978,"stem":1979},"Rose","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F37.rose",{"title":1981,"path":1982,"stem":1983},"Rose_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F38.rose_v",{"title":1172,"path":1171,"stem":1985},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F39.rulechecker",{"title":1987,"path":1988,"stem":1989},"RuleChecker_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F40.rulechecker_v",{"title":1194,"path":1193,"stem":1991},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F41.security-reviewer-static-reviewer",{"title":1993,"path":1994,"stem":1995},"Security Reviewer - Static Reviewer_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F42.security-reviewer-static-reviewer_v",{"title":1997,"path":1998,"stem":1999},"Semgrep","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F43.semgrep",{"title":2001,"path":2002,"stem":2003},"Semgrep_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F44.semgrep_v",{"title":1227,"path":1226,"stem":2005},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F45.sonarqube-ccpp-plugin",{"title":2007,"path":2008,"stem":2009},"SonarQube C\u002FC++ Plugin_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F46.sonarqube-ccpp-plugin_v",{"title":2011,"path":2012,"stem":2013},"Splint","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F47.splint",{"title":2015,"path":2016,"stem":2017},"Splint_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F48.splint_v",{"title":2019,"path":2020,"stem":2021,"children":2022},"DD. Related Guidelines","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F1.index",[2023,2024,2028],{"title":2019,"path":2020,"stem":2021},{"title":2025,"path":2026,"stem":2027},"2008","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002F2.2008","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F2.2008",{"title":2029,"path":2030,"stem":2031},"MITRE CWE","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002Fmitre-cwe","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F3.mitre-cwe",{"title":2033,"path":2034,"stem":2035},"EE. Risk Assessments","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fee-risk-assessments","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F6.ee-risk-assessments",{"title":2037,"path":2038,"stem":2039,"children":2040},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[2041,2042],{"title":2037,"path":2038,"stem":2039},{"title":2043,"path":2044,"stem":2045},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":2047,"path":2048,"stem":2049},"Errata for SEI CERT C++ Coding Standard (2016 Edition)","\u002Fsei-cert-cpp-coding-standard\u002Ferrata-for-sei-cert-cpp-coding-standard-2016-edition","5.sei-cert-cpp-coding-standard\u002F6.errata-for-sei-cert-cpp-coding-standard-2016-edition",1775657783763]