{"id":1167,"date":"2018-04-27T10:56:32","date_gmt":"2018-04-27T02:56:32","guid":{"rendered":"https:\/\/damogame.cn:15443\/wordpress\/?p=1167"},"modified":"2018-04-27T10:56:32","modified_gmt":"2018-04-27T02:56:32","slug":"%e3%80%90%e4%bb%a3%e7%a0%81%e8%b4%a8%e9%87%8f%e3%80%91c%e4%bb%a3%e7%a0%81%e8%b4%a8%e9%87%8f%e6%89%ab%e6%8f%8f%e4%b8%bb%e6%b5%81%e5%b7%a5%e5%85%b7%e6%b7%b1%e5%ba%a6%e6%af%94%e8%be%83","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/1167","title":{"rendered":"\u3010\u4ee3\u7801\u8d28\u91cf\u3011C++\u4ee3\u7801\u8d28\u91cf\u626b\u63cf\u4e3b\u6d41\u5de5\u5177\u6df1\u5ea6\u6bd4\u8f83"},"content":{"rendered":"<div class=\"article-title-box\">\n<h6 class=\"title-article\">\u3010\u4ee3\u7801\u8d28\u91cf\u3011C++\u4ee3\u7801\u8d28\u91cf\u626b\u63cf\u4e3b\u6d41\u5de5\u5177\u6df1\u5ea6\u6bd4\u8f83<\/h6>\n<\/div>\n<div class=\"article-info-box\">\n<div class=\"article-bar-top d-flex\"><span class=\"time\">2016\u5e7405\u670827\u65e5 14:16:14<\/span><\/p>\n<div class=\"float-right\"><span class=\"read-count\">\u9605\u8bfb\u6570\uff1a9792<\/span><\/div>\n<\/div>\n<\/div>\n<article>\n<div id=\"article_content\" class=\"article_content csdn-tracking-statistics\" data-pid=\"blog\" data-mod=\"popu_307\" data-dsm=\"post\">\n<div class=\"htmledit_views\">\n<p>\u672c\u6587\u7531\u817e\u8bafWeTest\u56e2\u961f\u63d0\u4f9b\uff0c\u672a\u7ecf\u6388\u6743\u4e25\u7981\u8f6c\u8f7d\uff01\u66f4\u591a\u8d44\u8baf\u53ef\u76f4\u63a5\u6233\u94fe\u63a5\u67e5\u770b\uff1a<a href=\"http:\/\/wetest.qq.com\/lab\/?from=content_csdn\" target=\"_blank\" rel=\"noopener\">http:\/\/wetest.qq.com\/lab\/\u00a0<\/a><br \/>\n\u5fae\u4fe1\u53f7\uff1aTencentWeTest<\/p>\n<p>\u6587\/\u5f20\u84d3<\/p>\n<p>\u5f15\u8a00<br \/>\n\u9759\u6001\u4ee3\u7801\u5206\u6790\u662f\u6307\u65e0\u9700\u8fd0\u884c\u88ab\u6d4b\u4ee3\u7801\uff0c\u901a\u8fc7\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u5206\u6790\u3001\u63a7\u5236\u6d41\u3001\u6570\u636e\u6d41\u5206\u6790\u7b49\u6280\u672f\u5bf9\u7a0b\u5e8f\u4ee3\u7801\u8fdb\u884c\u626b\u63cf\uff0c\u627e\u51fa\u4ee3\u7801\u9690\u85cf\u7684\u9519\u8bef\u548c\u7f3a\u9677\uff0c\u5982\u53c2\u6570\u4e0d\u5339\u914d\uff0c\u6709\u6b67\u4e49\u7684\u5d4c\u5957\u8bed\u53e5\uff0c\u9519\u8bef\u7684\u9012\u5f52\uff0c\u975e\u6cd5\u8ba1\u7b97\uff0c\u53ef\u80fd\u51fa\u73b0\u7684\u7a7a\u6307\u9488\u5f15\u7528\u7b49\u7b49\u3002\u7edf\u8ba1\u8bc1\u660e\uff0c\u5728\u6574\u4e2a\u8f6f\u4ef6\u5f00\u53d1\u751f\u547d\u5468\u671f\u4e2d\uff0c30% \u81f3 70% \u7684\u4ee3\u7801\u903b\u8f91\u8bbe\u8ba1\u548c\u7f16\u7801\u7f3a\u9677\u662f\u53ef\u4ee5\u901a\u8fc7\u9759\u6001\u4ee3\u7801\u5206\u6790\u6765\u53d1\u73b0\u548c\u4fee\u590d\u7684\u3002<\/p>\n<p>\u5728C++\u9879\u76ee\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u56e0\u4e3a\u5176\u4e3a\u7f16\u8bd1\u6267\u884c\u8bed\u8a00\uff0c\u8bed\u8a00\u89c4\u5219\u8981\u6c42\u8f83\u9ad8\uff0c\u5f00\u53d1\u56e2\u961f\u5f80\u5f80\u8981\u82b1\u8d39\u5927\u91cf\u7684\u65f6\u95f4\u548c\u7cbe\u529b\u53d1\u73b0\u5e76\u4fee\u6539\u4ee3\u7801\u7f3a\u9677\u3002\u6240\u4ee5C++ \u9759\u6001\u4ee3\u7801\u5206\u6790\u5de5\u5177\u80fd\u591f\u5e2e\u52a9\u5f00\u53d1\u4eba\u5458\u5feb\u901f\u3001\u6709\u6548\u7684\u5b9a\u4f4d\u4ee3\u7801\u7f3a\u9677\u5e76\u53ca\u65f6\u7ea0\u6b63\u8fd9\u4e9b\u95ee\u9898\uff0c\u4ece\u800c\u6781\u5927\u5730\u63d0\u9ad8\u8f6f\u4ef6\u53ef\u9760\u6027\u5e76\u8282\u7701\u5f00\u53d1\u6210\u672c\u3002<\/p>\n<p>\u9759\u6001\u4ee3\u7801\u5206\u6790\u5de5\u5177\u7684\u4f18\u52bf \uff1a<\/p>\n<p>1.\u81ea\u52a8\u6267\u884c\u9759\u6001\u4ee3\u7801\u5206\u6790\uff0c\u5feb\u901f\u5b9a\u4f4d\u4ee3\u7801\u9690\u85cf\u9519\u8bef\u548c\u7f3a\u9677\u3002<\/p>\n<p>2. \u5e2e\u52a9\u4ee3\u7801\u8bbe\u8ba1\u4eba\u5458\u66f4\u4e13\u6ce8\u4e8e\u5206\u6790\u548c\u89e3\u51b3\u4ee3\u7801\u8bbe\u8ba1\u7f3a\u9677\u3002<\/p>\n<p>3. \u51cf\u5c11\u5728\u4ee3\u7801\u4eba\u5de5\u68c0\u67e5\u4e0a\u82b1\u8d39\u7684\u65f6\u95f4\uff0c\u63d0\u9ad8\u8f6f\u4ef6\u53ef\u9760\u6027\u5e76\u8282\u7701\u5f00\u53d1\u6210\u672c\u3002<\/p>\n<p>\uff12\u4e1a\u754c\u4e3b\u6d41\u9759\u6001\u4ee3\u7801\u626b\u63cf\u5de5\u5177\u6982\u51b5<br \/>\n\u76ee\u524d\u5e02\u573a\u4e0a\u7684C++ \u9759\u6001\u4ee3\u7801\u5206\u6790\u5de5\u5177\u79cd\u7c7b\u7e41\u591a\u4e14\u5404\u6709\u5343\u79cb\uff0c\u672c\u6587\u5c06\u5206\u522b\u4ecb\u7ecdTSC\u56e2\u961f\u81ea\u4e3b\u7814\u53d1\u7684tscancode\u5de5\u5177\u548c\u5f53\u524d4\u79cd\u4e3b\u6d41C++\u9759\u6001\u4ee3\u7801\u5206\u6790\u5de5\u5177(cppcheck\u3001coverity\u3001clang\u3001pclint)\uff0c\u5e76\u4ece\u529f\u80fd\u3001\u6548\u7387\u3001\u6613\u7528\u6027\u7b49\u65b9\u9762\u5bf9\u5b83\u4eec\u8fdb\u884c\u5206\u6790\u548c\u6bd4\u8f83\uff0c\u4ee5\u671f\u5e2e\u52a9 C++\u5f00\u53d1\u4eba\u5458\u66f4\u6e05\u6670\u9759\u6001\u4ee3\u7801\u5206\u6790\u5de5\u5177\u7684\u5de5\u4f5c\u6548\u679c\u3001\u9002\u7528\u573a\u666f\u548c\u6269\u5c55\u7a7a\u95f4\uff0c\u540c\u65f6\u5728\u5176\u5bf9\u5e94\u9879\u76ee\u7279\u5f81\u4e2d\u9009\u62e9\u5408\u9002\u7684\u5de5\u5177\u5e94\u7528\u5230\u9879\u76ee\u5f00\u53d1\u73af\u8282\u4e2d\u3002<\/p>\n<p>\u4ee5\u4e0b\u4e3a\u5de5\u5177\u5728\u4ed8\u8d39\u4ef7\u683c\u3001\u89c4\u5219\u6570\u91cf\u3001\u51c6\u786e\u7387\u3001\u626b\u63cf\u6548\u7387\u3001\u7f16\u8bd1\u4f9d\u8d56\u3001IDE\u652f\u6301\u3001\u8de8\u5e73\u53f0\u652f\u6301\u3001\u53ef\u6269\u5c55\u5f00\u53d1\u65b9\u9762\u7684\u5bf9\u6bd4\u6570\u636e\u3002\u6ce8\uff1a\u672c\u6b21\u7ade\u54c1\u5206\u6790\u7684\u9009\u62e9\u4e863\u6b3e\u6e38\u620f\u9879\u76ee\uff08\u7ea6500\u4e07\u884c\u4ee3\u7801\uff09\u3002<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114743582\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114751339\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u5728\u53ef\u6269\u5c55\u6027\u4e0a\uff0cTSC\u6709\u4e13\u4eba\u7ef4\u62a4\uff0c\u5b9a\u671f\u6839\u636e\u7528\u6237\u9700\u6c42\u6269\u5c55\u89c4\u5219\u6216\u65b0\u589e\u529f\u80fd\u7279\u6027\uff0ccppcheck\u548cclang\u662f\u5f00\u6e90\u5de5\u5177\uff0c\u5de5\u5177\u66f4\u65b0\u8f83\u6162\uff0c\u4f46\u5982\u679c\u7528\u6237\u6709\u7279\u6b8a\u9700\u6c42\u53ef\u4ee5\u81ea\u5df1\u6269\u5c55\u5f00\u53d1\uff0cpclint\u548ccoverity\u662f\u5546\u4e1a\u8f6f\u4ef6\uff0c\u96be\u4ee5\u8fdb\u884c\u529f\u80fd\u6269\u5c55\u3002<\/p>\n<p>\u540c\u65f6\uff0cTSC\u6709\u5b8c\u6574\u4ee3\u7801\u8d28\u91cf\u7ba1\u7406\u95ed\u73af\u5e73\u53f0QOC\u652f\u6301\uff1b coverity\u548cclang\u53ef\u7528web\u7aef\u7684\u7ed3\u679c\u5c55\u793a\uff0c\u4f46\u65e0\u6cd5\u81ea\u884c\u7ba1\u7406\u95ee\u9898\u6d41\uff0c\u9700\u8981\u8fdb\u884c\u4e8c\u6b21\u5f00\u53d1\uff1b cppcheck\u548cpclint\u7f3a\u5c11web\u7aef\u7ed3\u679c\u5c55\u793a\u3002<\/p>\n<pre><code>   \u4ee5\u4e0b\u91cd\u70b9\u6bd4\u8f83\u5177\u4f53\u68c0\u67e5\u89c4\u5219\u548c\u6709\u6548\u95ee\u9898\u62a5\u9519\u7387\u3002\r\n<\/code><\/pre>\n<p>\uff13\u68c0\u67e5\u89c4\u5219\u5927\u6bd4\u62fc<br \/>\n3.1\u89c4\u5219\u5927\u7c7b<br \/>\n\u9488\u5bf9\u4e1a\u5185\u5927\u91cf\u626b\u63cf\u5de5\u5177\u5728\u5b9e\u9645\u9879\u76ee\u4e2d\u626b\u63cf\u7ed3\u679c\u7684\u5f71\u54cd\u6bd4\u8f83\uff0c\u6211\u4eec\u5c06\u4ee3\u7801\u8d28\u91cf\u95ee\u9898\u5206\u4e3a\u4ee5\u4e0b\u51e0\u5927\u7c7b\uff1a<\/p>\n<p>\u2460 \u81f4\u547d\u7c7b\uff1a\u53ef\u80fd\u5bfc\u81f4\u7a0b\u5e8f\u5b95\u673a\u3001\u65e0\u54cd\u5e94\u7b49\u5f71\u54cd\u8303\u56f4\u6781\u5927\u7684\u9519\u8bef\uff1b<\/p>\n<p>\u2461 \u903b\u8f91\u7c7b\uff1a\u53ef\u80fd\u9020\u6210\u7a0b\u5e8f\u4e0d\u80fd\u8fbe\u5230\u9884\u671f\u903b\u8f91\u7ed3\u679c\u7684\u9519\u8bef\uff1b<\/p>\n<p>\u2462 \u7f16\u7801\u89c4\u8303\u53ca\u5176\u4ed6\u7c7b\uff1a\u53ef\u80fd\u9020\u6210\u7a0b\u5e8f\u7684\u53ef\u8bfb\u6027\u3001\u53ef\u7ef4\u62a4\u6027\u8f83\u5dee\u7684\u9519\u8bef\uff08\u4e0d\u53ef\u8fbe\u4ee3\u7801\uff0c\u65e0\u6548\u7684\u53d8\u91cf\u58f0\u660e\u7b49\uff09\uff1b<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114805730\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n3.2 \u89c4\u5219\u5927\u7c7b\u5206\u5e03<br \/>\n\u6839\u636e3\u5927\u5f71\u54cd\u5206\u7c7b\uff0c\u5176\u4e25\u91cd\u7a0b\u5ea6\u5206\u522b\u4e3a\u9ad8\u3001\u4e2d\u3001\u4f4e\uff0c\u5404\u7c7b\u578b\u89c4\u5219\u6570\u91cf\u5206\u5e03\u4e3a\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114815504\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ece\u89c4\u5219\u5206\u7c7b\u5360\u6bd4\u6765\u770b\uff1a<\/p>\n<p>\u2460 TSC\u9488\u5bf9\u4e92\u8054\u7f51\u4ea7\u54c1\u9ad8\u6548\u5f00\u53d1\u4fee\u590d\u539f\u5219\uff0c\u5de5\u5177\u5b9a\u4f4d\u4e3a\u9488\u5bf9\u81f4\u547d\u548c\u903b\u8f91\u7c7b\u95ee\u9898\uff0c\u76f8\u5bf9\u4f20\u7edf\u3001\u519b\u4e8b\u3001\u5b89\u5168\u9886\u57df\uff0c\u5e76\u4e0d\u5173\u6ce8\u7f16\u7801\u89c4\u8303\u53ca\u7f16\u8bd1\u9519\u8bef\uff1b<\/p>\n<p>\u2461 coverity\u4f5c\u4e3a\u5546\u4e1a\u5316\u8f6f\u4ef6\uff0c\u5728\u4ed8\u8d39\u540e\u6dfb\u52a0\u89c4\u5219\u4e0a\uff0c\u8fbe\u5230\u8986\u76d6\u7387\u6700\u5168\u9762\uff0c\u9664\u81f4\u547d\u548c\u903b\u8f91\u7c7b\u89c4\u5219\u5916\uff0c\u8fd8\u6709\u5927\u91cf\u7f16\u7801\u89c4\u8303\u3001\u5b89\u5168\u548c\u9488\u5bf9\u5176\u4ed6\u8bed\u8a00\uff08\u5982java\uff0cC#\uff09\u7684\u89c4\u5219\uff1b<\/p>\n<p>\u2462 cppcheck\u4f5c\u4e3a\u5f00\u6e90\u5de5\u5177\uff0c\u5e94\u7528\u8303\u56f4\u5e7f\u6cdb\uff0c\u6839\u636e\u5f00\u6e90\u793e\u533a\u573a\u666f\u641c\u96c6\uff0c\u5728\u5404\u65b9\u9762\u90fd\u6709\u89c4\u5219\u6dfb\u52a0\uff0c\u4f46\u573a\u666f\u8f83\u4e3a\u7c97\u72b7\uff0c\u573a\u666f\u867d\u591a\uff0c\u4f46\u6709\u6548\u7387\u4e0d\u9ad8\u3002\u4f8b\u5982\uff1acppcheck\u5728\u521d\u59cb\u5316\u68c0\u67e5\u4e0a\u67095\u4e2a\u5b50\u89c4\u5219\uff0c\u6837\u672c\u4ee3\u7801\u5171\u626b\u63cf\u51fa312\u4e2a\u95ee\u9898\uff0c\u5176\u4e2d\u6709\u6548\u95ee\u9898\u4ec58\u4e2a\uff0c\u6709\u6548\u7387\u4ec5\u4e3a3%\u3002<\/p>\n<p>\u2463 pclint\u4f5c\u4e3a\u5546\u4e1a\u5316\u8f6f\u4ef6\uff0c\u5728\u4ed8\u8d39\u540e\u6dfb\u52a0\u89c4\u5219\u4e0a\uff0c\u8fbe\u5230\u8986\u76d6\u7387\u6700\u5168\u9762\uff0c\u9664\u81f4\u547d\u548c\u903b\u8f91\u7c7b\u89c4\u5219\u5916\uff0c\u8fd8\u6709\u5927\u91cf\u7f16\u7801\u89c4\u8303\u3001\u5b89\u5168\u7684\u89c4\u5219\uff1b<\/p>\n<p>\u2464 clang\u4f5c\u4e3a\u5f00\u6e90\u8f6f\u4ef6\uff0c\u89c4\u5219\u8f83\u5c11\uff0c\u4f46\u89c4\u5219\u7c7b\u578b\u5206\u5e03\u8f83\u4e3a\u5747\u5300\uff0c\u5728\u81f4\u547d\u3001\u903b\u8f91\u7c7b\uff0c\u8fd8\u6709\u7f16\u7801\u89c4\u8303\u3001\u5b89\u5168\u7c7b\u90fd\u6709\u89c4\u5219\u6dfb\u52a0\u3002<\/p>\n<p>3.3\u89c4\u5219\u62a5\u9519\u6570\u91cf<br \/>\n\u6574\u4f53\u89c4\u5219\u6570\u91cf\u4e0a\uff1apclint[915]&gt;coverity[515]&gt;cppcheck[245]&gt;clang[74]&gt;TSC[67]<\/p>\n<p>\u53ef\u4ee5\u770b\u51fapclint\u548ccoverity\u89c4\u5219\u6700\u591a\uff0cTSC\u548cclang\u89c4\u5219\u6700\u5c11\uff0c\u539f\u56e0\u6709\u5982\u4e0b3\u70b9\uff1a<\/p>\n<p>\u2460 pclint\u548ccoverity\u4f5c\u4e3a\u5546\u4e1a\u5316\u8f6f\u4ef6\uff0c\u9700\u6c42\u6765\u6e90\u4e8e\u4f20\u7edf\u8f6f\u4ef6\u3001\u519b\u4e8b\u3001\u5b89\u5168\u5404\u4e2a\u9886\u57df\uff0c\u5176\u89c4\u5219\u603b\u6570\u6700\u591a\uff0c\u5176\u7f16\u7801\u89c4\u8303\u7c7b\u89c4\u5219\u6570\u91cf\u5206\u522b\u9ad8\u8fbe646\u6761\u548c382\u6761\uff1b\u6392\u9664\u6389\u4f4e\u4ef7\u503c\u7684\u7f16\u7801\u89c4\u8303\u7c7b\u89c4\u5219\uff0c\u89c4\u5219\u6570\u91cf\u6392\u5e8f\u4e3a\uff1apclint[269]&gt;cppcheck[151]&gt;coverity[133]&gt;TSC[67]&gt;clang[44]<\/p>\n<p>\u2461 \u5728\u89c4\u5219\u5b9e\u9645\u62a5\u9519\u6570\u91cf\u4e0a\uff0c\u4ee53\u6b3e\u6e38\u620f500\u4e07\u884c\u4ee3\u7801\u7684\u7ed3\u679c\u8986\u76d6\u5ea6\u6765\u770b\uff1b<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114837059\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u6ce8\uff1a\u89c4\u5219\u603b\u6570\u6307\u5de5\u5177\u6240\u6709\u7684\u89c4\u5219\u603b\u6570\uff0c\u62a5\u9519\u89c4\u5219\u6570\u6307\u5f00\u542f\u5de5\u5177\u6240\u6709\u89c4\u5219\u60c5\u51b5\u4e0b\uff0c\u626b\u63cf\u6837\u672c\u4ee3\u7801\u6240\u8986\u76d6\u7684\u89c4\u5219\u6570\u91cf\u3002<\/p>\n<p>\u4ece\u5b9e\u9645\u9879\u76ee\u626b\u63cf\u7ed3\u679c\u6765\u770b\uff1a<\/p>\n<p>\u626b\u63cf\u51fa\u95ee\u9898\u7684\u89c4\u5219\u6570\/\u89c4\u5219\u603b\u6570\uff1aTSC[60%]&gt;cppcheck[27%]&gt;clang[19%]&gt;coverity[10%]&gt;pclint[9%]<\/p>\n<p>pclint\u3001coverity\u3001cppcheck\u867d\u7136\u89c4\u5219\u6570\u91cf\u5f88\u591a\uff0c\u4f46\u56e0\u4e3a\u5176\u5b9a\u5236\u52a0\u5165\u7684\u5927\u90e8\u5206\u89c4\u5219\u666e\u904d\u9002\u7528\u5ea6\u4e0d\u9ad8\uff0c\u5927\u91cf\u89c4\u5219\u53ef\u80fd\u5728\u591a\u4e2a\u9879\u76ee\u4e2d\u90fd\u65e0\u6cd5\u626b\u63cf\u51fa\u95ee\u9898\u3002\u6709\u4e9b\u89c4\u5219\u5374\u5728\u591a\u4e2a\u9879\u76ee\u4e2d\u626b\u63cf\u51fa\u5927\u91cf\u975e\u6838\u5fc3\u7684\u95ee\u9898\uff0c\u5982\uff1a\u51fd\u6570\u6ca1\u6709\u88ab\u8c03\u7528\u3001\u672a\u4f7f\u7528\u7684\u53d8\u91cf\u3001\u5b58\u5728\u591a\u4f59\u7684\u5934\u6587\u4ef6\u7b49\u3002<\/p>\n<p>\u2462 \u89c4\u5219\u6570\u91cf\u591a\u6765\u6e90\u4e8e\u4e24\u4e2a\u65b9\u9762\uff0c\u4e00\u65b9\u9762\u662f\u89c4\u5219\u8986\u76d6\u66f4\u5168\u9762\uff0c\u53e6\u4e00\u65b9\u9762\u662f\u89c4\u5219\u7c92\u5ea6\u5212\u5206\u5f97\u66f4\u7ec6\uff1b<\/p>\n<p>\u901a\u8fc7\u5bf9\u5177\u4f53\u89c4\u5219\u8fdb\u884c\u5206\u6790\uff0c\u53d1\u73b0\u5728\u89c4\u5219\u5212\u5206\u7c92\u5ea6\u7531\u7ec6\u5230\u51fa\u6392\u5e8f\u4e3a[pclint\uff0ccoverity\uff0ccppcheck\uff0cclang\uff0cTSC]<\/p>\n<p>pclint\u548ccoverity\u5212\u5206\u7c92\u5ea6\u6700\u7ec6\uff0ccppcheck\uff0cclang\u6b21\u4e4b\uff0cTSC\u6700\u7c97\u3002<\/p>\n<p>\u4f8b\u5982:coverity\u7684\u96640\u62a5\u9519\u5206\u4e3a\u6574\u578b\u96640\uff0c\u6d6e\u70b9\u6570\u96640\uff0c\u53d6\u6a21\u96640\uff1b\u6570\u7ec4\u4e0b\u6807\u8d8a\u754c\u4e5f\u7ec6\u5206\u4e3a\u8bbf\u95ee\u8d8a\u754c\u3001\u8bfb\u8d8a\u754c\u3001\u5199\u8d8a\u754c\u3002Pclint\u548ccppcheck\u521d\u59cb\u5316\u5206\u4e3a\u53d8\u91cf\u672a\u521d\u59cb\u5316\u3001\u7ed3\u6784\u4f53\u6210\u5458\u672a\u521d\u59cb\u5316\u3001\u7c7b\u6210\u5458\u672a\u521d\u59cb\u5316\u3001string\u672a\u521d\u59cb\u5316\u3001data\u672a\u521d\u59cb\u5316\u3001union\u672a\u521d\u59cb\u5316\u3001\u5168\u5c40\u9759\u6001\u53d8\u91cf\u672a\u521d\u59cb\u5316\u7b49\uff1b\u800cTSC\u5219\u5408\u5e76\u4e86\u4e00\u4e9b\u8fc7\u7ec6\u7684\u89c4\u5219\uff0c\u672a\u521d\u59cb\u5316\u4e0a\u53ea\u5206\u4e3a\u53d8\u91cf\u672a\u521d\u59cb\u5316\u548c\u6210\u5458\u672a\u521d\u59cb\u5316\u3002<\/p>\n<p>\u7c92\u5ea6\u5212\u5206\u8d8a\u7ec6\u65e2\u6709\u4f18\u70b9\u4e5f\u6709\u7f3a\u70b9\uff1a<\/p>\n<p>\u4f18\u70b9\uff1a\u53ef\u4ee5\u9488\u5bf9\u7ec6\u5206\u89c4\u5219\u7075\u6d3b\u914d\u7f6e\u5f00\u5173\uff0c\u5173\u6389\u51c6\u786e\u7387\u4f4e\u7684\u89c4\u5219<\/p>\n<p>\u7f3a\u70b9\uff1a\u89c4\u5219\u6570\u91cf\u592a\u591a\uff0c \u7528\u6237\u914d\u7f6e\u76f8\u5f53\u9ebb\u70e6\uff0c\u65b0\u7528\u6237\u5f88\u96be\u7406\u89e3\u591a\u4e2a\u76f8\u4f3c\u7684\u89c4\u5219\u4e4b\u524d\u7684\u533a\u522b\u3002<\/p>\n<p>TSC\u4e3a\u964d\u4f4e\u7528\u6237\u914d\u7f6e\u96be\u5ea6\uff0c\u5728\u89c4\u5219\u7c92\u5ea6\u5212\u5206\u4e0a\u76f8\u5bf9\u7c97\u72b7\uff0c\u4f46\u4f1a\u4ece\u4e2d\u63d0\u53d6\u51fa\u5176\u4e2d\u51c6\u786e\u7387\u4f4e\u7684\u573a\u666f\uff0c\u4f5c\u4e3a\u5355\u72ec\u89c4\u5219\uff0c\u4ece\u800c\u8fbe\u5230\u53ef\u4ee5\u5173\u6389\u4f4e\u51c6\u786e\u7387\u89c4\u5219\u7684\u76ee\u7684\u3002<\/p>\n<p>4\u540c\u7c7b\u89c4\u5219\u6548\u679c\u5bf9\u6bd4\u5206\u6790<br \/>\n\u672c\u6587\u9488\u5bf9\u6bcf\u4e2a\u5de5\u5177\u5728\u5173\u952e\u62a5\u9519\u9879\uff0c\u5982\uff1a\u7a7a\u6307\u9488\u3001\u8d8a\u754c\u3001\u53d8\u91cf\u672a\u521d\u59cb\u5316\u3001\u5185\u5b58\u6cc4\u9732\u3001\u903b\u8f91\u4e0a\u7684\u62a5\u9519\u7ed3\u679c\u8fdb\u884c\u5206\u6790\u3002<\/p>\n<p>\u6837\u672c\u4ee3\u7801\u2014\u20143\u6b3e\u6e38\u620f\u9879\u76ee\uff08\u7ea6500\u4e07\u884c\u4ee3\u7801\uff09\u4ee3\u7801<\/p>\n<p>\u6d4b\u8bd5\u5bf9\u8c61\u2014\u2014tscancode2.0\u3001coverity7.5\u3001cppcheck1.68\u3001pclint9.0\u3001clang3.4<\/p>\n<p>\u6709\u6548\u62a5\u9519\u6570\u2014\u2014\u67d0\u7c7b\u89c4\u5219\u57283\u6b3e\u6e38\u620f\u9879\u76ee\u7684\u6709\u6548\u62a5\u9519\u6570\u603b\u548c<\/p>\n<p>\u51c6\u786e\u7387\u2014\u2014\u67d0\u7c7b\u89c4\u5219\u57283\u6b3e\u6e38\u620f\u9879\u76ee\u7684\u5e73\u5747\u51c6\u786e\u7387\uff0c\u51c6\u786e\u7387=\u6709\u6548\u62a5\u9519\u6570\/\u62a5\u9519\u603b\u6570*100%<\/p>\n<p>\u7efc\u5408\u8bc4\u5206\u2014\u2014\u7efc\u5408\u6709\u6548\u62a5\u9519\u6570\u548c\u51c6\u786e\u7387\u7684\u8bc4\u5206\uff0c\u6709\u6548\u62a5\u9519\u6570\u548c\u51c6\u786e\u7387\u7684\u6743\u503c\u6682\u5b9a\u4e3a45\uff1a55\uff0c\u7efc\u5408\u8bc4\u5206=\u6709\u6548\u62a5\u9519\/\u6700\u5927\u6709\u6548\u62a5\u9519\u6570*100*45%+\u51c6\u786e\u7387*100*55%<\/p>\n<p>4.1\u7a7a\u6307\u9488\u89c4\u5219<br \/>\n\u7a7a\u6307\u9488\u68c0\u67e5\u89c4\u5219\u4e3b\u8981\u68c0\u67e5\u662f\u5426\u5b58\u5728\u5bf9\u8d4b\u503c\u4e3a\u7a7a\u7684\u6307\u9488\u89e3\u5f15\u7528\u7684\u60c5\u51b5\uff0c\u7a7a\u6307\u9488\u662fc\/c++\u4e2d\u6700\u5927\u7684\u95ee\u9898\uff0c\u7ecf\u5e38\u9020\u6210\u7a0b\u5e8f\u5d29\u6e83\u7684\u81f4\u547d\u9519\u8bef\u3002\u56e0\u6b64\uff0cC++\u9759\u6001\u4ee3\u7801\u5206\u6790\u5de5\u5177\u5bf9\u7a7a\u6307\u9488\u7684\u68c0\u67e5\u80fd\u529b\u663e\u5f97\u5c24\u4e3a\u91cd\u8981\u3002<\/p>\n<p>\u56fe\u4e3a\u4e94\u4e2a\u5de5\u5177\u5bf9\u6837\u672c\u4ee3\u7801\u626b\u63cf\u7ed3\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114845488\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114851215\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ece\u62a5\u9519\u6570\u91cf\u548c\u51c6\u786e\u7387\u6765\u770b\uff1a<\/p>\n<p>\u6709\u6548\u62a5\u9519\u6570\uff1aTSC [401] &gt;coverity[219]&gt;&gt;clang[57] &gt;cppcheck[20]&gt;pclint[14]<\/p>\n<p>\u51c6\u786e\u7387\uff1a coverity[95%]\u2248TSC[92%] \u2248clang[90%]&gt;&gt;cppcheck[28%]&gt;pclint[14%]<\/p>\n<p>\u7efc\u5408\u8bc4\u5206\uff1a TSC[96\u5206] &gt;coverity[77\u5206] &gt;clang[56\u5206]&gt;cppcheck[18\u5206]&gt;pclint[8\u5206]<\/p>\n<p>1. \u4ece\u51c6\u786e\u7387\u6765\u770b\uff0c\u5728\u7a7a\u6307\u9488\u68c0\u67e5\u65b9\u9762\uff0c\u4e0d\u8003\u8651\u626b\u63cf\u6548\u7387\u548c\u626b\u63cf\u73af\u5883\u642d\u5efa\u590d\u6742\u5ea6\uff0cTSC\u3001coverity\u548cclang\u90fd\u5f88\u4f18\u79c0\uff0c\u4e09\u8005\u51c6\u786e\u7387\u90fd\u5f88\u9ad8\u3002cppcheck, pclint\u5728\u7ed3\u679c\u51c6\u786e\u7387\u4e0a\u548c\u6570\u91cf\u4e0a\u90fd\u8f83\u5dee\uff0c\u4e0d\u63a8\u8350\u4f7f\u7528\u3002<\/p>\n<p>2. \u4ece\u7a7a\u6307\u9488\u89c4\u5219\u7ec6\u5206\u7a0b\u5ea6\u6765\u770b,TSC\u548ccoverity\u76f8\u5f53\uff0c\u7ec6\u5206\u573a\u666f\u6316\u6398\u66f4\u591a\uff0ccppcheck\u89c4\u5219\u5e76\u672a\u7ec6\u5206\u7a7a\u6307\u9488\u89c4\u5219\uff0c\u4ece\u5b9e\u9645\u9879\u76ee\u7ed3\u679c\u6765\u770b\uff0c\u53ea\u80fd\u68c0\u67e5\u51fadereferenceBeforeCheck\u573a\u666f\u7684\u9519\u8bef\u3002Clang\u548cpclint\u5728\u7a7a\u6307\u9488\u7ec6\u5206\u4e0a\u7ef4\u5ea6\u8ddfTSC\u548ccoverity\u4e0d\u540c\uff0c\u6bd4\u5982\uff1a\u5b83\u4eec\u533a\u5206\u662f\u53c2\u6570\u6307\u9488\u89e3\u5f15\u7528\u8fd8\u662f\u5c40\u90e8\u53d8\u91cf\u89e3\u5f15\u7528\uff0c\u7ec6\u5206\u7c92\u5ea6\u4e0d\u591f\u4e14\u8986\u76d6\u573a\u666f\u8f83\u5c11\uff0c\u5176\u8986\u76d6\u573a\u666f\u57fa\u672c\u90fd\u88abTSC\u548ccoverity\u5305\u542b\u3002<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114859012\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\ncppcheck\u626b\u63cf\u51fa\u6765\u7684\u95ee\u9898\u5b58\u5728\u5927\u91cf\u8bef\u62a5\uff0c\u8bef\u62a5\u4e3b\u8981\u662f\u5197\u4f59\u7684\u5224\u7a7a\uff0c\u5e76\u4e0d\u4f1a\u5f15\u8d77\u5b9e\u9645\u95ee\u9898\uff0c\u5177\u4f53\u8bef\u62a5\u573a\u666f\u5982\u4e0b\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114908988\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n3. \u4ece\u6709\u6548\u62a5\u9519\u6570\u91cf\u4e0a\uff0cTSC\u6709\u6548\u62a5\u9519\u6570\u91cf\u66f4\u591a\uff0c\u7ec6\u5206\u573a\u666f\u6316\u6398\u66f4\u591a\uff0c\u65e0\u7591\u662f\u626b\u63cf\u7a7a\u6307\u9488\u6700\u4f73\u9009\u62e9\uff1bclang\u8986\u76d6\u7684\u573a\u666f\u8f83\u5c11\uff0c\u5176\u6709\u6548\u62a5\u9519\u57fa\u672c\u90fd\u80fd\u88abcoverity\u548cTSC\u8986\u76d6\uff0c\u4e0d\u8fc7\u7531\u4e8e\u5176\u51c6\u786e\u7387\u8f83\u9ad8\u4e14\u514d\u8d39\uff0c\u4e0eTSC\u642d\u914d\u4f7f\u7528\u4e5f\u662f\u4e0d\u9519\u7684\u9009\u62e9\uff1b\u800ccoverity\u867d\u7136\u8986\u76d6\u573a\u666f\u591a\u4f46\u56e0\u4e3a\u53ea\u4f1a\u62a5\u5b8c\u5168\u53ef\u4fe1\u7684\u95ee\u9898\uff0c\u56e0\u6b64\u4f1a\u6f0f\u6389\u90e8\u5206\u6709\u6548\u62a5\u9519\uff0c\u4f8b\u5982\uff1a\u6307\u9488\u53d8\u91cf\u6765\u6e90\u4e8e\u51fd\u6570\u8fd4\u56de\u503c\uff0c\u800c\u51fd\u6570\u8fd4\u56de\u503c\u662f\u5426\u4e3aNULL\u4f9d\u8d56\u4e8e\u7528\u6237\u8f93\u5165\uff0c\u5728\u9759\u6001\u5206\u6790\u4e2dcoverity\u65e0\u6cd5\u5224\u65ad\u5176\u662f\u5426\u4f1a\u4e3aNULL\uff0c\u4e3a\u4fdd\u8bc1\u51c6\u786e\u7387\u4f1a\u6f0f\u6389\u8be5\u6307\u9488\u62a5\u9519\u3002\u82e5\u9879\u76ee\u5bf9\u7a7a\u6307\u9488\u6f0f\u62a5\u5bb9\u5fcd\u5ea6\u8f83\u9ad8\uff0c\u4e14\u6709\u8db3\u591f\u9884\u7b97\u91c7\u8d2d\u5546\u4e1a\u8f6f\u4ef6\uff0c\u53ef\u4ee5\u9009\u62e9coverity\uff1b\u800ccppcheck\u548cpclint\u68c0\u67e5\u51fa\u7684\u6709\u6548\u95ee\u9898\u6781\u5c11\u5e76\u4f34\u968f\u5927\u91cf\u8bef\u62a5\uff0c\u540c\u4e0a\u7ed3\u8bba\uff0c\u4e0d\u5b9c\u4f7f\u7528\u3002<\/p>\n<p>4. \u5728\u6613\u7528\u6027\u4e0a\uff0ccoverity\u548cclang\u7f16\u8bd1\u73af\u5883\u6784\u5efa\u590d\u6742\uff0c\u7f16\u8bd1\u65f6\u957f\u589e\u52a0\u8f83\u591a\uff1bTSC\u5728\u6613\u7528\u6027\u4e0a\u4e5f\u6709\u4e00\u4e2a\u7f3a\u70b9\uff0c\u5373\u4e3a\u63d0\u9ad8\u51c6\u786e\u7387\uff0c\u5728\u4e2a\u522b\u9879\u76ee\u5b58\u5728\u4e00\u6b21\u6027\u914d\u7f6e\u5de5\u4f5c\u3002\u539f\u56e0\u662f\u4e2a\u522b\u9879\u76ee\u5b58\u5728\u81ea\u5b9a\u4e49\u5224\u7a7a\u5b8f\uff0c\u4f46\u7531\u4e8e\u4e0d\u4f9d\u8d56\u7f16\u8bd1\uff0cTSC\u626b\u63cf\u7684\u4ee3\u7801\u53ef\u80fd\u5e76\u4e0d\u5b8c\u6574\uff0c\u5bfc\u81f4\u4e2a\u522b\u81ea\u5b9a\u4e49\u5224\u7a7a\u5b8f\u627e\u4e0d\u5230\uff0c\u9700\u8981\u5728cfg.ini\u4e2d\u914d\u7f6e\u81ea\u5b9a\u4e49\u5224\u7a7a\u5b8f\u3002\u5f53\u7136\uff0c\u5982\u679c\u626b\u63cf\u7684\u4ee3\u7801\u5b8c\u6574\u5ea6\u540c\u7f16\u8bd1\u73af\u5883\uff0c\u5219\u65e0\u6b64\u95ee\u9898\u3002<\/p>\n<p>4.2\u8d8a\u754c\u89c4\u5219<br \/>\n\u8d8a\u754c\u4e00\u822c\u6765\u8bb2\u662f\u6307\u6570\u7ec4\u4e0b\u6807\u8d8a\u754c\uff0c\u6216\u8005\u7f13\u51b2\u533a\u8bfb\u5199\u8d8a\u754c\u3002\u8fd9\u7c7b\u9519\u8bef\u4f1a\u5bfc\u81f4\u975e\u6cd5\u5185\u5b58\u7684\u8bbf\u95ee\uff0c\u5f15\u53d1\u7a0b\u5e8f\u5d29\u6e83\u6216\u8005\u9519\u8bef\u3002<\/p>\n<p>\u4e0b\u56fe\u662f\u4e94\u4e2a\u5de5\u5177\u5bf9\u6837\u672c\u4ee3\u7801\u626b\u63cf\u7ed3\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114916044\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114922676\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u6ce8\uff1a\u8d8a\u754c\u5bf9\u8bef\u62a5\u5224\u5b9a\u7684\u89c4\u5219\u6bd4\u8f83\u4e25\u683c\uff0c\u5373\u4f7f\u573a\u666f\u8bc6\u522b\u672c\u8eab\u65e0\u8bef\uff0c\u4f46\u662f\u901a\u8fc7\u4ee3\u7801\u903b\u8f91\u53ef\u4ee5\u63a8\u65ad\u8be5\u573a\u666f\u4e0d\u4f1a\u8d8a\u754c\u7684\u4e5f\u5224\u5b9a\u4e3a\u8bef\u62a5\u3002<\/p>\n<p>\u4f8b\u5982\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114929926\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u8fd9\u91cc\u7531found\u53d8\u91cf\u95f4\u63a5\u63a8\u65ad\u51fadata[region_index]\u4e0d\u4f1a\u8d8a\u754c\uff0c\u5c06\u5176\u5224\u5b9a\u4e3a\u8bef\u62a5\u3002<\/p>\n<p>\u4ece\u62a5\u9519\u6570\u91cf\u548c\u51c6\u786e\u7387\u6765\u770b\uff1a<\/p>\n<p>\u6709\u6548\u62a5\u9519\u6570\uff1acoverity[98]&gt;&gt;TSC [18]&gt;pclint[16] &gt;cppcheck[6]&gt; clang[4]<\/p>\n<p>\u51c6\u786e\u7387\uff1a clang[100%] &gt;coverity[80%]&gt;TSC[70%] &gt;cppcheck[67%]&gt;&gt;pclint[2%]<\/p>\n<p>\u7efc\u5408\u8bc4\u5206\uff1acoverity[90\u5206] &gt;TSC[54\u5206]\u2248clang[55\u5206]&gt;cppcheck[40\u5206]&gt;pclint[1\u5206]<\/p>\n<p>1. \u5728\u62a5\u9519\u6570\u91cf\u4e0a\uff0ccoverity\u5728\u8d8a\u754c\u68c0\u67e5\u4e0a\u6709\u8f83\u5927\u7684\u4f18\u52bf\uff0c\u56e0\u4e3acoverity\u6709\u8f83\u5f3a\u7684\u7b26\u53f7\u67e5\u627e\u548c\u573a\u666f\u8bc6\u522b\u80fd\u529b\uff0c\u80fd\u8bc6\u522b\u76f8\u5bf9\u590d\u6742\u7684\u8d8a\u754c\u573a\u666f\u3002\u5176\u4ed6\u56db\u4e2a\u5de5\u5177\u540ccoverity\u76f8\u6bd4\u8fd8\u6709\u5dee\u8ddd\uff0c\u5176\u4e2dpclint\u5b58\u5728\u5927\u91cf\u8bef\u62a5\uff0c\u8868\u73b0\u6700\u5dee\u3002\u5982\uff1aTSC\u548ccppcheck\u53ea\u80fd\u8bc6\u522b\u6570\u7ec4\u53d8\u91cf\u672c\u8eab\u8d8a\u754c\uff0c\u4f46\u5982\u679c\u662f\u4e00\u4e2a\u6307\u9488p\u6307\u5411\u6570\u7ec4\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\uff0c\u901a\u8fc7p[i]\u8bbf\u95ee\u65f6\u7684\u8d8a\u754c\uff0cTSC\u548ccppcheck\u90fd\u65e0\u6cd5\u68c0\u67e5\uff0c\u800ccoverity\u80fd\u627e\u5230p\u6240\u6307\u5411\u7684\u6570\u7ec4\u5b9a\u4e49\uff0c\u5f97\u5230\u6570\u7ec4\u5927\u5c0f\uff0c\u4ece\u800c\u5224\u65adp[i]\u662f\u5426\u8d8a\u754c\u3002<\/p>\n<p>2. clang\u8d8a\u754c\u8fd9\u5757\u7684\u51c6\u786e\u7387\u867d\u7136\u6700\u9ad8\u4e3a100%\uff0c\u4f46\u5176\u8986\u76d6\u7684\u573a\u666f\u5355\u4e00\uff08strncpy\u4f7f\u7528\u8d8a\u754c\u62a5\u4e864\u6761\uff09\uff0c\u5176\u62a5\u9519\u90fd\u88abTSC\u548ccoverity\u8986\u76d6\uff0c\u6570\u91cf\u4e0a\u548c\u5176\u4ed6\u5de5\u5177\u6709\u8f83\u5927\u5dee\u8ddd\u3002TSC\u8d8a\u754c\u68c0\u67e5\u7ed3\u679c\u8981\u7565\u597d\u4e8ecppcheck\uff0cclang\u548cpclint\uff0cTSC\u589e\u52a0\u4e86\u5bf9\u53d8\u91cf\u53d6\u503c\u8303\u56f4\u7684\u63a8\u65ad\uff0c\u68c0\u6d4b\u51fa\u662f\u5426\u5b58\u5728\u8d8a\u754c\u7684\u98ce\u9669\u3002\u6bd4\u5982\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114937504\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\uff08TSC\u8d8a\u754c\u6709\u6548\u62a5\u9519\u573a\u666f\uff09<\/p>\n<p>\u5bf9\u4e8e\u6570\u7ec4\u4e0b\u6807iCountry\u7684\u5224\u5b9a\u5b58\u5728\u98ce\u9669\uff0c\u4ee3\u7801\u6267\u884c\u5230\u5f53\u524d\u4e0a\u4e0b\u6587\u65f6\uff0ciCountry\u53ef\u80fd\u53d6\u503c\u4e3aMAX_QT_COUNTRY_JIFEN_ITEM_CNT\uff0c\u800c\u8fd9\u6b63\u662f\u6570\u7ec4m_astDataInDB\u7684\u957f\u5ea6\uff0c\u4e5f\u5c31\u662f\u8bf4\u5728\u8fd9\u79cd\u8fb9\u754c\u60c5\u51b5\u4e0b\u4f1a\u9020\u6210\u4e86\u6570\u7ec4\u8bbf\u95ee\u8d8a\u754c\u3002\u5bf9\u4e8e\u5982\u4e0a\u573a\u666f\uff0c\u5e94\u8be5\u5c06\u4ee3\u7801\u4fee\u6539\u4e3aiCountry&gt;= MAX_QT_COUNTRY_JIFEN_ITEM_CNT\u3002<\/p>\n<p>4.3\u53d8\u91cf\u672a\u521d\u59cb\u5316\u89c4\u5219<br \/>\n\u53d8\u91cf\u672a\u521d\u59cb\u5316\u987e\u540d\u601d\u4e49\uff1a\u53d8\u91cf\u58f0\u660e\u540e\u6ca1\u6709\u8d4b\u521d\u503c\uff0c\u5176\u5206\u914d\u7684\u5185\u5b58\u503c\u662f\u968f\u673a\u7684\u3002\u8fd9\u4e5f\u662f\u4ee3\u7801\u4e2d\u5bb9\u6613\u51fa\u73b0\u7684\u95ee\u9898\uff0c\u4f1a\u5bfc\u81f4\u4e0d\u786e\u5b9a\u7684\u7a0b\u5e8f\u884c\u4e3a\uff0c\u9020\u6210\u4e25\u91cd\u7684\u540e\u679c\u3002<\/p>\n<p>\u4e0b\u56fe\u662f\u4e94\u4e2a\u5de5\u5177\u5bf9\u6837\u672c\u4ee3\u7801\u626b\u63cf\u7ed3\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114944248\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527114951498\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u6ce8\uff1a\u7ed3\u679c\u6392\u9664\u4e863\u4e2a\u5de5\u5177\u90fd\u6709\u7684\u68c0\u67e5\u9879\u2014\u2014\u6784\u9020\u51fd\u6570\u4e2d\u662f\u5426\u5b58\u5728\u672a\u521d\u59cb\u5316\u6210\u5458\u53d8\u91cf\u3002\u5728\u5b9e\u9645\u9879\u76ee\u4e2d\u53d1\u73b0\uff0cC++\u7c7b\u6784\u9020\u51fd\u6570\u4e2d\u5bf9\u6210\u5458\u53d8\u91cf\u4e0d\u505a\u521d\u59cb\u5316\u7684\u60c5\u51b5\u662f\u666e\u904d\u7684\uff0c\u5f88\u591a\u4ee3\u7801\u4f1a\u91c7\u7528\u201c\u5ef6\u8fdf\u521d\u59cb\u5316\u201d\uff0c\u5373\u5728\u5b9e\u9645\u7528\u5230\u8be5\u5bf9\u8c61\u7684\u65f6\u5019\u8c03\u7528\u7c7b\u4f3cInitialize\u7684\u65b9\u6cd5\u8fdb\u884c\u521d\u59cb\u5316\u3002\u56e0\u6b64\u5728\u6b64\u6b21\u5bf9\u6bd4\u4e2d\u5e76\u6ca1\u6709\u628a\u8fd9\u6761\u89c4\u5219\u7eb3\u5165\u8fdb\u6765\u3002<\/p>\n<p>\u4ece\u62a5\u9519\u6570\u91cf\u548c\u51c6\u786e\u7387\u6765\u770b\uff1a<\/p>\n<p>\u6709\u6548\u62a5\u9519\u6570\uff1acoverity[75]&gt;&gt;pclint[25] &gt;TSC [9]&gt;cppcheck[8]&gt; clang[1]<\/p>\n<p>\u51c6\u786e\u7387\uff1a TSC[75%] &gt;coverity[68%]&gt;pclint[26%] &gt; clang[17%] &gt;cppcheck[3%]<\/p>\n<p>\u7efc\u5408\u8bc4\u5206\uff1acoverity[82\u5206] &gt; TSC[47\u5206] &gt;pclint[30\u5206] &gt; clang[10\u5206] &gt;cppcheck[6\u5206]<\/p>\n<p>1. \u5728\u62a5\u9519\u6570\u91cf\u4e0a\uff0ccoverity\u521d\u59cb\u5316\u68c0\u67e5\u573a\u666f\u8986\u76d6\u6bd4\u5176\u4ed6\u56db\u4e2a\u5de5\u5177\u8981\u5168\uff0cTSC\u4e3a\u4fdd\u6301\u51c6\u786e\u7387\uff0c\u89c4\u5219\u8986\u76d6\u4e0a\u6bd4\u8f83\u4fdd\u5b88\uff0c\u800ccppcheck\u5b58\u5728\u6bd4\u8f83\u4e25\u91cd\u7684\u8bef\u62a5\u95ee\u9898\uff0c\u51c6\u786e\u7387\u4ec5\u4e3a3%\u3002pclint\u7684\u8bef\u62a5\u4e5f\u76f8\u5bf9\u5f88\u9ad8\uff0cclang\u5728\u521d\u59cb\u5316\u8fd9\u5757\u663e\u5f97\u65e0\u80fd\u4e3a\u529b\u3002\u4ece\u4e0a\u56fe\u53ef\u4ee5\u5f88\u5bb9\u6613\u53d1\u73b0cppcheck\u7684\u8bef\u62a5\u6570\u91cf\u76f8\u5f53\u5f97\u9ad8\uff0ccppcheck\u4f1a\u5c06\u5982\u4e0b\u7684\u573a\u666f\u5224\u5b9a\u4e3a\u672a\u521d\u59cb\u5316\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115001936\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\uff08cppcheck\u8bef\u62a5\u573a\u666f\uff09<\/p>\n<p>SMD_POS\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u7ed3\u6784\u4f53\uff0c\u5b83\u5305\u542b\u4e86\u4e00\u4e2a\u7a7a\u7684\u6784\u9020\u51fd\u6570\uff0ccppcheck\u4f9d\u636e\u8fd9\u70b9\u5224\u5b9a\u8fd9\u662f\u4e00\u4e2a\u672a\u521d\u59cb\u5316\u7684\u9519\u8bef\u3002\u4f46\u8fd9\u6837\u7684\u573a\u666f\u4e0d\u4f1a\u6709\u4ec0\u4e48\u95ee\u9898\uff0c\u7b97\u662f\u4e00\u4e2a\u8bef\u62a5\u3002\u8fd9\u5bfc\u81f4\u4e86cppcheck\u5728\u672a\u521d\u59cb\u5316\u89c4\u5219\u7684\u7ed3\u679c\u53ef\u4fe1\u5ea6\u5927\u5927\u964d\u4f4e\u3002<\/p>\n<p>2. coverity\u5728\u672a\u521d\u59cb\u5316\u8fd9\u5757\u7684\u573a\u666f\u8986\u76d6\u6bd4\u8f83\u5168\uff0c\u7279\u522b\u662f\u5bf9\u7ed3\u6784\u4f53\u5bf9\u8c61\u7684\u5b57\u6bb5\u7684\u521d\u59cb\u5316\u60c5\u51b5\u7684\u68c0\u6d4b\uff0c\u56e0\u4e3a\u5176\u57fa\u4e8e\u7f16\u8bd1\u53ef\u5bf9\u53d8\u91cf\u505a\u8def\u5f84\u8ddf\u8e2a\uff0c\u4f8b\u5982\uff1a\u6784\u9020\u51fd\u6570\u91cc\u9762\u8c03\u7528\u4e86init()\u51fd\u6570\uff0ccoverity\u4f1a\u7ee7\u7eed\u8ddf\u8e2ainit()\u51fd\u6570\u4e2d\u662f\u5426\u6709\u5bf9\u53d8\u91cf\u7684\u8d4b\u503c\uff0c\u6240\u4ee5\u626b\u63cf\u8986\u76d6\u573a\u666f\u6700\u5168\u3002coverity\u7684\u8bef\u62a5\u4e3b\u8981\u5206\u4e3a\u4e24\u7c7b\uff1a\u4e00\u7c7b\u662f\u5bf9\u51e0\u79cd\u672a\u521d\u59cb\u5316\u573a\u666f\u7684\u8bc6\u522b\u4e0a\u5b58\u5728\u95ee\u9898\uff0c\u5982\uff1a\uff0c\u53d8\u91cf\u5728\u67d0\u4e2a\u5206\u652f\u7684\u786e\u6ca1\u6709\u521d\u59cb\u5316\uff0c\u4f46\u7528\u4e86\u4e00\u4e2a\u72b6\u6001\u6807\u8bc6\u5176\u672a\u521d\u59cb\u5316\uff0c\u5f53\u4f7f\u7528\u8fd9\u4e2a\u53d8\u91cf\u524d\u4f1a\u4f7f\u7528\u72b6\u6001\u6807\u8bb0\u6765\u5224\u65ad\u5176\u662f\u5426\u6ca1\u6709\u521d\u59cb\u5316\uff0c\u4fdd\u8bc1\u4f7f\u7528\u7684\u53d8\u91cf\u90fd\u662f\u521d\u59cb\u5316\u8fc7\u4e86\u7684\u3002\u53e6\u4e00\u7c7b\u5c31\u662f\u4e0a\u9762\u63d0\u5230\u7684\u201c\u4f4e\u4ef7\u503c\u62a5\u9519\u201d\uff0c\u5373\u901a\u8fc7\u4ee3\u7801\u903b\u8f91\u6216\u8005\u505a\u4e86\u4ee3\u7801\u4fdd\u62a4\uff0c\u4fdd\u8bc1\u53d8\u91cf\u4e0d\u4f1a\u56e0\u4e3a\u6ca1\u6709\u521d\u59cb\u5316\u800c\u4ea7\u751f\u5b9e\u9645\u7684\u95ee\u9898\u3002\u5982\uff1a\u4e00\u4e2a\u8868\u793a\u65f6\u95f4\u7684\u7ed3\u6784\u4f53\uff0c\u91cc\u9762\u5b57\u6bb5\u6709year,month,day,hour,min,day\u8fd9\u4e2a\u5b57\u6bb5\u6ca1\u6709\u521d\u59cb\u5316\uff0c\u4f46\u5b9e\u9645\u4ee3\u7801\u4e2d\u4e5f\u6ca1\u6709\u7528\u5230\u8fd9\u4e2a\u5b57\u6bb5\uff0c\u56e0\u6b64\u5e76\u4e0d\u4f1a\u4ea7\u751f\u4efb\u4f55\u95ee\u9898\u3002<\/p>\n<p>TSC\u5728\u672a\u521d\u59cb\u5316\u53d8\u91cf\u7684\u68c0\u67e5\u56e0\u4e0d\u5177\u5907\u8def\u5f84\u5206\u6790\u80fd\u529b\uff0c\u800c\u4ee5\u5206\u652f\u4f5c\u7528\u57df\u68c0\u67e5\u7279\u5b9a\u53d8\u91cf\u5728\u5404\u4e2a\u4ee3\u7801\u5206\u652f\u7684\u521d\u59cb\u5316\u60c5\u51b5\uff0c\u8bef\u62a5\u7387\u4fdd\u6301\u5728\u76f8\u5bf9\u4f4e\u7684\u4e00\u4e2a\u6c34\u5e73\u3002\u4f46\u573a\u666f\u8986\u76d6\u8f83\u5c11\uff0c\u6ca1\u6709\u9488\u5bf9\u7ed3\u6784\u4f53\u5b57\u6bb5\u7684\u521d\u59cb\u5316\u573a\u666f\u505a\u8986\u76d6\u3002\u56e0\u4e3a\u5bf9\u7ed3\u6784\u5b57\u6bb5\u7684\u521d\u59cb\u5316\u65b9\u5f0f\u76f8\u5bf9\u6bd4\u8f83\u591a\u6837\uff1a\u9010\u4e2a\u5b57\u6bb5\u521d\u59cb\u5316\uff0c\u51fd\u6570\u8c03\u7528\u521d\u59cb\u5316\uff0c\u6784\u9020\u51fd\u6570\u521d\u59cb\u5316\u7b49\u3002<\/p>\n<p>4.4\u5185\u5b58\/\u8d44\u6e90\u6cc4\u9732\u89c4\u5219<br \/>\n\u5185\u5b58\u6cc4\u6f0f\u6307\u7531\u4e8e\u758f\u5ffd\u6216\u9519\u8bef\u9020\u6210\u7a0b\u5e8f\u672a\u80fd\u91ca\u653e\u5df2\u7ecf\u4e0d\u518d\u4f7f\u7528\u7684\u5185\u5b58\uff0c\u4ece\u800c\u9020\u6210\u4e86\u5185\u5b58\u6d6a\u8d39\u7684\u60c5\u51b5\u3002\u5185\u5b58\u6cc4\u6f0f\u662f\u9759\u6001\u4e0b\u5f88\u96be\u68c0\u6d4b\u7684\u4e00\u79cd\u9519\u8bef\uff0c\u4e00\u822c\u9700\u8981\u52a8\u6001\u5206\u6790\u5de5\u5177\u8fdb\u884c\u68c0\u6d4b\uff0c\u5982valgrind\u5de5\u5177\u4f1a\u6355\u83b7malloc()\/free()\/new\/delete\u7684\u8c03\u7528\uff0c\u76d1\u63a7\u5185\u5b58\u5206\u914d\u548c\u91ca\u653e\uff0c\u4ece\u52a8\u6001\u4e0a\u68c0\u6d4b\u7a0b\u5e8f\u662f\u5426\u5b58\u5728\u5185\u5b58\u6cc4\u6f0f\u3002\u56e0\u6b64\uff0c\u9759\u6001\u4ee3\u7801\u5206\u6790\u80fd\u68c0\u67e5\u7684\u5185\u5b58\u6cc4\u6f0f\u5c31\u975e\u5e38\u6709\u9650\u4e86\uff0c\u5f53\u524d\u5404\u5de5\u5177\u4e3b\u8981\u662f\u4ece\u4ee3\u7801\u5199\u6cd5\u4e0a\u68c0\u67e5\u5185\u5b58\u5206\u914d\u548c\u91ca\u653e\u662f\u5426\u914d\u5bf9\u4f7f\u7528\u3002\u6bd4\u5982\uff1afopen\u6253\u5f00\u6587\u4ef6\u540e\u5728\u9000\u51fa\u51fd\u6570\u524d\u662f\u5426\u6709\u6267\u884cfclose\uff0cnew[]\u548cdelete[]\u662f\u5426\u914d\u5bf9\u4f7f\u7528\u7b49\u3002<\/p>\n<p>\u4e0b\u56fe\u662f\u4e94\u4e2a\u5de5\u5177\u5bf9\u6837\u672c\u4ee3\u7801\u626b\u63cf\u7ed3\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115020061\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115049047\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u6ce8\uff1a\u4ee5\u4e0a\u6570\u636e\u6392\u9664\u4e86cppcheck35\u4e2a\u4f4e\u4ef7\u503c\u62a5\u9519\uff0c\u8fd9\u91cc\u6392\u9664\u7684cppcheck35\u4e2a\u62a5\u9519\u90fd\u662f\u57fa\u672c\u6570\u636e\u7c7b\u578b\u7684new\u548cdelete\u4e0d\u5339\u914d\uff08\u5982char* p=new char[100];delete p;\uff09\u867d\u7136\u8fd9\u79cd\u5199\u6cd5\u4e0d\u89c4\u8303\uff0c\u4f46\u7531\u4e8e\u5b9e\u9645\u4e0a\u4e0d\u4f1a\u9020\u6210\u5185\u5b58\u6cc4\u6f0f\uff0c\u5f88\u591a\u9879\u76ee\u4e0d\u4f1a\u5bf9\u6b64\u8fdb\u884c\u4fee\u590d\u3002<\/p>\n<p>\u4ece\u62a5\u9519\u6570\u91cf\u548c\u51c6\u786e\u7387\u6765\u770b\uff1a<\/p>\n<p>\u6709\u6548\u62a5\u9519\u6570\uff1apclint[55] &gt;TSC[40]&gt;coverity [29]&gt;cppcheck[28]&gt; clang[0]<\/p>\n<p>\u51c6\u786e\u7387\uff1a coverity[100%]=cppcheck[100%] &gt;TSC[73%]&gt;pclint[23%] &gt; clang[N\/A]<\/p>\n<p>\u7efc\u5408\u8bc4\u5206\uff1acoverity[79\u5206] \u2248 TSC [73\u5206]\u2248cppcheck[77\u5206]&gt;pclint[57\u5206]&gt;clang[0\u5206]<\/p>\n<p>\u4ece\u62a5\u9519\u6570\u91cf\u4e0a\u770b\u51fa\uff0c\u5728\u5185\u5b58\u6cc4\u6f0f\u68c0\u67e5\u65b9\u9762\uff0cpclint\u867d\u7136\u53d1\u73b0\u6709\u6548\u95ee\u9898\u6700\u591a\uff0c\u4f46\u8bef\u62a5\u5f88\u9ad8\uff0c\u4e0d\u63a8\u8350\u4f7f\u7528\u3002TSC\u7684\u6709\u6548\u9519\u8bef\u6570\u6bd4coverity\u548ccppcheck\u591a\uff0c\u4f46\u8bef\u62a5\u4e5f\u76f8\u5bf9\u8f83\u9ad8\u3002clang\u5219\u4e0d\u5177\u5907\u6cc4\u9732\u7c7b\u573a\u666f\u7684\u68c0\u6d4b\u80fd\u529b\u3002<\/p>\n<p>\u6ce8\uff1a\u7531\u4e8e\u9759\u6001\u626b\u63cf\u80fd\u68c0\u67e5\u7684\u5185\u5b58\u6cc4\u9732\u573a\u666f\u90fd\u975e\u5e38\u660e\u786e\uff0c\u56e0\u6b64\u4e00\u822c\u90fd\u4e0d\u4f1a\u51fa\u73b0\u95ee\u9898\uff0cTSC\u768415\u4e2a\u8bef\u62a5\u4e5f\u975e\u573a\u666f\u8bc6\u522b\u6709\u8bef\u800c\u662f\u5de5\u5177\u5e95\u5c42bug\u5bfc\u81f4\uff0c\u540e\u7eed\u4f1a\u5bf9\u5e95\u5c42bug\u8fdb\u884c\u4fee\u590d\u3002\u5982\uff1a#ifdef \u548c#else\u5206\u652f\u4e2d\u5404\u6709\u4e00\u4e2afopen\uff0c\u5b9e\u9645\u7f16\u8bd1\u65f6\u53ea\u4f1a\u8d70\u5176\u4e2d1\u4e2a\u5206\u652f\u8bc6\u522b1\u6b21fopen\uff0c\u4f46\u7531\u4e8e\u5e95\u5c42bug\u8bc6\u522b\u4e862\u6b21fopen\uff0c\u5bfc\u81f4\u8bef\u62a5\u3002<\/p>\n<p>4.5\u903b\u8f91\u9519\u8bef\u89c4\u5219<br \/>\n\u903b\u8f91\u9519\u8bef:\u6307\u53ef\u80fd\u5b58\u5728\u7684\u903b\u8f91\u95ee\u9898\uff0c\u5982if\u4e0d\u540c\u5206\u652f\u5185\u5bb9\u76f8\u540c,\u5728switch\u5185\u7f3a\u5c11break\u7b49\uff0c\u5bf9\u6307\u9488\u4f7f\u7528sizeof\u8fdb\u884c\u7a7a\u95f4\u5206\u914d\u7b49\u95ee\u9898\u3002<\/p>\n<p>\u4e0b\u56fe\u662f\u4e94\u4e2a\u5de5\u5177\u5bf9\u6837\u672c\u4ee3\u7801\u626b\u63cf\u7ed3\u679c\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115109078\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115117813\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u6ce8\uff1a\u8fd9\u4e9b\u62a5\u9519\u4e2d\u5254\u9664\u4e86\u4e00\u4e9b\u65e0\u4fee\u6539\u610f\u4e49\u4e14\u7ed3\u679c\u6570\u91cf\u5f88\u591a\u89c4\u5219:\u5982:coverity\u626b\u63cf\u5b58\u57287484\u6761Logically dead code(\u903b\u8f91\u4ee3\u7801\u4e0d\u53ef\u8fbe)\u62a5\u9519\u3002cppcheck\u5b58\u57282246\u6761unusedFunction(\u51fd\u6570\u672a\u88ab\u4f7f\u7528)\u62a5\u9519\u3002<\/p>\n<p>\u4ece\u62a5\u9519\u6570\u91cf\u548c\u51c6\u786e\u7387\u6765\u770b<\/p>\n<p>\u6709\u6548\u6570\u91cf\uff1aTSC[293]&gt;coverity[164]&gt;clang[142] &gt;cppcheck [120]&gt;pclint[116]<\/p>\n<p>\u51c6\u786e\u7387\uff1aclang[97%] &gt;TSC[93%]&gt;coverity(88%)&gt;pclint[72%] &gt;cppcheck[55%]<\/p>\n<p>\u7efc\u5408\u8bc4\u5206\uff1acoverity[94\u5206] &gt; TSC[86\u5206] &gt; clang[80\u5206] &gt;cppcheck[63\u5206] &gt;pclint[27\u5206]<\/p>\n<p>\u4ece\u62a5\u9519\u6570\u91cf\u548c\u51c6\u786e\u7387\u4e0a\u53ef\u4ee5\u770b\u51faTSC\u53ef\u4ee5\u66f4\u6709\u6548\u7684\u53d1\u73b0\u903b\u8f91\u7c7b\u95ee\u9898\u3002\u4f46\u5404\u5de5\u5177\u903b\u8f91\u7c7b\u573a\u666f\u5404\u6709\u7279\u8272\uff0c\u4e92\u4e3a\u4e92\u8865\uff0c\u53ef\u4ee5\u4e00\u540c\u9009\u62e9\u626b\u63cf\uff0c\u4f46cppcheck\u548cpclint\u51c6\u786e\u7387\u8f83\u4f4e\uff0c\u53ef\u4ee5\u8f83\u5c11\u9009\u62e9\u3002clang\u7684\u51c6\u786e\u7387\u6700\u9ad8\uff0c\u4f46clang\u626b\u63cf\u51fa\u6765\u7684\u903b\u8f91\u9519\u8bef\u4e2d\u6709\u4e00\u5927\u534a\u4e3a\u4f4e\u4ef7\u503c\u7684\u903b\u8f91\u9519\u8bef\uff0c\u6bd4\u5982clang\u626b\u63cf\u51fa\u6765\u7684142\u6761\u903b\u8f91\u9519\u8bef\u4e2d\u5c31\u6709140\u6761\u201c\u53d8\u91cf\u8d4b\u503c\u4f46\u6ca1\u6709\u4f7f\u7528\u201d\u9519\u8bef\u3002<\/p>\n<p>1. TSC,coverity\u5177\u5907\u8f83\u5f3a\u5b8f\u5c55\u5f00\u80fd\u529b<\/p>\n<p>\u4ee5DuplicateExpression\u89c4\u5219\u4e3a\u4f8b\uff0cTSC\u53d1\u73b0DuplicateExpression\u89c4\u5219\u62a5\u951932\u6761, cppcheck\u53d1\u73b0DuplicateExpression\u89c4\u5219\u62a5\u951912\u6761\u3002\u56e0\u4e3aTSC\u53ef\u4ee5\u5bf9\u5b8f\u8fdb\u884c\u66f4\u6709\u6548\u5c55\u5f00,\u4f8b\u5982\uff1a<\/p>\n<p>\u8fd9\u79cd\u62a5\u9519TSC\u53ef\u4ee5\u51c6\u786e\u7684\u8bc6\u522b\u51fa\u6765\uff0c\u5b8fMAX_TASK_TAB_SIZE\u548cMAX_TASK_RES_NUM\u4e3a\u76f8\u540c\u7684\u6570\u503c\uff0c\u800ccppcheck\u65e0\u6cd5\u533a\u5206\u53d1\u73b0\u8fd9\u7c7b\u95ee\u9898\uff0c\u53ea\u80fd\u8fdb\u884c\u7b80\u5355\u7684\u6587\u672c\u5339\u914d\u3002coverity\u5728\u63a8\u65ad\u80fd\u529b\u4e0a\u4e5f\u4e0d\u5dee\uff0c\u5728\u8fd9\u70b9\u4e5f\u660e\u663e\u4f18\u4e8ecppcheck\u3002<\/p>\n<p>2. TSC\u89c4\u5219\u7c7b\u578b\u66f4\u6709\u6548<\/p>\n<p>\u7ecf\u8fc7\u7b5b\u9009\uff0cTSC\u53ea\u4fdd\u7559\u4ef7\u503c\u66f4\u9ad8\u7684\u63a8\u65ad\u548c\u6709\u6548\u89c4\u5219\uff1b<\/p>\n<p>\u00d8 \u589e\u52a0\u4e00\u4e9b\u51fd\u6570\u68c0\u67e5\u89c4\u5219\uff0c\u5982\uff1aMemsetZeroBytes,\u8fd9\u79cd\u9519\u8bef\u7684Memset\u5199\u6cd5\uff1amemset(ctYear, sizeof(ctYear), 0);\u53ef\u7591\u7684\u6570\u7ec4\u4e0b\u6807\u4f7f\u7528\u7b49\u8fd9\u4e9b\u89c4\u5219\u5728coverity\u903b\u8f91\u7c7b\u68c0\u67e5\u4e2d\u5e76\u6ca1\u6709\u4f53\u73b0\uff0c\u800ccoverity\u53ea\u4f1a\u62a5\u51fa\u975e\u5e38\u51c6\u786e\u7684\u62a5\u9519\u5982\uff1aif\u5206\u652f\u5b8c\u5168\u76f8\u540c\u7b49\u68c0\u67e5\u9879\u3002<\/p>\n<p>\u00d8 \u5254\u9664\u4ef7\u503c\u4f4e\u7684\u65e0\u6548\u89c4\u5219\uff0c\u5982coverity\u89c4\u5219Logically dead code\uff0c\u6307\u4e00\u4e9b\u903b\u8f91\u4e0a\u4e0d\u53ef\u8fbe\u7684\u5e9f\u5f03\u4ee3\u7801\uff1bcppcheck\u89c4\u5219memsetClassFloatc\u6307\u5bf9\u5b58\u5728Float\u7c7b\u578b\u6210\u5458\u53d8\u91cf\u7684Class\u4f7f\u7528Memset\uff0c\u5f53\u65f6\u4ee3\u7801\u4e2d\u53d1\u73b0\u57fa\u672c\u90fd\u662fMemset\u4e3a0,\u5e76\u4e0d\u4f1a\u6709\u6570\u636e\u4e22\u5931\u7b49\u95ee\u9898\u3002\u6545\u8fd9\u7c7b\u89c4\u5219\u53d1\u73b0\u6709\u6548\u95ee\u9898\u5f88\u4f4e\uff0c\u5728\u6570\u91cf\u8f83\u5927\u7684\u60c5\u51b5\u4e0b\uff0c\u9700\u8981\u8017\u8d39\u5927\u91cf\u7684\u4eba\u529b\u6765\u786e\u8ba4\uff0c\u6027\u4ef7\u6bd4\u4e0d\u9ad8\uff0cTSC\u5df2\u7ecf\u5c06\u8fd9\u79cd\u89c4\u5219\u5254\u9664\u3002<\/p>\n<p>\u603b\u7684\u6765\u8bf4\uff0cTSC\u5728\u53d1\u73b0\u95ee\u9898\u548c\u51c6\u786e\u7387\u65b9\u9762\u8868\u73b0\u90fd\u4e0d\u9519\uff0c\u53ef\u4ee5\u8282\u7701\u5927\u91cf\u7684\u4eba\u529b\u5728\u9501\u5b9a\u903b\u8f91\u7c7b\u578b\u9519\u8bef\u3002<\/p>\n<p>TSC\u5728\u67d0\u4e9b\u7ec6\u5c0f\u89c4\u5219\u7684\u63a8\u65ad\u80fd\u529b\u4e0a\u6bd4coverity\u8981\u7a0d\u5fae\u5f31\u4e00\u4e9b\uff0c\u5982\u89c4\u5219Missing break in switch\uff1acoverity\u53d1\u73b0\u5168\u90e8\u51c6\u786e\u7684\u62a5\u9519\uff0cTSC\u5b58\u5728\u4e00\u5b9a\u7684\u8bef\u62a5\uff0c\u8fd9\u4e9b\u590d\u6742\u573a\u666f\u9700\u8981\u8f83\u5f3a\u7684\u52a8\u6001\u8ba1\u7b97\u5982\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115156224\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n5 \u5e38\u89c1\u8bef\u62a5\u573a\u666f<br \/>\n5.1 \u7a7a\u6307\u9488\u5e38\u89c1\u8bef\u62a5\u573a\u666f<br \/>\n\u8bef\u62a5\u573a\u666f\u4e00\uff08cppcheck\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115204611\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a538\u884c\u4ee3\u7801\u62a5quiz_set_ptt\u5b58\u5728\u7a7a\u6307\u9488\u8bbf\u95ee\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1a538\u884c\u53ea\u662f\u6307\u9488\u7684\u6bd4\u8f83\uff0c\u5e76\u6ca1\u6709\u89e3\u5f15\u7528\uff0c\u8fd9\u662f\u4e00\u4e2a\u6bd4\u8f83\u4f4e\u7ea7\u7684\u8bef\u62a5\u3002<\/p>\n<p>\u8bef\u62a5\u573a\u666f\u4e8c\uff08coverity\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115213002\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a119\u884c\u4ee3\u7801\u62a5actor\u5b58\u5728\u7a7a\u6307\u9488\u8bbf\u95ee\uff0c\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1a112\u884c\u5bf9actor\u8fdb\u884c\u4e86\u5224\u7a7a\uff0c\u8bf4\u660eactor\u5728\u5f53\u524d\u4e0a\u4e0b\u6587\u53ef\u80fd\u4e3a\u7a7a\u3002\u6240\u4ee5119\u884cactor\u53ef\u80fd\u4e3a\u7a7a\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1axy_assert_retval\u662f\u4e2a\u5b8f\uff0c\u5c55\u5f00\u540e\u5305\u542b\u6709return\u8bed\u53e5\uff0c\u5373\u5982\u679cactor\u4e3a\u7a7a115\u884c\u5c31\u8fd4\u56de\u4e86\uff0c119\u884cactor\u4e0d\u4f1a\u4e3a\u7a7a\u3002<\/p>\n<p>5.2 \u8d8a\u754c\u5e38\u89c1\u8bef\u62a5\u573a\u666f<br \/>\n\u8bef\u62a5\u573a\u666f\u4e00\uff08TSC\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115220330\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a83\u884c\u4ee3\u7801\u62a5\u7b2c\u6570\u7ec4\u8bbf\u95ee\u53ef\u80fd\u8d8a\u754c\uff0c\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1a\u7b2c61\u884c\u7684if\u8bed\u53e5\u5bf9req_list.num\u7684\u53d6\u503c\u8303\u56f4\u4f5c\u4e86\u9650\u5236\uff0creq_list.num\u5728\u5f53\u524d\u4e0a\u4e0b\u6587\u7684\u6700\u5927\u503c\u53ef\u4ee5\u662fMAX_RECRUIT_REQ_LIST_SIZE(4)\uff1b83\u884creq_list.\u6570\u7ec4\u5bf9\u8c61\u7528req_list.num\u4f5c\u4e3a\u5176\u6570\u7ec4\u8bbf\u95ee\u7684\u4e0b\u6807\uff0c\u5f53req_list.num\u53d6\u503c\u4e3aMAX_RECRUIT_REQ_LIST_SIZE\u65f6\u53d1\u751f\u8d8a\u754c\uff08req_list.\u6570\u7ec4\u7684\u957f\u5ea6\u4e3aMAX_RECRUIT_REQ_LIST_SIZE(4)\uff09\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1a\u7b2c79\u884c\u7684if\u6761\u4ef6\u4fdd\u8bc1\u4e86\u4e4b\u540e\u7684\u4ee3\u7801req_list.num\u7684\u503c\u4e0d\u4f1a\u7b49\u4e8eMAX_RECRUIT_REQ_LIST_SIZE\uff0c\u6240\u4ee5\u8fd9\u662f\u4e00\u4e2a\u8bef\u62a5\u3002<\/p>\n<p>\u8bef\u62a5\u573a\u666f\u4e8c\uff08cppcheck\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115228580\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a\u7b2c691\u884c\u4ee3\u7801\u62a5t_index_map\u53ef\u80fd\u53d6\u503c-1\u8d8a\u754c\uff0c\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1a665\u884c\u58f0\u660et_index_map\u5e76\u8d4b\u503c\u4e3a-1\uff0ct_index_map\u7684\u8d4b\u503c\u5728681\u884c\uff0c\u4f46681\u884c\u5728for\u5faa\u73af\u91cc\u9762\uff0c\u800cfor\u5faa\u73af\u5b58\u5728\u4e0d\u80fd\u8fdb\u5165\u7684\u53ef\u80fd\u6027\uff0c\u6240\u4ee5\u5728691\u884c\u4f7f\u7528t_index_map\u53ef\u80fd\u672a\u521d\u59cb\u5316\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1a\u8fdb\u5165691\u884c\u4ee3\u7801\u7684\u524d\u63d0\u6761\u4ef6\u662ffound\u53d8\u91cf\u4e3atrue\uff0c\u800cfound\u4e3atrue\u4fdd\u8bc1\u4e86t_index_map\u88ab\u8d4b\u503c\u4e86\u3002<\/p>\n<p>\u8bef\u62a5\u573a\u666f\u4e09\uff08coverity\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115245224\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a\u7b2c146\u884c\u4ee3\u7801\u62a5src_index + 1\u53ef\u80fd\u53d6\u503c\u4e3a4\u8d8a\u754c\uff0c\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1a139\u884c\u5bf9src_idx\u7684\u53d6\u503c\u8303\u56f4\u8fdb\u884c\u4e86\u9650\u5b9a\uff1a<a href=\"http:\/\/geek.csdn.net\/news\/detail\/TEAM_MEMBER_MAX%E9%95%BF%E5%BA%A6%E4%B8%BA4\" target=\"_blank\" rel=\"noopener\">0, 3<\/a>\uff0c\u56e0\u6b64146\u884csrc_idx + 1\u53ef\u80fd\u4e3a4\u5bfc\u81f4\u5bf9team_ptr-&gt;team_member\u8bbf\u95ee\u8d8a\u754c\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1a144\u884c\u5bf9src_idx\u7684\u53d6\u503c\u8303\u56f4\u8fdb\u884c\u4e86\u8fc7\u6ee4\uff0c\u4fdd\u8bc1\u4e86src_idx+1\u4e0d\u4f1a\u8d8a\u754c\u3002<\/p>\n<p>5.3\u672a\u521d\u59cb\u5316\u5e38\u89c1\u8bef\u62a5\u573a\u666f<br \/>\n\u8bef\u62a5\u573a\u666f\u4e00\uff08cppcheck\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115253534\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a\u7b2c462\u884c\u4ee3\u7801\u62a5ret\u672a\u521d\u59cb\u5316\u9519\u8bef\uff0c\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1aret\u53d8\u91cf\u5728\u7b2c434\u884c\u58f0\u660e\uff0c\u5728switch\u4e2d\u7684\u4e24\u4e2acase\u4e2d\u5747\u6709\u521d\u59cb\u5316\u4ee3\u7801\uff0c\u4f46\u662f\u5728default\u5206\u652f\u4e2d\u6ca1\u6709\u5bf9ret\u8fdb\u884c\u521d\u59cb\u5316\uff0c\u56e0\u6b64\u5224\u5b9a462\u884c\u53ef\u80fd\u4f1a\u8fd4\u56de\u4e00\u4e2a\u6ca1\u6709\u521d\u59cb\u5316\u7684ret\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1adefault\u5206\u652f\u4e2d\u7684xy_assert_retval\u662f\u4e00\u4e2a\u5b8f\uff0c\u56e0\u4e3acppcheck\u5b8f\u67e5\u627e\u7b56\u7565\u7684\u539f\u56e0\u5bfc\u81f4\u8be5\u5b8f\u6ca1\u6709\u5c55\u5f00\u3002\u5b9e\u9645\u4e0a\u5b8f\u5c55\u5f00\u5305\u542b\u4e86return\u8bed\u53e5\uff0c\u4e5f\u5c31\u662f\u8bf4\u5982\u679c\u8fdb\u5165default\u5206\u652f\u5c31\u51fd\u6570\u5c31\u76f4\u63a5\u8fd4\u56de\u800c\u4e0d\u4f1a\u6267\u884c\u5230462\u884c\u4ee3\u7801\u3002<\/p>\n<p>\u8bef\u62a5\u573a\u666f\u4e8c\uff08coverity\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115300065\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a\u7b2c284\u884c\u4ee3\u7801\u62a5careers\u672a\u521d\u59cb\u5316\u9519\u8bef\uff0c\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1acareers\u6570\u7ec4\u5728\u7b2c278\u884c\u58f0\u660e\uff0c\u4f46\u5728for\u5faa\u73af\u5bf9\u6bcf\u4e2a\u6570\u7ec4\u6210\u5458\u8fdb\u884c\u4e86\u521d\u59cb\u5316\u3002\u8fd9\u53ef\u80fd\u9020\u6210careers\u5b8c\u5168\u6ca1\u6709\u521d\u59cb\u5316\uff0c\u6216\u8005\u53ea\u521d\u59cb\u5316\u4e86\u4e00\u90e8\u5206\u3002\u56e0\u6b64\u5728284\u884c\u4f7f\u7528careers\u5b58\u5728\u672a\u521d\u59cb\u5316\u9519\u8bef\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1a\u901a\u8fc7\u4ee3\u7801\u903b\u8f91\u53ef\u77e5\uff0ccareer_num\u4ee3\u8868\u7684\u662fcareers\u88ab\u521d\u59cb\u5316\u7684\u957f\u5ea6\uff0c\u5728\u8bbf\u95eecareers\u6570\u7ec4\u5143\u7d20\u7684\u65f6\u5019\uff0c\u901a\u8fc7career_num\u8fdb\u884c\u4e86\u4fdd\u62a4\uff0c\u56e0\u6b64\u4e0d\u4f1a\u51fa\u73b0\u672a\u521d\u59cb\u5316\u7684\u9519\u8bef\u3002<\/p>\n<p>5.4\u6cc4\u9732\u7c7b\u5e38\u89c1\u8bef\u62a5\u573a\u666f<br \/>\n\u8bef\u62a5\u573a\u666f\u4e00\uff08TSC\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115306643\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a\u7b2c63\u884c\u4ee3\u7801\u62a5fp\u5b58\u5728\u8d44\u6e90\u6cc4\u9732\u98ce\u9669\u9519\u8bef\uff0c\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1axy_assert_retnone\u5b8f\u5c55\u5f00\u540e\uff0c\u542b\u6709return\u8bed\u53e5\uff0c\u4e5f\u5c31\u662f\u8bf4fp\u5728\u8c03\u7528fclose\u4e4b\u524d\u53ef\u80fd\u8fd4\u56de\uff0c\u5b58\u5728\u6cc4\u9732\u98ce\u9669\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1a\u5b9e\u9645\u4e0a\u4ee3\u7801\u903b\u8f91\u51b3\u5b9a\u4e86\u51fd\u6570return\u7684\u524d\u63d0\u6761\u4ef6fp\u4e3a\u7a7a\u3002\u8fd9\u4e2a\u65f6\u5019\u662f\u6ca1\u6709\u5fc5\u8981\u8c03\u7528fclose\u7684\uff0c\u4e0d\u5b58\u5728\u6cc4\u9732\u98ce\u9669\u3002<\/p>\n<p>\u8bef\u62a5\u573a\u666f\u4e8c\uff08pclint\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115314302\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a\u7b2c139\u884c\u4ee3\u7801(~CGIProcessor(), \u6790\u6784\u51fd\u6570)\u62a5\u5b58\u5728\u8d44\u6e90\u6cc4\u9732\u98ce\u9669\u9519\u8bef\uff0c\u56e0\u4e3a\u6ca1\u6709\u91ca\u653e_cgiContainer\u3002\u5224\u5b9a\u903b\u8f91\u5982\u4e0b\uff1a_cgiContainer\u4f5c\u4e3aCGIProcessor\u7684\u4e00\u4e2a\u6307\u9488\u6210\u5458\uff08\u7b2c149\u884c\uff09\uff0c\u9700\u8981\u5728\u6790\u6784\u51fd\u6570\u4e2d\u8fdb\u884c\u91ca\u653e\uff0c\u5426\u5219\u4e3a\u5185\u5b58\u6cc4\u9732\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1aCGIProcessor\u5bf9\u8c61\u5e76\u4e0down _cgiContainer\u6307\u5411\u7684\u5bf9\u8c61\uff0c\u4e0d\u9700\u8981\u5b83\u6765\u91ca\u653e\u3002<\/p>\n<p>5.5\u903b\u8f91\u7c7b\u5e38\u89c1\u8bef\u62a5\u573a\u666f<br \/>\n\u8bef\u62a5\u573a\u666f\u4e00\uff08cppcheck\uff09<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20160527115322987\" alt=\"\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0a4596\u884c\u4ee3\u7801\u62a5\u201c\u5bf9\u5305\u542b\u6709float\u6210\u5458\u7684\u5bf9\u8c61\u8c03\u7528memset\u65b9\u6cd5\u201d\u9519\u8bef\u3002<\/p>\n<p>\u8bef\u62a5\u539f\u56e0\uff1a\u5229\u7528memset\u5bf9\u4e00\u4e2a\u5bf9\u8c61\u7684\u6570\u636e\u5b57\u6bb5\u6e05\u96f6\u662f\u6bd4\u8f83\u5e38\u89c1\u7684\u505a\u6cd5\uff0cfloat\u6210\u5458\u6e05\u96f6\u540e\u503c\u4e5f\u4e3a0\uff0c\u4e0d\u4f1a\u9020\u6210\u4ec0\u4e48\u95ee\u9898\u3002<\/p>\n<p>\u672c\u6587\u7531\u817e\u8bafWeTest\u56e2\u961f\u63d0\u4f9b\uff0c\u672a\u7ecf\u6388\u6743\u4e25\u7981\u8f6c\u8f7d\uff01\u66f4\u591a\u8d44\u8baf\u53ef\u76f4\u63a5\u6233\u94fe\u63a5\u67e5\u770b\uff1a<a href=\"http:\/\/wetest.qq.com\/lab\/?from=content_csdn\" target=\"_blank\" rel=\"noopener\">http:\/\/wetest.qq.com\/lab\/\u00a0<\/a><br \/>\n\u5fae\u4fe1\u53f7\uff1aTencentWeTest<\/p>\n<\/div>\n<\/div>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>\u3010\u4ee3\u7801\u8d28\u91cf\u3011C++\u4ee3\u7801\u8d28\u91cf\u626b\u63cf\u4e3b\u6d41\u5de5\u5177\u6df1<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[118],"class_list":["post-1167","post","type-post","status-publish","format-standard","hentry","tag-02-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=1167"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1167\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=1167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=1167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=1167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}