å®éã®ãšãããçŸä»£ã®èšèªã§æžããšãæ°ä»ããªããã¡ã«éçã¢ãã©ã€ã¶ãŒãééããŸããäºå®ãææ°ã®ã³ã³ãã€ã©ãŒã¯ãã³ãŒãã®æœåšçãªåé¡ã«é¢ããå°ããªèŠåã»ãããæäŸããŸããããšãã°ãVisualStudioã§C ++ã³ãŒããã³ã³ãã€ã«ãããšã次ã®ããšãããããŸãã
ãã®åºåã§ã¯ãvar倿°ã颿°ã®ã©ãã§ã䜿çšãããŠããªãããšãããããŸãããããã£ãŠãå®éã«ã¯ãã»ãšãã©ã®å ŽåãåçŽãªéçã³ãŒãã¢ãã©ã€ã¶ãŒã䜿çšããŠããŸãããã ããCoverityãKlocworkãPVS-Studioãªã©ã®ããã®ã¢ãã©ã€ã¶ãŒãšã¯ç°ãªããã³ã³ãã€ã©ãŒã«ãã£ãŠæäŸãããèŠåã¯ãããäžéšã®åé¡ãã瀺ããŠããŸããã
éçåæãšã¯äœããããã³ãããå®è£ ããæ¹æ³ãããããªãå Žåã¯ããã®èšäºãèªãã§ããã®æ¹æ³ã®è©³çްã確èªããŠãã ããã
ãªãéçåæãå¿ èŠãªã®ã§ããïŒ
äžèšã§èšãã°ïŒå éãšåçŽåã
éçåæã䜿çšãããšãèšèªæ§é ã®èª€çšããã¿ã€ããã¹ãŸã§ãã³ãŒãå ã®ããŸããŸãªåé¡ãèŠã€ããããšãã§ããŸããããšãã°ã代ããã«
auto x = obj.x;
auto y = obj.y;
auto z = obj.z;
次ã®ã³ãŒããäœæããŸããã
auto x = obj.x;
auto y = obj.y;
auto z = obj.y;
ã芧ã®ãšãããæåŸã®è¡ã«ã¿ã€ããã¹ããããŸããããšãã°ãPVS-Studioã¯æ¬¡ã®èŠåãçºè¡ããŸã
ãV537ãyãã¢ã€ãã ã®äœ¿çšæ³ã®æ£ç¢ºãã確èªããããšãæ€èšããŠãã ããã
ãã®ãšã©ãŒã«æãçªã£èŸŒãã ãå Žåã¯ãã³ã³ãã€ã©ãšã¯ã¹ãããŒã©ãŒã§æ¢è£œã®äŸã詊ããŠãã ããã*ã¯ãªãã¯*ã
ãããŠãããªããçè§£ããŠããããã«ãã³ãŒãã®ãã®ãããªéšåã«ããã«æ³šæãæãããšãåžžã«å¯èœã§ãããšã¯éããªãã®ã§ããªããã¹ãŠãããã»ã©å¥åŠã«æ©èœããã®ãçåã«æã£ãŠãè¯ãæéãããã°ã®ããã«åº§ãããšãã§ããŸãã
ããããããã¯æãããªééãã§ããããããéçºè ãèšèªã®åŸ®åŠãªç¹ãå¿ããããã«ã次åã®ã³ãŒããæžããå Žåã¯ã©ããªãã§ããããããŸãã¯ãã³ãŒãã§æªå®çŸ©ã®åäœãèš±å¯ããããšãã§ããŸãïŒæ®å¿µãªããããã®ãããªã±ãŒã¹ã¯å®å šã«ãããµãããã®ã§ãããæéã®å€§éšåã¯ãã¿ã€ããã¹ãäžè¬çãªãšã©ãŒããŸãã¯æªå®çŸ©ã®åäœãå«ãç¹å®ã®äœæ¥ã³ãŒãã®ãããã°ã«è²»ããããŸãã
éçåæãç»å Žããã®ã¯ãããã®ç¶æ³ã®ãââãã§ããããã¯ãã³ãŒãå ã®ããŸããŸãªåé¡ãææããããã¥ã¡ã³ãã§ãã®ããã«èšè¿°ããå¿ èŠããªãçç±ããã®åå ãããã³ä¿®æ£æ¹æ³ã説æããéçºè åãã®ã¢ã·ã¹ã¿ã³ãã§ããå€èгã®äŸã次ã«ç€ºããŸãã*ã¯ãªãã¯*ã
ã¢ãã©ã€ã¶ãŒãæ€åºã§ããããã«è峿·±ããšã©ãŒã¯ã次ã®èšäºã§èŠã€ããããšãã§ããŸãã
- 2019幎ã®C ++ãããžã§ã¯ãã®ããã10ãšã©ãŒ
- 2019幎ã®CïŒãããžã§ã¯ãã®ããã10ã®ééã
- 2019幎ã®Javaãããžã§ã¯ãã®ããã10ã®ãã°
ããã§ããã®è³æãèªã¿ãéçåæã®æçšæ§ã確信ããåŸãããããã¹ãããããšããå§ãããŸããããããã©ãããå§ããŸããïŒæ°ããããŒã«ãé²è¡äžã®ãããžã§ã¯ãã«çµ±åããã«ã¯ã©ãããã°ããã§ããïŒãããŠãããŒã ã圌ã«ç޹ä»ããæ¹æ³ã¯ïŒãããã®è³ªåã«å¯Ÿããåçã¯ä»¥äžã«ãããŸãã
泚æãéçåæã¯ãã³ãŒãã¬ãã¥ãŒãªã©ã®æçšãªãã®ã眮ãæãããåŠå®ããããããã®ã§ã¯ãããŸãããããã¯ãã¿ã€ããã¹ãäžæ£ç¢ºããããã³å±éºãªæ§é ã«äºåã«æ°ã¥ããä¿®æ£ããã®ãæ¯æŽããããšã«ããããã®ããã»ã¹ãè£å®ããŸããééã£ãæ¬åŒ§ãæ¢ããããéå±ãªæ¯èŒé¢æ°ãèªãã ãããããããã³ãŒããã¬ãã¥ãŒãããšãã«ã¢ã«ãŽãªãºã ãšã³ãŒãã®æç¢ºãã«çŠç¹ãåœãŠãæ¹ãã¯ããã«çç£çã§ãã
0.楜åšãç¥ã
ããã¯ãã¹ãŠè©Šçšçããå§ãŸããŸããå®éãããŒã«ãå®éã«ã©ã€ãã§èŠãããšããªãå Žåãéçºããã»ã¹ã§äœããå®è£ ããããšã決å®ããããšã¯å°é£ã§ãããããã£ãŠãæåã®ã¹ãããã¯è©ŠçšçãããŠã³ããŒãããããšã§ãã
ãã®æ®µéã§åŠç¿ããå 容ïŒ
- ã¢ãã©ã€ã¶ãŒãšå¯Ÿè©±ããæ¹æ³ã¯äœã§ããã
- ã¢ãã©ã€ã¶ãŒã¯éçºç°å¢ãšäºææ§ããããŸããã
- çŸåšããããžã§ã¯ãã«ã¯ã©ã®ãããªåé¡ããããŸããã
å¿ èŠãªãã®ããã¹ãŠã€ã³ã¹ããŒã«ããããæåã®ã¹ãããã¯ãããžã§ã¯ãå šäœïŒWindowsãLinuxãmacOSïŒã®åæãå®è¡ããããšã§ãã Visual Studioã®PVS-Studioã®å Žåããåæ§ã®å³ã衚瀺ãããŸã
ãéèŠãªã®ã¯ãéåžžãéçã¢ãã©ã€ã¶ãŒã¯ãã³ãŒãããŒã¹ã倧ãããããžã§ã¯ãã«å¯ŸããŠèšå€§ãªæ°ã®èŠåãçºè¡ãããšããããšã§ãããããžã§ã¯ãã¯ãã§ã«æ©èœããŠããããããã¹ãŠãä¿®æ£ããå¿ èŠã¯ãããŸãããã€ãŸãããããã®åé¡ã¯é倧ã§ã¯ãããŸããããã ããæãè峿·±ãèŠåãèŠãããšãã§ããŸãå¿ èŠã«å¿ããŠä¿®æ£ããŸãããããè¡ãã«ã¯ãåºåããã£ã«ã¿ãªã³ã°ããæãä¿¡é Œæ§ã®é«ãã¡ãã»ãŒãžã®ã¿ãæ®ãå¿ èŠããããŸãã Visual Studioçšã®PVS-Studioãã©ã°ã€ã³ã§ã¯ãããã¯ãšã©ãŒã®ã¬ãã«ãšã«ããŽãªã§ãã£ã«ã¿ãªã³ã°ããããšã«ãã£ãŠè¡ãããŸããæãæ£ç¢ºãªåºåãåŸãã«ã¯ã[é«]ãš[äžè¬]ã®ã¿ãæå¹ã®ãŸãŸã«ããŸãã
å®éã178ã®èŠåã¯ãæ°åã®èŠåãããã¯ããã«èŠããããªã£ãŠããŸãã[äž]
ã¿ããš[äœ]ã¿ãã«é©åãªèŠåã衚瀺ãããããšããããããŸããããããã®ã«ããŽãªã«ã¯ã粟床ïŒä¿¡é Œæ§ïŒãäœã蚺æãå«ãŸããŸãã Windowsã§äœæ¥ããããã®èŠåã¬ãã«ãšãªãã·ã§ã³ã®è©³çްã«ã€ããŠã¯ã*ãã¯ãªãã¯ããŠãã ããã
æãè峿·±ããšã©ãŒãæ£åžžã«ç¢ºèªããåŸïŒãããŠããããæ£åžžã«ä¿®æ£ããåŸïŒãæ®ãã®èŠåãæå¶ãã䟡å€ããããŸããããã¯ãå€ãèŠåã®éã§æ°ããèŠåã倱ãããªãããã«ããããã§ããããã«ãéçã¢ãã©ã€ã¶ãŒã¯ããã°ã©ããŒã®ãã«ããŒã§ããããã°ã®ãªã¹ãã§ã¯ãããŸããã:)
1.èªåå
äŒè°ãçµãã£ããããã©ã°ã€ã³ãæ§æããŠCIã«çµ±åããŸããããã¯ãããã°ã©ããŒãéçã¢ãã©ã€ã¶ãŒã®äœ¿çšãéå§ããåã«è¡ãå¿ èŠããããŸããéèŠãªã®ã¯ãããã°ã©ããŒãåæããªã³ã«ããã®ãå¿ãããããŸã£ãããªã³ã«ããããªãå Žåããããšããããšã§ãããããè¡ãã«ã¯ããã¹ãŠã®æçµãã§ãã¯ãå®è¡ããŠãæªæ€èšŒã®ã³ãŒããäžè¬çãªéçºãã©ã³ãã«å ¥ããªãããã«ããå¿ èŠããããŸãã
ãã®æ®µéã§åŠç¿ããå 容ïŒ
- ããŒã«ãæäŸããèªååãªãã·ã§ã³ã
- ã¢ãã©ã€ã¶ãŒã¯ãã«ãã·ã¹ãã ãšäºææ§ããããŸããïŒ
å®ç§ãªããã¥ã¡ã³ãããªãããããµããŒãããããã«äœæããå¿ èŠãããå ŽåããããŸããããã¯æ£åžžãªããšã§ãããåãã§ãæäŒããããŠããã ããŸãã:)ã§ã¯
ãç¶ç¶ççµ±åïŒCIïŒãµãŒãã¹ã«åãæãããŸããããã©ããªã¢ãã©ã€ã¶ãŒã§ã倧ããªåé¡ãªããããã«çµã¿èŸŒãããšãã§ããŸãããããè¡ãã«ã¯ããã€ãã©ã€ã³ã«å¥ã®ã¹ããŒãžãäœæããå¿ èŠããããŸããããã¯éåžžãã¢ã»ã³ããªãšãŠãããã®ãã¹ãã®åŸã«èŠã€ãããŸããããã¯ãããŸããŸãªã³ã³ãœãŒã«ãŠãŒãã£ãªãã£ã䜿çšããŠè¡ãããŸããããšãã°ãPVS-Studioã¯æ¬¡ã®ãŠãŒãã£ãªãã£ãæäŸããŸãã
- PVS-Studio_Cmd.exeïŒãœãªã¥ãŒã·ã§ã³ã®åæãWindowsäžã®CïŒãC ++ãããžã§ã¯ãïŒ
- CLMonitor.exeïŒã³ã³ãã€ã«ç£èŠïŒ
- pvs-studio-analyzerïŒLinux / macOSã§ã®C ++ãããžã§ã¯ãã®åæïŒ
- pvs-studio-dotnetïŒãœãªã¥ãŒã·ã§ã³ã®åæãLinux / macOSäžã®CïŒãããžã§ã¯ãïŒ
- pvs-studio.jarïŒJavaãããžã§ã¯ãã®åæïŒ
- PlogConverterïŒãã°ãã¡ã€ã«ã³ã³ããŒã¿ãŒïŒ
åæãCIã«çµ±åããã«ã¯ã次ã®3ã€ã®ããšãè¡ãå¿ èŠããããŸãã
- ã¢ãã©ã€ã¶ãŒãã€ã³ã¹ããŒã«ããŸãã
- åæãå®è¡ããŸãã
- çµæãæäŸããŸãã
ããšãã°ãPVS-StudioãLinuxïŒDebian-baseïŒã«ã€ã³ã¹ããŒã«ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããå¿ èŠããããŸãã
wget -q -O - https://files.viva64.com/etc/pubkey.txt \
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list \
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
Windowsã·ã¹ãã ã§ã¯ãããã±ãŒãžãããŒãžã£ãŒããã¢ãã©ã€ã¶ãŒãã€ã³ã¹ããŒã«ããããšã¯ã§ããŸããããã³ãã³ãã©ã€ã³ããã¢ãã©ã€ã¶ãŒãå±éããããšã¯ã§ããŸãã
PVS-Studio_setup.exe /verysilent /suppressmsgboxes
/norestart /nocloseapplications
PVS-StudioãWindowsã·ã¹ãã ã«ãããã€ããæ¹æ³ã®è©³çްã«ã€ããŠã¯*ãã¡ã*ãã芧ãã ããã
ã€ã³ã¹ããŒã«åŸãåæãçŽæ¥å®è¡ããå¿ èŠããããŸãããã ããããã¯ã³ã³ãã€ã«ãšãã¹ãã«åæ ŒããåŸã§ã®ã¿è¡ãããšããå§ãããŸããããã¯ãéçåæã«ã¯éåžžãã³ã³ãã€ã«ã®2åã®æéããããããã§ãã
èµ·åæ¹æ³ã¯ãã©ãããã©ãŒã ãšãããžã§ã¯ãã®è©³çްã«äŸåãããããäŸãšããŠC ++ïŒLinuxïŒãªãã·ã§ã³ã瀺ããŸãã
pvs-studio-analyzer analyze -j8 \
-o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w
æåã®ã³ãã³ãã¯åæãã2çªç®ã®ã³ãã³ãã¯ã¬ããŒããããã¹ã圢åŒã«å€æããŠç»é¢ã«è¡šç€ºããèŠåã®å Žåã¯0以å€ã®æ»ãã³ãŒããè¿ããŸããåæ§ã®ã¡ã«ããºã ã¯ããšã©ãŒã¡ãã»ãŒãžãååšããå Žåã«ã¢ã»ã³ããªããããã¯ããã®ã«åœ¹ç«ã¡ãŸãããã ãããã€ã§ã-wãã©ã°ãåé€ããŠãèŠåãå«ãã¢ã»ã³ããªããããã¯ããããšã¯ã§ããŸããã
泚æãããã¹ã圢åŒã¯äžäŸ¿ã§ããããã¯åãªãäŸã§ããããè峿·±ãã¬ããŒã圢åŒã§ããFullHtmlã«æ³šæããŠãã ãããããã¯ããªããããªãã®ã³ãŒããããã²ãŒãããããšãå¯èœã«ããŸãã
CIã§ã®åæã®èšå®ã«ã€ããŠè©³ããã¯ãèšäºãPVS-Studioãšç¶ç¶çãªçµ±åãïŒWindowsïŒãŸãã¯ãTravisCIã§PVS-Studioãèšå®ããæ¹æ³ããåç §ããŠãã ããããïŒLinuxïŒ
ããããŸããããã«ããµãŒããŒã«ã¢ãã©ã€ã¶ãŒãèšå®ããŸãããæªç¢ºèªã®ã³ãŒãã誰ããã¢ããããŒãããå Žåãç¢ºèªæ®µéã«ãªããåé¡ãèŠã€ããããšãã§ããŸããããããžã§ã¯ãã確èªããåŸã§ã¯ãªãå¹ççã«ç¢ºèªã§ãããããããã¯ããŸã䟿å©ã§ã¯ãããŸããããã©ã³ããã©ã®ããã«ããŒãžãããããããã³ãã®åã®ãã«ãªã¯ãšã¹ã段éã
äžè¬ã«ããã«ãªã¯ãšã¹ãã®åæã®èšå®ã¯ãCIã§ã®éåžžã®åæã®éå§ãšå€§å·®ãããŸããã倿Žããããã¡ã€ã«ã®ãªã¹ããååŸããå¿ èŠãããå Žåãé€ããŸããéåžžãå·®ããªã¯ãšã¹ãããããšã§ååŸã§ããŸãã gitã䜿çšãããã©ã³ãéïŒ
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
次ã«ããã®ãã¡ã€ã«ã®ãªã¹ããã¢ãã©ã€ã¶ãŒã«æž¡ãå¿ èŠããããŸããããšãã°ãPVS-Studioã§ã¯ãããã¯-Sãã©ã°ã䜿çšããŠå®è£ ãããŸãã
pvs-studio-analyzer analyze -j8 \
-o PVS-Studio.log \
-S .pvs-pr.list
ãã«ãªã¯ãšã¹ãã®åæã«ã€ããŠè©³ããã¯ã*ãã¡ã*ãã芧ãã ãããCIãèšäºã§æå®ãããŠãããµãŒãã¹ã®ãªã¹ãã«å«ãŸããŠããªãå Žåã§ãããã®ã¿ã€ãã®åæã®çè«ã«é¢ããäžè¬çãªã»ã¯ã·ã§ã³ã圹ç«ã¡ãŸãã
ãã«ãªã¯ãšã¹ãã®åæãæ§æããããšã§ãèŠåãå«ãã³ãããããããã¯ããæªæ€èšŒã®ã³ãŒããééã§ããªãå¢çãäœæã§ããŸãã
ããã¯ãã¹ãŠããŸããã£ãŠããŸããããã¹ãŠã®èŠåã1ãæã§ç¢ºèªã§ããããã«ããããšæããŸããéçã¢ãã©ã€ã¶ãŒããã ãã§ãªãããŠããããã¹ããŸãã¯åçã¢ãã©ã€ã¶ãŒããããããã«ã¯ããŸããŸãªãµãŒãã¹ãšãã©ã°ã€ã³ããããŸããããšãã°ãPVS-Studioã«ã¯ãSonarQubeã«çµ±åããããã®ãã©ã°ã€ã³ããããŸãã
2.éçºè ã®ãã·ã³ãžã®çµ±å
次ã«ãæ¥åžžã®éçºã§äœ¿çšããããã«ã¢ãã©ã€ã¶ãŒãã€ã³ã¹ããŒã«ããŠæ§æããŸãããã®æç¹ã§ãããªãã¯ãã§ã«ã»ãšãã©ã®äœæ¥æ¹æ³ã«ç²ŸéããŠããã®ã§ãããã¯æãç°¡åãªéšåãšèšããŸãã
æãç°¡åãªãªãã·ã§ã³ãšããŠãéçºè ã¯å¿ èŠãªã¢ãã©ã€ã¶ãŒãèªåã§ã€ã³ã¹ããŒã«ã§ããŸãããã ããããã«ã¯æéãããããéçºã®éªéã«ãªããããã€ã³ã¹ããŒã©ãŒãšå¿ èŠãªãã©ã°ã䜿çšããŠãã®ããã»ã¹ãèªååã§ããŸããèªåã€ã³ã¹ããŒã«çšã®PVS-Studioã«ã¯ããŸããŸãªãã©ã°ããããŸãããã ããChocolateyïŒWindowsïŒãHomebrewïŒmacOSïŒããŸãã¯Linuxçšã®æ°åã®ãªãã·ã§ã³ã®ãããªããã±ãŒãžãããŒãžã£ãŒã¯åžžã«ååšããŸãã
次ã«ãå¿ èŠãªãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããããšãã°ãVisual StudioãIDEAãã©ã€ããŒãªã©
3.æ¯æ¥ã®äœ¿çš
ãã®æ®µéã§ãæ¥åžžã®äœ¿çšã§ã¢ãã©ã€ã¶ãŒã®äœæ¥ãé«éåããæ¹æ³ã«ã€ããŠããã€ã説æããŸãããããžã§ã¯ãå šäœã®å®å šãªåæã«ã¯éåžžã«é·ãæéãããããŸããããããžã§ã¯ãå šäœã§äžåºŠã«ã³ãŒãã倿Žããé »åºŠã¯ã©ããããã§ããïŒã³ãŒãããŒã¹å šäœã«ããã«åœ±é¿ãäžããã»ã©å€§èŠæš¡ãªãªãã¡ã¯ã¿ãªã³ã°ã¯ã»ãšãã©ãããŸãããäžåºŠã«å€æŽããããã¡ã€ã«ã®æ°ã10ãè¶ ããããšã¯ãã£ãã«ãªãã®ã§ãããããåæããããšã¯çã«ããªã£ãŠããŸãããã®ãããªç¶æ³ã§ã¯ãå¢ååæã¢ãŒãããããŸããå¿é ããªãã§ãã ãããããã¯å¥ã®ããŒã«ã§ã¯ãããŸãããããã¯ã倿Žããããã¡ã€ã«ãšãã®äŸåé¢ä¿ã®ã¿ãåæã§ããç¹å¥ãªã¢ãŒãã§ãããã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãããIDEã§äœæ¥ããŠããå Žåãããã¯ãã«ãåŸã«èªåçã«è¡ãããŸãã
ã¢ãã©ã€ã¶ãŒãæè¿å€æŽãããã³ãŒãã®åé¡ãæ€åºããå Žåãã¢ãã©ã€ã¶ãŒã¯ãããç¬èªã«å ±åããŸããããšãã°ãPVS-Studioã¯éç¥ã䜿çšããŠããã«ã€ããŠéç¥
ããŸããèšããŸã§ããªããéçºè ã«ããŒã«ã䜿çšããããã«æç€ºããã ãã§ã¯äžååã§ããç§ãã¡ã¯ã©ãããããã圌ãã«ãããäœã§ãããããããŠãããã©ã®ããã§ããããäŒããå¿ èŠããããŸããããšãã°ãPVS-Studioã®ã¯ã€ãã¯ã¹ã¿ãŒãã«é¢ããèšäºã¯æ¬¡ã®ãšããã§ããã奜ã¿ã®ããŒã«ã«ã€ããŠåæ§ã®ãã¥ãŒããªã¢ã«ãèŠã€ããããšãã§ããŸãã
- Windowsã§PVS-Studioãå®è¡ããæ¹æ³ïŒCãC ++ãCïŒïŒ
- Linuxããã³macOSïŒCãC ++ïŒã§PVS-Studioãå®è¡ããæ¹æ³
- PVS-StudioJavaã®èµ·åæ¹æ³
ãã®ãããªèšäºã¯ãæ¥åžžã®äœ¿çšã«å¿ èŠãªãã¹ãŠã®æ å ±ãæäŸããããã»ã©æéã¯ããããŸããã:)
ããŒã«ãçè§£ããæ®µéã§ãããæåã®èµ·åã®1ã€ã§å€ãã®èŠåãæå¶ããŸãããæ®å¿µãªãããéçã¢ãã©ã€ã¶ãŒã¯çæ³çã§ã¯ãªãããã誀æ€ç¥ãçºçããããšããããŸããéåžžãããããæå¶ããã®ã¯ç°¡åã§ããããšãã°ãVisual Studioã®PVS-Studioãã©ã°ã€ã³ã§ã¯ããã¿ã³ã1ã€ã¯ãªãã¯ããã ãã§åå
ã§ãããã ããæå¶ããã ãã§ã¯ãããŸãããããšãã°ããµããŒãããåé¡ãå ±åã§ããŸãã誀æ€ç¥ãä¿®æ£ã§ããå Žåã¯ãå°æ¥ã®æŽæ°ã§ãã³ãŒãããŒã¹ã«åºæã®èª€æ€ç¥ããŸããŸãå°ãªããªãããšã«æ°ä»ãå¯èœæ§ããããŸãã
çµ±ååŸ
ãã®ãããéçåæãéçºããã»ã¹ã«çµ±åãããã¹ãŠã®æ®µéãçµãŸããã CIã§ãã®ãããªããŒã«ãèšå®ããããšã®éèŠæ§ã«ãããããããéå§ããæãéèŠãªå Žæã¯éçºè ã®ã³ââã³ãã¥ãŒã¿ãŒã§ããçµå±ã®ãšãããéçã¢ãã©ã€ã¶ãŒã¯ãã³ãŒããç¡äŸ¡å€ã§ãããšããªãããé ãé¢ããå Žæã§èšãè£å€å®ã§ã¯ãããŸãããããã©ããããããªããç²ããŠãããã©ãããä¿ããäœããå¿ããå Žåã¯æãåºãããã®ã¯ã¢ã·ã¹ã¿ã³ãã§ãã
ãã ãã宿çã«äœ¿çšããªããšãéçåæã«ãã£ãŠéçºãå€§å¹ ã«ç°¡çŽ åãããå¯èœæ§ã¯äœããªããŸããçµå±ã®ãšãããéçºè ã«ãšã£ãŠã®æãéèŠãªå©ç¹ã¯ãè€éã§ç©è°ãéžãã³ãŒãã»ã¯ã·ã§ã³ãèŠã€ããããšã§ã¯ãªããããããæ©æã«æ€åºããããšã«ãããŸããç·šéããã¹ãã®ããã«è¡ããããšãã«åé¡ãèŠã€ããããšã¯äžå¿«ã§ããã ãã§ãªããéåžžã«é·ãããšã«ãåæããŸããéçåæã宿çã«äœ¿çšãããšãã³ã³ãã¥ãŒã¿ãŒäžã®ãã¹ãŠã®å€æŽã確èªããã³ãŒãã®äœæ¥äžã«çãããå Žæãå ±åããŸãã
ãŸããããªããååãã¢ãã©ã€ã¶ãŒãå®è£ ãã䟡å€ããããã©ãããŸã ããããªãå Žåã¯ããéçºããã»ã¹ã§PVS-Studioéçã³ãŒãã¢ãã©ã€ã¶ãŒãå®è£ ããçç±ãã®èšäºãèªãããšããå§ãããŸãã"ãéçåæã«ã¯æéãããããªã©ãéçºè ã®äžè¬çãªæžå¿µã«å¯ŸåŠããŸãã
ãã®èšäºãè±èªã話ãèŽè¡ãšå ±æãããå Žåã¯ã翻蚳ãªã³ã¯ã䜿çšããŠãã ããïŒMaximZvyagintsevãéçåæïŒã¯ããã«ããçµ±åãŸã§ã
