
ãã®èšäºã§ã¯ã補åã«é¢é£ããããããçš®é¡ã®æè¡ç詳现ã«çŠç¹ãåœãŠãã®ã§ã¯ãªããç¹å®ã®ãã©ãããã©ãŒã äžã§ã®åžå Žã§ã®è£œåã®äœçœ®ä»ããäŒç€Ÿã«é¢ããæ å ±ãªã©ã«çŠç¹ãåœãŠãŸãã
ã³ã¡ã³ãå ã®äŒç€Ÿã®è£œåã«é¢ããå€ãã®èšäºã§ãLinuxãªã©ã®ãã©ãããã©ãŒã ã®ãµããŒãã«é¢ãã質åãèŠã€ããããšãã§ããŸãã ãã®è³ªåãããã§æèµ·ãããå æ¬çãªåçãåãåãããŸãã
PVS-Studioããã³CppCatãããžã§ã¯ãã®ãã¯ãã«ã«ãã£ã¬ã¯ã¿ãŒã§ããAndrey Karpov Andrey2008ãç§ã®è³ªåã«çããŸãã Andreyã¯ãããã°ã©ãã³ã°èšèªãä»ã®äŒæ¥ã®è£œåãããã³ãããã®äŒæ¥ãšã®çžäºäœçšã«ã€ããŠã®è°è«ãå ±æããŠããŸãã
åæ
ããã°ã©ããŒã®éçºã芳å¯ãããšããã¿ãŒã³ã«æ°ä»ãããšããããŸãã æ ã®å§ãã«ãå°æ¥ã®éçºè ã¯ããã€ãã®æç®ãç 究ãããã©ãŒã©ã ã§äœããå°ããŸãã ããæç¹ã§ãäžæ©åé²ããããã«ã圌ã¯ãããªãèªèº«ã®ããã«ãããã¬ãŒãéãããšããããšããããŸããïŒã ãã®å€ãã®ããããåæã«åºæ¬çãªããŒã«ã®1ã€ãçºèŠããéçºè ã¯ãæ¹åã®éãç¶ããŠããŸãã ããæç¹ã§ã圌ã¯ã¢ã€ãã¢ãæãã€ãããéçã³ãŒãã¢ãã©ã€ã¶ãŒã䜿çšããŠåæ段éã§ãšã©ãŒãæ€çŽ¢ããWinDbgãèšå®ããŠãšã©ãŒãæ€çŽ¢ããªãå Žåããšã©ãŒãæ€çŽ¢ããæéãççž®ããããšã§äœæ¥ãã¹ããŒãã¢ããã§ãããšèšãããŸãããããçš®é¡ã®é«åºŠãªã¢ããªã±ãŒã·ã§ã³ãããã°ãå®è¡ããŸãã ãã®æç¹ã§ãææãšç¡æã®äž¡æ¹ã§ãåžå Žã§å©çšå¯èœãªè³éã®ã¬ãã¥ãŒãéå§ãããŸãã ãã®ã¬ãã¥ãŒã«ã¯ãã®è³æãå«ãŸããå ŽåããããŸãã
ç§ãã¡ã¯è©±ããŠãã...
ã¢ã³ãã¬ã€ã®ãããã£ãŒã«ã«ãããç§ã®ãµãŒã¯ã«ããžã®ãªã³ã¯ããã©ããŸããã èªã¿åã£ãæ å ±ããå€æãããšãäŒç€Ÿã¯å€§ãããããŸããã ãã¶ãããã¯ãã©ã¹ã§ã...ããã¯éåžžãæå°éã®å®å䞻矩ãããã»ã¹ãžã®ãã倧ããªé¢äžãããåµé çãªä»äºãªã©ã§ãã 倧äŒæ¥ãšæ¯èŒããŠãå°äŒæ¥ã«ã¯ç¬èªã®é åããããŸãã äžå°äŒæ¥ã®ãã©ã¹é¢ã«ã€ããŠã®è¯ãèšäºããããŸãã
ã¢ã³ãã¬ã€ãäŒç€Ÿã«ã€ããŠå°ãæããŠãã ãããçŸåšãäŒç€Ÿã«äœäººã®åŸæ¥å¡ãããŸãããäŒç€Ÿã®è£œåã®éçºã«çŽæ¥é¢ãã£ãŠããåŸæ¥å¡ã¯äœäººã§ããïŒ
ã¢ã³ããªã¥ãŒïŒ ã¯ããç§ãã¡ã¯å°ããªäŒç€Ÿã§ãã ãã¡ããã倧ããè±ãã«ãªãããã§ãã ãããããã®æ¬²æ±ã¯ãã£ãããšæºããããŠããŸãã ãããèšã£ãŠã¿ãŸãããã ç§ãã¡ã¯æã£ãŠãããã®ã«æºè¶³ããŠããŸãããæ¬åœã«ããã£ãšãã£ãšæ¬²ããã§ãã ããŒã¹ãã¯ãã£ãã¯è¡šç€ºãããŸããããããã¯å°éããããã«æµæããŸãã
æãããªå©ç¹ããããŸãããªã©ãã¯ã¹ããé°å²æ°ãšãããšãã°ãããŒã±ãã£ã³ã°éšéãçºæãã顧客ããªãªãŒã¹æ¥ã«é©å¿ããå¿ èŠããªãããšã§ãã ãŠãŒã¶ãŒã®ã¡ãŒã«ãžã®éåžžã«è¿ éãªå¿çã ãã¡ãããæéã®çµéãšãšãã«ãäŒç€Ÿã¯è¥å€§åããå®å䞻矩ãç²åŸããããšãã§ããŸãã ãããä»ã®ãšãããç§ãã¡ã®æ±ºå®ãšè¡åã¯è¿ éã§ãã ãŠãŒã¶ãŒãæ€åºããããšã©ãŒã«ã€ããŠç§ãã¡ã«æžããã®ãšåãæ¥ã«é åžããããæäŸããããšã§ããŠãŒã¶ãŒãç¹°ãè¿ãé©ãããŸããã
çŸåšã4人ãPVS-Studio / CppCatã®éçºãšããã¢ãŒã·ã§ã³ã«çŽæ¥é¢äžããŠããŸãã ããã«ãæ°ããã®ã¯é£ãããšæããŸãã åŸæ¥å¡ãŸãã¯äŒèšå£«ãªã©ã®ããŒãã¿ã€ã ããŸãã¯ãªã¢ãŒãã§äœæ¥ãè¡ããŸãã ãããŒããã€ããŒããšããèšèãæãåºããŸãã
äžéšã®äŒæ¥æ £è¡ã§ã¯ãäŒç€Ÿã®æåã®1ã€ã¯ã補åããã®å質ããããŠããã°èªåã欲ãããã®ã«äž»ã«çŠç¹ãåœãŠãŠããããšã§ãã æããŠãã ãããäŒç€Ÿã¯è£œåã䜿çšããŠç¬èªã®è£œåãéçºããŠããŸãã PVS-Studioã®æ°ããããŒãžã§ã³ãéçºãããšããåé¡ãèŠã€ããããã«åãPVS-Studioã§ããããå®å®ãã販売ããŒãžã§ã³ã䜿çšãããŸããïŒ è£œåãéçºããŒãžã§ã³ã®åé¡ç®æãèŠã€ããã®ã«åœ¹ç«ã£ããšãã«ãèå³æ·±ãäŸãæããŠããã ããŸããïŒ
AndrewïŒ PVS-StudioãšCppCatã¯éåžžã«é«å質ã®è£œåã ãšæããŸãã é åžãããã¯ãã»ãŒãã€ã§ãäœæããã³ã¬ã€ã¢ãŠãã§ããŸãã ããŸããŸãªã¬ãã«ãšã¿ã€ãã®éåžžã«å€ãã®èªåãã¹ãã䜿çšããŠããŸãã ä¿®æ£ãããããŒãžã§ã³ããã¹ãŠã®ãã¹ãã«åæ Œããå ŽåããŠãŒã¶ãŒã«å®å šã«çºè¡ã§ããŸãã
æ®å¿µãªããšã«ãå éšã³ãŒãã®ãã¹ãŠã®çŸãããšä¿¡é Œæ§ã¯ãæµå¯Ÿçãªç°å¢ã®åœ±é¿ã«ããã°ãã°ãã«ãªãå ŽåããããŸãã ãã®çµæã補åã®å°è±¡å šäœãæªåããŸãã ç§ãã¡ã¯éé£ããã€ããã¯ãªãããã§ãããç§ãã¡ã®è£œåã¯æ©èœããŸããã ç¡éã®æ°ã®äŸãæããããšãã§ããŸãã é ã«æµ®ãã¶æåã®ãã®ïŒ
- ãµãŒãããŒãã£ã®ããŒã«ã¯ãVisual Studioç°å¢ã§äœããå°ç¡ãã«ããŸãã ãã®çµæãåé¡ãåé¿ããããã«æŸèæãäœæããããåæããŠãç³ãèš³ãããŸããããç§ãã¡ã¯äœãã§ããŸããããšçããªããã°ãªããŸããã ãã®ãããªäŸã®1ã€ã¯ã ãVisual Studio 2005/2008ã§ã®Intel Parallel Studio Service Pack 1çµ±åãšã©ãŒã®èª¬æãã§ãã
- ãããžã§ã¯ãæ å ±ã®Visual Studio COMã€ã³ã¿ãŒãã§ã€ã¹ã¯ãäºæããäŸå€ãã¹ããŒããå ŽåããããŸãã ã©ãããããã®äžå¹žãªç¬éã®ç°å¢ã¯äœãä»ã®ãã®ã§å¿ããããã§ãã åŒã³åºãã¯ç¹°ãè¿ãç¹°ãè¿ãããããããµã€ã¯ã«ã«ã©ããããå¿ èŠããããŸãã å¿ ããã圹ã«ç«ããªãã¿ã³ããªã³ãšã®ãã³ã¹ã
- éçºè ã¯ãŠã€ã«ã¹å¯ŸçXã䜿çšããŠãããäŒæ¥ããªã·ãŒã«ãããšãèšå®ãå€æŽããæš©éããããŸããã ãã®ã¢ã³ããŠã€ã«ã¹ã¯äžæãã¡ã€ã«ããã°ãããä¿æãããã¢ãã©ã€ã¶ãŒã¯ããããåé€ã§ããŸããã ãã®çµæãã¢ãã©ã€ã¶ãŒã¯ãããžã§ã¯ããã©ã«ããŒã«ãã¯ã©ããã¹ãããŸãã
- ãã®ä»ã¯èŠããŠããããšãã§ããŸãã ããšãã°ã here ã here ã hereãèŠãããšãã§ããŸãã
ãã ããPVS-Studioèªäœã§æ€åºããããšã©ãŒã衚瀺ãããã®ãèªè ãåŸ ã£ãŠããŸãã ããã«ã€ããŠã®èšäºãæžãããã«ç¹°ãè¿ãæ±ããããŸããã æ®å¿µãªããããšã©ãŒã®äŸãååã«èç©ããããšã¯ã§ããŸããã æ£çŽã«èšããšãã€ã³ã¯ãªã¡ã³ã¿ã«åæã«ãã£ãŠæ€åºãããå Žåãããããæžãåºãã®ãå¿ããŠããŸãã ç§ã¯ã¢ã«ãŽãªãºã ãèŠãŠãä¿®æ£ããããã«æ€èšããŸããã ç¿æ¥ãç§ã¯ãã®ãããªèŠåãæžãã®ãããã ããããšãæãåºããŸããã ã¯ããã©ãã§äœãèµ·ãã£ãã®ãèŠããŠããŸããã
ããããããã€ãã®äŸããç§ã¯ãŸã 瀺ããŠããŸã
èŠåïŒ V501ã==ãæŒç®åã®å·ŠåŽãšå³åŽã«ã¯ãåããµãåŒãm_decl-> m_wiseType.m_pValue-> m_minValueãããããŸãã vivawalker.cpp 382ãšã©ãŒ
ããå¿ èŠããããŸãïŒ
èŠåïŒ V547åŒã¯åžžã«falseã§ãã ãããã '||' ããã§æŒç®åã䜿çšããå¿ èŠããããŸãã vivabasepreprocessor.cpp 428
ããå¿ èŠããããŸãïŒ
èŠåïŒ V656å€æ°ãlãããrãã¯ãåãé¢æ°ã®åŒã³åºãã«ãã£ãŠåæåãããŸãã ãããããšã©ãŒãŸãã¯æé©åãããŠããªãã³ãŒãã§ãã ãSafeSkipParentesisïŒpParentExprïŒãåŒã®æ€æ»ãæ€èšããŠãã ããã è¡ã確èªããŠãã ããïŒ345ã346ãfunctionselector.cpp 346
æ£ããïŒ
bool VirtualValueSaver::IsNotZero() const { if (m_decl == nullptr) return false; return m_decl->m_wiseType.m_pValue != nullptr && m_decl->m_wiseType.m_pValue->m_isPrecisionBound && m_decl->m_wiseType.m_pValue->m_minValue == m_decl->m_wiseType.m_pValue->m_minValue && m_decl->m_wiseType.m_pValue->m_maxValue != 0; }
èŠåïŒ V501ã==ãæŒç®åã®å·ŠåŽãšå³åŽã«ã¯ãåããµãåŒãm_decl-> m_wiseType.m_pValue-> m_minValueãããããŸãã vivawalker.cpp 382ãšã©ãŒ
ããå¿ èŠããããŸãïŒ
m_decl->m_wiseType.m_pValue->m_minValue == m_decl->m_wiseType.m_pValue->m_maxValue
static void FixSourceFileName(vstring &s, const NormalizedFileOrDirectoryName &defaultname) { .... if (in[0] == '\\' && in[1] == '.' && in[1] == '\\') { in += 2; continue; } .... }
èŠåïŒ V547åŒã¯åžžã«falseã§ãã ãããã '||' ããã§æŒç®åã䜿çšããå¿ èŠããããŸãã vivabasepreprocessor.cpp 428
ããå¿ èŠããããŸãïŒ
if (in[0] == '\\' && in[1] == '.' && in[2] == '\\')
static void GetUseType(...) { .... if (kind == ntAssignExpr) { const Ptree *l = SafeSkipParentesis(pParentExpr); const Ptree *r = SafeSkipParentesis(pParentExpr); .... }
èŠåïŒ V656å€æ°ãlãããrãã¯ãåãé¢æ°ã®åŒã³åºãã«ãã£ãŠåæåãããŸãã ãããããšã©ãŒãŸãã¯æé©åãããŠããªãã³ãŒãã§ãã ãSafeSkipParentesisïŒpParentExprïŒãåŒã®æ€æ»ãæ€èšããŠãã ããã è¡ã確èªããŠãã ããïŒ345ã346ãfunctionselector.cpp 346
æ£ããïŒ
const Ptree *l = SafeSkipParentesis(First(pParentExpr)); const Ptree *r = SafeSkipParentesis(Third(pParentExpr));
èšäºã250ãã«ã®ä»£æ¿PVS-Studioãã§ã¯ãå瀟ã®æ°è£œåCppCatã玹ä»ããŸããã åœåããããžã§ã¯ãã¯ã»ãšãã©ããŒããããäœæããããšäž»åŒµãããŠããŸãã
å€ãã®è£œåã«ã¯ãããšãã°ãŠã€ã«ã¹å¯ŸçãœãããŠã§ã¢ãªã©ããã¹ãŠãæ§ç¯ãããŠããã«ãŒãã«ããããŸã-ããããŠã€ã«ã¹å¯Ÿçãšã³ãžã³ã§ãã ååãšããŠãããã¯äŒç€Ÿã®è€æ°ã®è£œåã®1ã€ã®ã³ã¢ã§ãã ãã®ã«ãŒãã«ãäžå¿ã«ãã·ã¹ãã å šäœãããããçš®é¡ã®ããžãã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãããã³ãŠãŒã¶ãŒã«ãšã£ãŠããããçš®é¡ã®æçšæ§ïŒããšãã°ãåãã¬ããŒãçæïŒã§æ§ç¯ãããŠããŸãããããã¯ãã¹ãŠãåããšã³ãžã³ã§æ§ç¯ãããä»ç€Ÿè£œåãšã¯ç°ãªã補åã§ãã
PVS-StudioãšCppCatã«ã€ããŠç¥ãããã®ã§ããã補åã¯åãã³ã¢äžã«æ§ç¯ãããŠããŸããïŒ ãŠãŒã¶ãŒã¯ãæ°è£œåã ãã§ãªããããã察象ãšããã»ã°ã¡ã³ãã®å€ã補åãããåãå質ã®ã³ãŒãåæãæåŸ ãã¹ãã§ããïŒ äž¡æ¹ã®è£œåãåãã³ã¢äžã«æ§ç¯ãããŠããå Žåãç°¡çŽ åãããå®äŸ¡ãªè£œåã®ãŠãŒã¶ãŒã¯ãè€éãªè£œåã®ãŠãŒã¶ãŒãšåãã¢ãã©ã€ã¶ãŒã®ãã°ä¿®æ£ãšã€ãããŒã·ã§ã³ãåãåããšããå©ç¹ããããŸãã ããã¯CppCatã«ã€ããŠèšããŸããïŒ
AndrewïŒ ã¯ããPVS-StudioãšCppCatã¯åãã³ã¢äžã«æ§ç¯ãããŠããŸãã ããããã€ã³ã¿ãŒãã§ãŒã¹ã¯éåžžã«å€§å¹ ã«åèšèšãããŸããã
äžè¬çãªåæã®èŠ³ç¹ããã¯ããããã¯éåžžã«è¿ããã®ã§ãã CppCatã§ã¯ãæã倱æãã蚺æãç¡å¹ã«ãªããå€ãã®ãã€ãºãçºçããŸããã ãããŠããããæªããšããäºå®ã§ã¯ãããŸããã 100åã®èŠåã®ãªã¹ããäžæ³šæã«ã¹ã¯ããŒã«ããŠ2ã€ã®ãšã©ãŒã®ã¿ãä¿®æ£ãããããã10åã®ã¡ãã»ãŒãžã衚瀺ããŠ5ã€ã®ãšã©ãŒãä¿®æ£ããããšããå§ãããŸãã
CppCatãPVS-StudioãŠãŒã¶ãŒãéšåçã«åŒãé¢ããšããäºå®ã«é¢ããŠã ã¯ããããããèµ·ãããŸããã倧éã§ã¯ãããŸããã ãŠãŒã¶ãŒã®å€ãã¯ç¹å®ã®æ©èœãå¿ èŠãšããŠããŸãã 64ããã蚺æã®ããã«èª°ããPVS-Studioãè³Œå ¥ããå Žåã誰ããä¿®æ£ãããã¡ããªãã¯ã埪ç°çè€éããïŒéå ¬éæ©èœïŒãå¿ èŠãšããŸãã 誰ããMSBuildãªã©ã䜿çšããŠããŸãã
PVS-StudioãšCppCatã§å€§èŠæš¡ãªãããžã§ã¯ãããã§ãã¯ããããšã«ã€ããŠèšãã°ãããšãã°ã補åããµããããžã§ã¯ãã®æ°ã500ãã700ãè¶ ãããããžã§ã¯ãã§ãã¹ããããXXX MBã®ã³ãŒãã¯ãã®ãããªæéã®ããã€ãã®æå®ãããæ§æïŒ
ã¯ããå€ãã®ãããžã§ã¯ããã¯ããã«å°ããå¯èœæ§ã¯ååã«ãããŸããã倧èŠæš¡ãªãœãããŠã§ã¢ã·ã¹ãã ã®éçºè ã¯ãã®ãããªæ°ã«èå³ããããããããŸããã
ã¢ã³ãã¬ã€ïŒ ç§ãã¡ã¯ãã®ãããªçµ±èšã®åéãå°éãšããŠããŸããã§ããã ããããå°æ¥çã«ã¯ãããè¡ã䟡å€ããããŸãã ä»ãç§ã¯æ¬¡ã®æ°åãäžããããšãã§ããŸãã
次ã®ãããžã§ã¯ããå«ãVisual Studio 2010ã§äœæ¥ããããã®ãã¹ããããã䜿çšããå ŽåïŒ
- ã«ã ã¹ã¿ãžãª
- CrashRpt
- ãã¹ããã¯ã¹
- ffdshow
- IPPãµã³ãã«
- ãã°
- ãã©ã³ã
- ã¢ã³ãŽãã
- mpc-hc
- Shareaza_vc10
- STweet
- XUI-GUIãã¬ãŒã ã¯ãŒã¯
- Zlib_IA64
ãããã55åã§ç§ã®äœæ¥æ©æ¢°ã§ãããã¯ãã¹ãŠãã§ãã¯ãããã ãããã®ãããžã§ã¯ãã®ãœãŒã¹ã³ãŒãã¯çŽ320ã¡ã¬ãã€ãã§ãã
æ§æïŒ
- Intel Core i7-4770ïŒ3.40 GHzã4x256Kb + 8MBãEM64TãGPUïŒãã³ã¢æ°-4ãã¹ã¬ããæ°-8;
- 16ã®ã¬ãã€ãã®ã¡ã¢ãªïŒ2ã€ã®ãã©ã±ããïŒDDR3 8Gb Kingston PC10600ã1333 MHzïŒ;
- ãã¹ãã«é¢é£ãããã®ã¯ãã¹ãŠSSDã«ãããŸãã
CppCatã®äŸ¡æ Œèšå®ããªã·ãŒã«ã¯ãåºå®æéã§ã®ã©ã€ã»ã³ã¹ã®è³Œå ¥ãå«ãŸããŸããã1幎éã§ãã äžéšã®è£œåã§ã¯ã幎éã©ã€ã»ã³ã¹ã«ãå ŽæããããŸãããäŒæ¥ã¯æ¯å¹Žåãã©ã€ã»ã³ã¹äŸ¡æ Œã§è£œåã®æ°ããããŒãžã§ã³ããªãªãŒã¹ã§ããŸãã æŽæ°ãæ°ããããŒãžã§ã³ãªã©ã§ãŠãŒã¶ãŒãåºæ¿ããããšã¯èããããŸããïŒ ãããšãã°ãæ°ããããŒãžã§ã³ãè³Œå ¥ããå¿ èŠãããããšã«æ°ä»ããŸã§ïŒ
ã¢ã³ãã¬ã€ïŒ ãç¡éã®ãã©ã€ã»ã³ã¹ã®è²©å£²ã¯åãå ¥ããããªããšèããŠããŸãã ç§ãã¡ã¯ãŠã€ã«ã¹å¯Ÿçã«ç²ŸéããŠããããã«æãããŸãã ã¢ãã©ã€ã¶ãŒã¯åžžã«æ°ãããšã©ãŒããã£ããããããšãåŠã³ãC ++èšèªã®é©æ°ãç¶æããããšãåŠã³ãæ°ããVisual Studioç°å¢ãšæ°ããããŒãžã§ã³ã®WindowsããµããŒãããŸãã
ããæå³ã§ã¯ãããã°é²æ¢ãµãŒãã¹ãã販売ããŠããŸãã ãã®ãµãŒãã¹ã«ã¯åžžã«æè³ãšåªåãå¿ èŠã§ãã ãã®ãããæ£çŽã«ã¢ããããŒãã®è³Œå ¥ããé¡ãããŸãã
ç§ã¯ç°è«ãäºèŠããŸãïŒãããããç§ã¯æŽæ°ãå¿ èŠãšããŸããã äžåºŠã ãè³Œå ¥ããŠäœ¿çšãããã§ããã ããã¯æãã§ãã 3幎åã«ã¢ã³ããŠã€ã«ã¹ã䜿çšããã®ã¯å¥åŠã§ãã ææ°ã®ãŠã€ã«ã¹å¯ŸçãœãããŠã§ã¢ã¯ãããã«å€ãã®ãŠã€ã«ã¹ãæ€åºããŸãã ãããã£ãŠãæ°ããã¢ãã©ã€ã¶ãŒã¯ãå€ãã¢ãã©ã€ã¶ãŒãããå€ãã®ãšã©ãŒãæ€åºããŸãã ãç¡éã¢ãã©ã€ã¶ãŒããæ±ãã人ã¯ãã³ãŒãã®ãšã©ãŒã®æ°ãæ¬åœã«æ°ã«ããŸããã§ããã 圌ã¯ã¢ãã©ã€ã¶ãŒãå¿ èŠãšããŸããããããŠãããªãã¯ããã«æ³šæãæãããšãã§ããŸããã
CppCatã7æ¥éç¡æã§ãè©Šãããã ããŸãã ããŠã³ããŒãããéçºè ã¯ãè·å Žã§è£œåãè³Œå ¥ããŠäžåžã«ææ¡ããå Žåã5æ¥éã§ãã®è£œåãè©äŸ¡ããããšã¯ã§ããŸããã
å€ãã®å ŽåãåŸæ¥å¡ïŒè£œåã®çŽæ¥ãŠãŒã¶ãŒïŒã®æèŠãèæ ®ããã«ç®¡çããŒã ã«ãã£ãŠè£œåã®å¿ èŠæ§ã決å®ãããç¶æ³ã§ããã補åã®ååŸã«ããã決å®èŠå ã§ããåŸæ¥å¡ã®æ瀺çãªããŒãºã§ããç¶æ³ããããŸãã
æéã1ãæã«å¢ãããŠãåºåã«ã€ããŠã®ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ãæ¡å€§ããŸãããçŽæ¥ãŠãŒã¶ãŒãããã°ã©ããŒã¯ãè³Œå ¥ã«ã€ããŠçµå¶é£ã«ææ¡ãããŸãã
ã¢ã³ãã¬ã€ïŒ æéã®å»¶é·ã«ã€ããŠã ç©è°ãéžãç¬éã éçºè ã5æ¥éãããšã圌ã¯ããŒã«ãè©Šãå¿ èŠãããããšãæãåºããŸãã 圌ãäžã¶æãéããããšãã圌ã¯åžžã«ãäžåºŠããŸãã¯ãæ lazãã«ãªããŸãã çæã¯è¡åãåºæ¿ããŸãã
ã¢ãã©ã€ã¶ãŒãã³ãŒãã®äžéšã«ã©ã®ããã«å¿çããããåã«ç¢ºèªããããšãç®çãšããŠããªã³ã©ã€ã³ã³ã³ãã€ã©ã«é¡äŒŒãããªã³ã©ã€ã³ãµãŒãã¹ãå®è£ ããŠã¿ãŸãããïŒ ãŸãããªã³ã©ã€ã³ãµãŒãã¹ã§ããã¹ããããžã§ã¯ããŸãã¯å®éã®ãããžã§ã¯ããéä¿¡ããå ŽåããŠãŒã¶ãŒã¯ã¯ãŒã¯ã¹ããŒã·ã§ã³ã«ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããã«ãããžã§ã¯ãããã§ãã¯ããããšãã§ããŸãã ããã§ããã€ãã®èå³æ·±ãã¢ãã«ãæŽçããããšãã§ããŸããããšãã°ãWebéçºã«ã¯ãã§ã«å€ãã®æ©èœããããŸããç¡æã§äœ¿çšã§ãããããžã§ã¯ãã«å¶éãèšãããããã®å¶éããªãããæéãæ¯æãå¿ èŠããããŸãã å€ãã®äººããœãããŠã§ã¢ãããŒã«ã«ã«ã€ã³ã¹ããŒã«ããŠãªã³ã©ã€ã³ã«ããããšãæåŠãããšããäºå®ã¯ãç§ã«ã¯ããããã«ãªãã ç¥ç財ç£ãä¿è·ããäŒæ¥ã®ã»ãã¥ãªãã£ããªã·ãŒã«ãã£ãŠã巚倧ãªãããžã§ã¯ãããªã³ã©ã€ã³ãªãœãŒã¹ã«ããµããããšã¯ãããŸããã ããããå°ããªãããžã§ã¯ãã®èŠ³å®¢ã¯ç²Ÿç¥çãªä»äºãåå·çã«ä¿è·ããããšãªãæ¡å€§ããå¯èœæ§ãããããªãœãŒã¹ã¯ãã¹ããšãªãããã®çµæãäŒç€Ÿã®äž»èŠè£œåã®åºåãã©ãããã©ãŒã ã«ãªãå¯èœæ§ããããŸãã ããã«ãèå³ã®ããéçºè ã¯ãè·å Žã§ãèªå® ã§ã補åãè©Šãããšãã§ããŸãã 圌ã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ã®èå¥åãžã®ã©ã€ã»ã³ã¹ïŒè©ŠçšçããïŒã®ææåã¯ãããŸããã
AndrewïŒ ãªã³ã©ã€ã³ã«é¢é£ããã¢ã€ãã¢ã¯å¥œãã§ã¯ãããŸããã ããã«æšè«ã®è¡ããããŸãã
Visual Studioç°å¢ã§ã¢ããªã±ãŒã·ã§ã³ãéçºãã人ãããŸãã CppCatãå®è¡ããŠãããžã§ã¯ããåæãããããç°¡åãªããšã¯äœã§ããïŒ äººã¯çµæã奜ããå«ããã®ã©ã¡ããã§ãã å¿ èŠã«å¿ããŠã圌ã¯ããŒã«ãè³Œå ¥ã§ããŸãã ããã§ã®ãªã³ã©ã€ã³ãµãŒãã¹ã¯ã5å¹ç®ã®ç¬ã®ãããªãã®ã§ãã
ããããžã§ã¯ããã©ããã«ã¢ããããŒãããŠãã§ãã¯ã¢ãŠãããããšãããããã¯ã«é¢ãã空æ³ã¯å®è£ ããã®ãéåžžã«é£ãããäž»ãªçç±ã¯æ確ã§ã¯ãããŸããã ã¢ãã©ã€ã¶ãŒã«ã¯ãã³ã³ãã€ã«å¯èœãªãããžã§ã¯ããå¿ èŠã§ãã ããããªããšãã©ã®ã¿ã€ããäœãæå³ããã®ããã©ã®ããªããã»ããµãã£ã¬ã¯ãã£ããèšå®ãããã®ãããã¯ããå±éããæ¹æ³ãªã©ãããããªããªããŸãã ããã¯ãã©ããã§æ¬æ Œçãªç°å¢ãæ§æããå¿ èŠãããããšãæå³ããŸãã ããã¯èªåçã«å®è¡ã§ããŸããã ã¢ãã©ã€ã¶ãŒãããªããã»ããµãã£ã¬ã¯ãã£ããªã©ãèªèã§ããããã«ããããžã§ã¯ãã§äœ¿çšãããã©ã€ãã©ãªãå ¥åããããã«åŒ·å¶ããWebã·ã¹ãã ã§ãããžã§ã¯ãã®é¡äŒŒç©ãäœæããå¿ èŠããããŸãã 人ã¯ãé²ã®ã©ããã«ã䞊è¡ãããžã§ã¯ãããäœæããŠç¶æããå¿ èŠãããããšãããããŸãã ãããŠããã®é åãã©ããã«ä¿æãããµããŒãããå¿ èŠããããŸãã
ãªã³ã©ã€ã³ã¢ãã©ã€ã¶ãŒã䜿çšã§ããã®ã¯ãå®éšããããšã ãã§ãã ãããããããªãã»ããããã§ãã ããã°ã©ããŒã¯ããã®ãããªãã¹ãã«å¯ŸããŠéåžžã«äžæ¹çãªã¢ãããŒããåã£ãŠããŸãã ãã®ããŒãã«é¢ããã¡ã¢ãæžããŸããã ãéçåæã«é¢ããç¥è©±ã 5çªç®ã®ç¥è©±-ããŒã«ãè©äŸ¡ããå°ããªããã°ã©ã ãäœæã§ããŸã ã 人ã¯ã1ã€ã2ã€ã®äŸã«åºã¥ããŠåŠå®çãªçµè«ãç°¡åã«åŒãåºãããšãã§ããŸãã ããã§ã圌ã«åœŒã®å®éã®ãããžã§ã¯ãããããããã§ãã¯ããããã®äžã®ãšã©ãŒãèŠã€ããããŠãã ããã
CppCatã¯ãMS Visual Studioã®äžéšã®ããŒãžã§ã³ã§ã®äœ¿çšãææ¡ããŠããŸããMSVisual Studioã¯ããã®äœ¿çšãã©ãããã©ãŒã ïŒWindowsããã³ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³å šäœïŒãå®çŸ©ããŸãã ã¯ããWindowsã¯ã¯ãŒã¯ã¹ããŒã·ã§ã³ãšãµãŒããŒã®äž¡æ¹ã«ååšããŸããã倧èŠæš¡ãªWebãªãœãŒã¹ãŸãã¯æ°ããæ§ç¯ãããã¯ã©ã¹ã¿ãŒã«é¢ããããããçš®é¡ã®åºçç©ãèŠããšãåºæ¬çã«ããµãŒããŒãœãããŠã§ã¢ã»ã°ã¡ã³ãã§Linuxã«é¢ããå€ãã®æ å ±ãèŠãããšãã§ããŸãã ãµãŒããŒã»ã°ã¡ã³ãã§ã®Windowsã®æåã¯ããã¹ã¯ãããã»ã°ã¡ã³ãã§ã®Linuxã®æåã«äŒŒãŠããããšã«æ°ä»ããããããŸããã Windowsçšã®ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®äžã§ãC ++ã«ã¯ãŸããŸãå€ãã®ç«¶åä»ç€ŸããããŸã;ãµãŒããŒãœãããŠã§ã¢ã»ã°ã¡ã³ãã§ã¯ãC ++ã«ã競åã¯ãããŸããã Linuxåã補åã®ãªãªãŒã¹ãšãµãŒããŒãœãããŠã§ã¢åžå Žãžã®æµžéã«é¢ããããªãã®ç«å Žãç¥ãããã
Googleã§ãœãããŠã§ã¢ã販売ããè©Šã¿ã«é¢ããèå³æ·±ãèšäºããã ã補åã®æçšæ§ã®äŸãšããŠãChromeãã©ãŠã¶ãŒã確èªããŸããã ãã®åé¡ã«æ°ããéçºã¯ãããŸããïŒ * nixãã©ãããã©ãŒã ã®ããŒãžã§ã³ã®ãªãªãŒã¹ãèæ ®ã«å ¥ããŠããµãŒããŒãœãããŠã§ã¢åžå Žã§è£œåã宣äŒããéã«å€§äŒæ¥ãšååããå¯èœæ§ãæ€èšããŠããŸããïŒ YandexãMail.ruãªã©ã®åœå ãã¬ã€ã€ãŒãããŸãã
ã¢ã³ãã¬ã€ïŒ æåã¯ã粟ç¥ã®äžã§äœããæžãããã£ãã®ã§ãããLinuxããŒãžã§ã³ã¯ãªãã®ã§ãæåŸ ãããŠããŸããã ããªããç§ãã¡ã®ç¡èœããæ inessãå°å¶ãèæ ®ããããšãã§ããçç±ã 圌ããã®ãŸãŸã«ããŠãã ãããã ãããããLinuxã«é¢é£ãã質åãã€ã³ã¿ãã¥ãŒããåé€ããããã«äŸé Œããããšã«ããŸããã ããããååãå°ããŸããïŒãçŸåšãä»®æ³ãã·ã³ã§å®è¡ãããŠããLinuxããŒãžã§ã³ããªããšèšã£ãŠããã®ã¯ãªãã§ããïŒã ãã®ãããã¯ã«é¢ãã詳现ãªåçãè¡ãå¿ èŠãããããšã«æ°ä»ããŸããã
ç§ãã¡ã¯å°ããªç¬ç«ããäŒç€Ÿã§ãã ä»ã®èŠªçµç¹ãæ¿åºã®å©æéããã®ãã£ãŒãã¯ãããŸããã æããªããšããå§ãããšãç§ãã¡ã¯éåžžã«ç°¡åã«ååšããªããªãå¯èœæ§ããããŸãã 3ãæ以å ã«è²»çšãåçãè¶ ããã®ã«ååã§ããããããéããããšãã§ããŸãã ãã®ãããªæããªã¢ã¯ã·ã§ã³ã®1ã€ã¯ããLinuxããŒãžã§ã³ããå®è£ ããããã«ã€ã³ãã©ã¹ãã©ã¯ãã£ãèšåŒµãããããšã§ãã
ããã°ã©ãã¯é åºã«ãã³ã³ãã€ã«ãããå®è¡å¯èœãã¡ã€ã«ããœãããŠã§ã¢è£œåãšåãã§ã¯ãªãããšãç解ããèªèããããããŸããã ããã¯é³è ã«èãããŸãããå®éã«äººã ã¯è±¡ã®å€§ããã®éãã«æ°ã¥ããŠããŸããã
openSUSE 13.1ã®ã¢ãã©ã€ã¶ãŒã®ã³ãã³ãã©ã€ã³ããŒãžã§ã³ã®äžã«ã¢ã»ã³ããªããããŸãã èµ·åããèŠåã衚瀺ããŸãã ãã ãããLinuxããŒãžã§ã³ãã¯ãããŸããã åœç€Ÿã«ã¯ãã®ãããªãœãããŠã§ã¢è£œåã¯ãªããè¿ãå°æ¥ã«ã¯æåŸ ãããŠããŸããã
幞ããªããšã«ãç§ãšEvgeniy EvgeniyRyzhkovã¯ãããã°ã©ããŒã ãã§ãªããããŒãžã£ãŒãå ŒãåããŠããŸãã ããã§ãªããã°ãç§ãã¡ã¯äŒç€ŸãšããŠé·ãé姿ãæ¶ããŠããã§ãããã æè¡çãªç±æãã©ã®ããã«ãã¹ãŠãå°ç¡ãã«ããããäºèŠã§ããŸãã
ãœãããŠã§ã¢è£œåã®æ§æãæãåºããŠãã ããã
- ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãµããŒãã ãŸããããã§ããã¹ãŠãæ¯èŒçç°¡åã§ãã ããã°ã©ã ãååŸããŠã³ã³ãã€ã«ããŸããã ãã ãããã®ããã«ã¯ãå°ãªããšãä»®æ³ãã·ã³ãšãã¢ã»ã³ããªã·ã¹ãã ã®è€éããšãªãªãŒã¹ã®æºåãå¿ èŠã«ãªãããšã«æ³šæããŠãã ããã
- ã³ã³ãã€ã©ããã³ã·ã¹ãã ã©ã€ãã©ãªã®ãµããŒãã ãããå°é£ã®å§ãŸãã§ãã C ++ããã°ã©ã ã¯ãã©ãã§ãåãããã«åæã§ããåãªãããã¹ããã¡ã€ã«ã ãšã¯æããªãã§ãã ããã åã³ã³ãã€ã©ãšã·ã¹ãã ã©ã€ãã©ãªã¯ãããããçš®é¡ã®éæšæºã®æ¡åŒµæ©èœã§ãã£ã±ãã§ãã ãããã®æ©èœã®ãµããŒãã¯ãããããã§ãããéåžžã«å€ãã®äœæ¥ãå¿ èŠã§ãã ã__restrictãããŒã¯ãŒãã®äœ¿çšé »åºŠããforãæŒç®åã®10,000åå°ãªããšããäºå®ã¯ããµããŒããããªãå¯èœæ§ããããšããæå³ã§ã¯ãããŸããã å€ãã®ããã°ã©ããŒã¯ã_Boolã__ w64ã__ noopã__ int3264ã__ if_existsã123.0fiã__ uuidofã__ basedã__ LPREFIXã__ builtin_offsetofã__ volatile__ãªã©ãªã©ãèªèããŠããŸããã
- 蚺æã«ãŒã«ã åã·ã¹ãã ã«ã¯ãç¬èªã®ããŒã¿ã¢ãã«ãã©ã€ãã©ãªããã®ä»ã®åŸ®åŠãªéãããããŸãã é©åãªèšºæãè¡ãããå Žåã¯ãã·ã¹ãã æ©èœã®æ©èœãç¥ãå¿ èŠããããŸãã ããšãã°ãPVS-Studio / CppCatã«ã¯ããã®é¢æ°ãŸãã¯ãã®é¢æ°ã®èª€ã£ã䜿çšæ¹æ³ãšæåŸ ã§ããããšã瀺ã巚倧ãªããŒãã«ããããŸãã é¢æ° '_wcsicmp_l'ãæåãš2çªç®ã®å®åŒæ°ã«äžèŽããå Žåãçãããã çŸåšããã¡ã€ã«ãfunctions_info.cppãã¯800ãããã€ããè¶ ããŠãããäœæ¥ãå®äºããªããã°ãªããŸããã ä»ã®ã·ã¹ãã ã«ç§»åãããå Žåã¯ã察å¿ããã·ã¹ãã æ©èœãèæ ®ããŠãããŒãã«ãå€§å¹ ã«è£å ããå¿ èŠããããŸãã ããã¯éåžžã«æéã®ãããã¿ã¹ã¯ã§ãã
- ããã¥ã¡ã³ããŒã·ã§ã³ ããã¥ã¡ã³ãã¯çå£ã«äœãçŽããªããã°ãªããŸããã PVS-Studioã®ããã¥ã¡ã³ããå«ãPDFãã¡ã€ã«ã«ã¯250ããŒãžãå«ãŸããŠãããåžžã«æé·ããŠããããšãèŠããŠããå¿ èŠããããŸãã
- éçºç°å¢ãšã®çµ±åã ã³ã³ãœãŒã«ã«äœããå°å·ããããšãšãããŒã«ã䟿å©ã«ããããšã¯ãŸã£ããå¥ã§ãã Windowsã§ã¯ãåªå é äœã¯æçœã§ã-Visual Studioãšçµ±åããå¿ èŠããããŸãã Linuxã®äžçã§ã¯ããã¹ãŠãããå€æ§ã§ãã æãäžè¬çãªãšãã£ã¿ãŒã®ããã€ãããµããŒãããå¿ èŠããããŸãã ãã©ã°ã€ã³ã®åœ¢åŒã§ã¯ãªãå Žåã§ããããã²ãŒã·ã§ã³ãå®è¡ã§ããããã«ãé©åãªåœ¢åŒã§æ å ±ã衚瀺ã§ããå¿ èŠããããŸãã
- é åžãããã
- ãã¹ãã æããã©ãŒãªã¢ã€ãã ã èªåãã¹ãã«ã¯å€ãã®çš®é¡ããããŸãã ã¡ã€ã³ã·ã¹ãã ã¯ã蚺æã®éãã瀺ãäžé£ã®ååž°ãã¹ãã§ãã åèšã§ã100以äžã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããããã«äœ¿çšãããŠããŸãã å®å šãªãã¹ãã«ã¯äœæéãããããŸãã æ°ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãåŠç¿ããå Žåã¯ãããè€éã§ããŒã¿ãã«ãªæ°ãããã¹ãã·ã¹ãã ãäœæããå¿ èŠããããŸãã ãã®ã·ã¹ãã ã§ã¢ã»ã³ãã«ã§ããå°ãªããšã50ã®æ°ãããªãŒãã³ãœãŒã¹ãããžã§ã¯ããèŠã€ããå¿ èŠããããŸãã ãŸããæ°ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§åäœãã¹ããå®è¡ããæ¹æ³ãªã©ãåŠã¶å¿ èŠããããŸãã
- ãµããŒãã ããŸããŸãªä»®æ³ãã·ã³ãšããã®ã·ã¹ãã ã«åºæã®åé¡ãç解ããæºåãã§ããŠãã人ã ãæå ã«çšæããå¿ èŠãããããããµããŒãã¯ããè€éã«ãªããŸãã
ãããŠä»ãæãéèŠãªããšã Unix / LinuxããŒãžã§ã³ã§ã¯ã誰ããèªåã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãç解ããŠããŸãã ããã¯éåžžã«éèŠã§ãïŒ ã·ã¹ãã Xã®ããã±ãŒãžããããšããäºå®ãããã·ã¹ãã Yã®ãŠãŒã¶ãŒã¯æãããå¯ãããããŸããã 圌ã«ãšã£ãŠã¯ããLinuxããŒãžã§ã³ãã¯ãŸã ãããŸããã ããã¯ãå°ãªããšã5ã€ã®ç°ãªãæãäžè¬çãªã·ã¹ãã ã®ããŒãžã§ã³ãäœæããå¿ èŠãããããšãæå³ããŸãïŒãã ããäžæºã¯æ®ããŸãïŒã
ãããã£ãŠãäžèšã®ãã¹ãŠã«ããµããŒããããã·ã¹ãã ã®æ°ãæããå¿ èŠããããŸãã ããšãã°ãããã«5ãæããŠãäœæ¥éãæ³åããŠãã ããã
åæã«ãã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã¹ãã¯ããã«å€§å¹ ã«å¢å ããŸãã ããã°ã©ããå¿ èŠã§ãã ã¯ããä»®æ³ãã·ã³ãšååž°ãã¹ãã®åç©åããµããŒãããã ãã§ããç¹å¥ãªã·ã¹ãã 管çè ãå¿ èŠã§ãã ãã¹ãã®ããã«ç°ãªãä»®æ³ãã·ã³ãé çªã«å®è¡ããè€éãªã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæããå¿ èŠããããŸãã ããã«ããã¹ãã¯å°ãªããšãäžæ©åæ Œããå¿ èŠããããããè€æ°ã®ã³ã³ãã¥ãŒã¿ãŒãäžåºŠã«ããŸãã¯åŒ·åãªãµãŒããŒãå¿ èŠãªããã§ãã
æ°ããããã°ã©ããŒãã·ã¹ãã 管çè ãã³ã³ãã¥ãŒã¿ãŒããµãŒããŒãä»®æ³ãã·ã³ãè¿œå ã±ãŒãã«ãé»æ°ãããã¯ãŒã¯ãçãå°œããªãããã«ããµãŒããŒçšã®è¿œå ã¹ããŒã¹ãåé€ããŸãã
æ®å¿µãªãããç§ã説æããããšã¯ããã°ã©ãã®90ïŒ ã«ç解ãããŠããããç¬ããŸããã 圌ã¯ã¯ã€ã€ãŒãåŒã£åŒµãããšããŸãã...
ç°¡åãªããã°ã©ããŒã¯ããã©ãã«ã®éã«é»æ°æåž«ãæ¢ãããã«èµ°ãããšã¯ãããŸããã§ããã ãã äœåãªäŒã¿ããããŸãã ããã°ã©ããŒã¯ãé»æ°ããŒã¹ããé»ç·ãåŒã䌞ã°ãããšããŠãå®åçãªå°çã®èŒªãéãæããããšã¯ãããŸããã§ããã ãã¡ãããã¯ã€ã€ãŒãäŸãšããŠåŒçšããŸããã ã¯ã€ã€ãŒããªãã®ã§ãäœãä»ã®ãã®ããããŸãã
è¿ãå°æ¥ã«ãããåŒã£åŒµãããšã¯ãããŸããã
åœå ã®ãœãããŠã§ã¢äŒç€Ÿãšã®ããåãã«ã€ããŠè©±ããŠããããŸããïŒ ããšãã°ãKaspersky LabãAcronisãªã©ã®äŒæ¥ã®å Žåã
ã¢ã³ããªã¥ãŒïŒ ãããŸã§ã®ãšããããããã®äŒç€Ÿãåæ§ã®äŒç€Ÿãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã¯ãããŸããã§ããã äœãæãåºãã®ãããåãããŸããã Yandexãšã¯ããªãäŒè©±ããããŸããã NDAã眲åãããŠããªãã®ã§ãããªããäŒããããšãã§ãããšæããŸãã
IPOãããã€ãã®æ°èäŒæ¥ãè²·åããããšã§å°ã匷åããããšã決å®ããå°ãåã«ãYandexã¯ããããŸããã å°ãªããšãç§ãã¡ã¯å°è±¡ãåããŸããã 圌ãã¯ããŸããŸãªããŒã ãšç±å¿ã«ã³ãã¥ãã±ãŒã·ã§ã³ãåããŸããã ç§ãã¡ã¯ç§ãã¡ãšè©±ããŸããã ããããããŸããããŸããã§ããã
質åã¯ãã©ã®ãããã®ãéã§ãããªãã®ã¹ã¿ãŒãã¢ããã¯èª°ã«åããŠããã®ã§ããïŒã ããã«å¯ŸããŠç§ãã¡ã¯æ£çŽã«çããŸããã ã¹ã¿ãŒãã¢ããã¯ç§ãã¡ã«ãéããããããç§ãã¡ã¯é»äººã§ããã 圌ãã¯é©ããèå³ã倱ããŸããã ããã¯ç解ã§ããŸãã è² ããã¹ã¿ãŒãã¢ãããåéããŠãããã«ãã£ãŠåªç§ãªåŸæ¥å¡ãç²åŸããããšã¯ãã¯ããã«ç°¡åã§ãããæçã§ãã
PVS-Studio, . , Yandex Coverity.


Cppcheck? - , Linux - ?
: Cppcheck â .
. - . , , .
Linux . , .
2013 «PVS-Studio. » , . . ? ?
: . . , , . . PVS-Studio , .
, , , . . - « », , . .
, , , « »?
: CppCat. , . PVS-Studio . , .
CppCat . $250 . â .
, «» . , «» , , , . , , . , .
, , , . . , . , . , . . . , $250-$500 , . .
. (KAV) 3 . 2 1 . - . . : « 3 . , 2 1. ». : « , ».
. C++ .
C++ «» , C++ â « ++». C++ â , ; - âŠ
, ? C++, Windows, â . ?
: . C++ , 20 . Chromium, , C++ .
Chromium . C/C++ . C/C++. -, FORTRAN COBOL. .
FORTRAN / COBOL . , Intel FORTRAN, Intel C++. COBOL .
. , . , . FORTRAN COBOL . .
- ? , ? , , ?
: . , :).
, . - . , . .
ãŸãšãããš
? , , , â , . â . . , , « » (, ..). , , «» «».
â ! , â CppCat. . : « ?», « CppCat» , , .
Windows. Linux . . , . - . Linux . , , , . , 20% - 80% . , , , , 10/90. , 90% 10% , , Linux , . , . « » , â Windows . , , .
C++ , , , . , C++ ( CppCat Cppcheck ). , C++ , â , , , .. , .
CppCat PVS-Studio . . - , , , , , .
, !
æ®å¿µãªãããCppCatãããžã§ã¯ãã®éçºããµããŒãã¯çµäºããŠããŸãã çç±ã«ã€ããŠã¯ãã¡ããã芧ãã ãã ã |