PVS-Studioã¯C / C ++ã³ãŒããåæãããšã©ãŒãé ããŠããå Žæãããã°ã©ããŒã«äŒããããå°æ¥åé¡ã«ãªãå¯èœæ§ã®ããã³ãŒãã®ã»ã¯ã·ã§ã³ã瀺ããŸãã éçºäžã®ãããžã§ã¯ããååã«å€§ããå Žåãåæã«ã¯éåžžã«é·ãæéããããå¯èœæ§ããããŸãã 倧èŠæš¡ãããžã§ã¯ãã®åæãé«éåããã«ã¯ãIncrediBuildããŒã«ã䜿çšã§ããŸãã PVS-Studioã¢ãã©ã€ã¶ãŒãšIncrediBuildããŒã«ãæ¢ã«ã€ã³ã¹ããŒã«ãããŠããå Žåã¯ããã®èšäºããåéãäœããåæãé«éåããæ¹æ³ãåŠã³ãŸãã å°æ¥ãPVS-Studioã¢ãã©ã€ã¶ãŒã¯IncrediBuildãšããã«å¯ã«çµ±åãããã§ãããã ãã ããPVS-Studioã®èµ·åãè€æ°ã®ãã·ã³ã§äžŠè¡ããŠå®è¡ã§ããããšãç¹°ãè¿ããŸãã ç°¡åã§ãã èšäºã§ã¯ããã®æ¹æ³ã説æããŸãã
ã¯ããã«
ãããžã§ã¯ãã®ã³ã³ãã€ã«ã«30å以äžãããéçºè ã¯ã IncrediBuild補åã®ååšãç¥ã£ãŠããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãè€æ°ã®ãã·ã³ã§ã®åæ£ã¢ã»ã³ããªã«ããã³ã³ãã€ã«ãé«éåããããã«èšèšãããŠããŸãã ãã®çµæãè€æ°ã®ã³ã³ãã¥ãŒã¿ãŒïŒããšãã°4å°ïŒãåæã«ãããžã§ã¯ããã³ã³ãã€ã«ããŠããŸãã åã³ã³ãã¥ãŒã¿ãŒã¯ãã¡ã€ã«ã®äžéšãã³ã³ãã€ã«ãããã®çµæãåèšãã«ãæéãæ°åççž®ãããŸãã
æè¿ã PVS-StudioãŠãŒã¶ãŒãããIncrediBuildãµããŒãããœãªã¥ãŒã·ã§ã³ã«è¿œå ããããã«ãšãããªã¯ãšã¹ããå¯ããããŸããã IncrediBuildéçºããŒã ã«é£çµ¡ããæ¯æŽãæ±ããŸããã IncrediBuildããŒã ã¯åãã§å¯Ÿå¿ããPVS-StudioãšIncrediBuildãå ±æããæ¹æ³ãå ±æããæºåãã§ããŸããã
çŸåšïŒPVS-StudioããŒãžã§ã³5.25ïŒããã·ã³ã«PVS-Studioãã€ã³ã¹ããŒã«ãããŠãŒã¶ãŒã«ã¯ãIDEã®ã¡ãã¥ãŒã«ãIncrediBuildã䜿çšããŠPVS-Studioã§ãããžã§ã¯ãããã§ãã¯ããããªãã·ã§ã³ã衚瀺ãããŸããã PVS-Studioã®æ¬¡ã®ããŒãžã§ã³ã§ã¯ããã®ãããªã¡ãã¥ãŒé ç®ã衚瀺ãããå¯èœæ§ããããŸãã ããããä»ã§ã¯ãIncrediBuildãŠãŒã¶ãŒã¯PVS-Studioã䜿çšãããšãã«ãã®ã·ã¹ãã ã®æ©æµãåããããšãã§ããŸãã ã»ãã®å°ãã®éæ³ãå¿ èŠã§ãã ãã®èšäºã§ã¯ãã©ã®åªæãå±ãããã説æããŠããŸãã
PVS-Studioã¯ã©ã®ããã«æ©èœããŸããïŒ
PVS-StudioãšIncrediBuildãçµ±åããã人ã¯ã©ã®ãããªç®æšããããŸããïŒ ãã®æçµçãªç®æšã¯ããœãŒã¹ãã¡ã€ã«ã®åæã«å¿ èŠãªæéãççž®ããããšã§ããããšã¯æããã ãšæããŸãã å®éã«ãPVS-Studioã§ã®ã³ãŒããã§ãã¯ããšã¯äœãããããIncrediBuildã«ãæ¥ç¶ãããæ¹æ³ãèŠãŠã¿ãŸãããã
IncrediBuildã¯ãäž»ã«å©çšå¯èœãªã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹éãã€ãŸãéçºè ã®ã³ââã³ãã¥ãŒã¿ãŒéã§ã¢ã»ã³ããªã¿ã¹ã¯ãåæ£ããããšãç®çãšããŠããŸãã PVS-Studioéçã¢ãã©ã€ã¶ãŒãèµ·åãããšãã«ãäœãæ£ç¢ºã«é åžããå¿ èŠããããŸããïŒ
PVS-Studioã¯ãPVS-Studio.exeã³ãã³ãã©ã€ã³ãŠãŒãã£ãªãã£ã䜿çšããŠããœãŒã¹C / C ++ãã¡ã€ã«ã®çŽæ¥æ€èšŒãå®è¡ããŸãã ãã®ãŠãŒãã£ãªãã£ã¯ã¢ãã©ã€ã¶ã®ã³ã¢ã§ããããã®äœ¿çšåçã«ãããC ++ã³ã³ãã€ã©ã«éåžžã«è¿ããã®ã§ãã ç¹ã«ãPVS-Studio.exeãæ¯åå®è¡ããŠåãœãŒã¹ãã¡ã€ã«ããã§ãã¯ãããã®ãã¡ã€ã«ã®ãã¹ãŠã®ã³ã³ãã€ã«ãã©ã¡ãŒã¿ãŒãšè¿œå ã®ãã©ã¡ãŒã¿ãŒããã®ãŠãŒãã£ãªãã£ã«æž¡ãå¿ èŠããããŸãã
ã泚æ ã¢ãã©ã€ã¶ãŒã¯ãæåã«ãã¡ã€ã«ãååŠçããå¿ èŠããããããã³ã³ãã€ã«ãã©ã¡ãŒã¿ãŒãå¿ èŠã§ãã ãããã£ãŠãã©ã®ããªããã»ããµãã£ã¬ã¯ãã£ãã宣èšãããŠããããããããŒãã¡ã€ã«ãæ¢ãå Žæãªã©ãç¥ã£ãŠããå¿ èŠããããŸãã
PVS-Studio.exeã¯ãæåãã§ã®äœ¿çšãç®çãšããŠããªãããšã«æ³šæããŠãã ããããœãŒã¹ãã¡ã€ã«ããããã£ã¬ã¯ããªã«åã«ãèšå®ãããããšã¯ã§ããŸããã ãã®èµ·åæé ãèªååããããã«ãVisual Studioéçºç°å¢ã«çµ±åãããPVS-Studioãã©ã°ã€ã³ã䜿çšãããŸãã ãŸãã¯ã PVS-Studio Standaloneã·ã§ã«ã䜿çšã§ããŸãã
ãã¡ãããMSBuild以å€ã®ã¢ã»ã³ããªã·ã¹ãã ã䜿çšããå ŽåãPVS-Studio.exeã®å®è¡ã¯ä»ã®ã¢ã»ã³ããªã·ã¹ãã ã«çµ±åã§ããŸãããã¢ãã©ã€ã¶ãŒãŠãŒã¶ãŒãPVS-Studio.exeãçŽæ¥äœ¿çšããªããšããååãåãæ¶ãããã§ã¯ãããŸããã
ã¢ãã©ã€ã¶ãŒã®åäœãæé©åããã«ã¯ãPVS-Studio.exeããã»ã¹ãéå§ãã段éã§åææé ãé åžããå¿ èŠãããããšã¯ãä»ã§ã¯æããã ãšæããŸãã ãã®ç¶æ³ã¯ãIncredibuildãéåžžã®ãããžã§ã¯ããã«ãã§åäœããæ¹æ³ã«éåžžã«äŒŒãŠããŸã-ã³ã³ãã€ã©ïŒããšãã°ãcl.exeïŒãšãªã³ã«ãŒã®éå§ãé åžããŸãã
ãã®å ŽåãIncrediBuildã¯ããŒã«ã«ã¢ã»ã³ããªã·ã¹ãã ãã欺ããŸããã MSBuild.exeã¯ããããŒã«ã«ãã«ã³ã³ãã€ã«ããã³ãªã³ã¯ããã»ã¹ãéå§ããIncrediBuildã¯ããããã®ããã»ã¹ã®å®éã®äœæ¥ããå©çšå¯èœãªã³ã³ãã¥ãŒãã£ã³ã°ããŒãïŒã³ã³ãã¥ãŒã¿ãŒïŒã«çŽæ¥é åžããŸãã
ãã¡ãããIncrediBuildãã³ã³ãã¥ãŒãã£ã³ã°ããŒãéã§åæ£ã§ããããã»ã¹ã«å¶éããªãããšã¯æããã§ãã ã©ã®ããã«ããŠPVS-Studioããã ãŸãããŸããïŒ ãã®å ŽåãPVS-Studio.exeããã»ã¹ã®éå§ã«çŽæ¥é¢äžããŠãã人ãã欺ããå¿ èŠããããŸãã
äŸãšããŠããŠãŒã¶ãŒãMSBuildã§ãã«ããããMicrosoft Visual Studioã®ãããžã§ã¯ããæã£ãŠãããšããäºå®ã«æ³šç®ããŸãããã 次ã«ããã®ãããžã§ã¯ããæ€èšŒããããã«ã圌ã¯ãã®IDEã«PVS-Studioãã©ã°ã€ã³ã䜿çšããå¯èœæ§ãé«ãã§ãããã IDEãã©ã°ã€ã³ã¯IDEèªäœã®äžéšã§ããããããããªãã¯ãããå¿ èŠããããã©ã°ã€ã³ïŒdevenv.exeïŒã«ååãä»ããããšãã§ããŸããããã¯ãMicrosoft Visual StudioãšãŸã£ããåãããã»ã¹ã§ãã
ãŸããPVS-StudioãŠãŒã¶ãŒãéçã¢ãã©ã€ã¶ãŒã䜿çšããå®æçã«ããã«ããµãŒããŒãã§å®è¡ããŠãããšããŸãã ãŸãããããžã§ã¯ããååã«å€§ããïŒæ°åã®ãœãŒã¹ãã¡ã€ã«ïŒãšä»®å®ããŸããããããªããšããŠãŒã¶ãŒã¯æ€èšŒãé«éåããæå³ããããŸããã
ããã¯ãã¹ãŠããŠãŒã¶ãŒããæåã§ãã¡ãã¥ãŒé ç®ããœãªã¥ãŒã·ã§ã³ã®ç¢ºèªããéžæããŠãã¹ããéå§ããªãããšãæå³ããŸãã 圌ã¯ãã®åŸäœãããŸããïŒ
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" "D:\Test\OmniSample\OmniSample (vs2013).sln" /command "PVSStudio.CheckSolution Win32|Release|D:\Test\OmniSample\test.plog"
äžèšã¯ãOmniSampleïŒvs2013ïŒ.slnãããžã§ã¯ããWin32 |ãªãªãŒã¹æ§æã®PVS-Studioåæèµ·åã©ã€ã³ã§ãã åæãå®äºãããšãdevenv.exeããã»ã¹ã¯èªåçã«çµäºããŸãã æ€èšŒãã°ã¯DïŒ\ Test \ OmniSample \ test.plogã«ä¿åãããŸãã ããã¯ãã³ãã³ãã©ã€ã³ããPVS-Studioã䜿çšãããæšæºãã®æ¹æ³ã§ãã詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ããã
ç¹°ãè¿ãã«ãªããŸããããããPVS-Studioã䜿çšããå¯äžã®æ¹æ³ã§ã¯ãããŸããããããããããããããã«ãããã«ã€ããŠè©³ãã説æããŸãã
ãã®ã³ãã³ããå®è¡ãããšã©ããªããŸããïŒ åè¿°ã®ããã«ãèµ·åãããdevenv.exeããã»ã¹ã¯ããœãŒã¹ãã¡ã€ã«ããšã«1ã€ãPVS-Studio.exeããã»ã¹ã®äžŠåå®è¡ãéå§ããŸãã ããã€ã®ãã¹ã¯ãŒãããã»ã¹ãéå§ããããã¯ãã¢ãã©ã€ã¶ãŒã®èšå®ã«ç€ºãããŠããããã®èšå®ã¯å€æŽã§ããŸãã ããã©ã«ãã§ã¯ãPVS-Studioã¯ã·ã¹ãã å ã®è«çã³ã¢ãšåãæ°ã®ããã»ã¹ãåæã«éå§ããŸãã
IncrediBuildã¯ã©ã®ããã«åœ¹ç«ã¡ãŸããïŒ
1000ãã¡ã€ã«ã®ãããžã§ã¯ããããã4ã€ã®ã³ã¢ãæã€ãã·ã³ã§åæãå®è¡ãããšããŸãã ããã¯ãdevenv.exeã¢ãã©ã€ã¶ãŒããããžã§ã¯ãå šäœãæ£åžžã«æ€èšŒããããã«250åã®å埩ïŒå4ããã»ã¹ïŒãè¡ãå¿ èŠãããããšãæå³ããŸãã IncrediBuildã¯ã©ã®ããã«åœ¹ç«ã¡ãŸããïŒ
PVS-StudioãŠãŒã¶ãŒã«ããã«3å°ã®ãã·ã³ããããããããã§4ã€ã®ããã»ããµã³ã¢ã䜿çšã§ãããšããŸãã PVS-Studio.exeã®èµ·åããããã®4å°ã®ãã·ã³ã«ãåæ£ãã§ããã°ã250ã®ãå埩ãã ãã§ãªãã62.5ã ãã§æžã¿ãŸãïŒã³ã¢ã16åããããïŒã
å¥ã®ã³ã³ãã¥ãŒã¿ãŒã§ã¢ãã©ã€ã¶ãŒã¹ã¿ãŒããé åžããã«ã¯ã IBConsoleã³ãã³ãã©ã€ã³ãŠãŒãã£ãªãã£ã䜿çšããŸãã
ibconsole /command=incredi.bat /profile=incredi.xml
incredi.xmlãã¡ã€ã«ã«ã¯æ¬¡ã®å 容ãå«ãŸããŠããå¿ èŠããããŸãã
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Profile FormatVersion="1"> <Tools> <Tool Filename="devenv" AllowIntercept="true" /> <Tool Filename="PVS-Studio" AllowRemote="true" /> </Tools> </Profile>
ã芧ã®ãšãããdevenvã®ã¢ã¯ãã£ããã£ããååãããPVS-Studioããã»ã¹ããé åžãããããšãã§ããŸãã incredi.batãã¡ã€ã«ã§ã¯ãåã®èšäºã§èª¬æããdevenv.exeã®èµ·åè¡ãæå®ããå¿ èŠããããŸãã ãŸããPVS-Studioèšå®ã§äžŠååã¬ãã«ã4ãã16ã«å€æŽããããšãå¿ããªãã§ãã ããã
IncrediBuildã4ã€ã®ãã·ã³ã«ããªã€ã³ã¹ããŒã«ãããæ£ããæ§æãããŠãããšä»®å®ããŸãã ibconsoleã³ãã³ããå®è¡ãããšãPVS-Studio.exeã®èµ·åãããã4å°ã®ã³ã³ãã¥ãŒã¿ãŒéã§åæ£ãããåèšåææéãççž®ãããããšãããããŸãã
åæã«ããã®ã³ãã³ããå®è¡ããããã·ã³ãé€ããã¹ãŠã®ãã·ã³ã§ãPVS-StudioãšVisual Studioã®äž¡æ¹ãããã³æ€èšŒæžã¿ã®ãœãŒã¹ãä¿æããå¿ èŠã¯ãããŸããã IncrediBuildããããåŠçããŸãã
åææéã¯ã©ããããççž®ãããŸããïŒ æåã¯4ã³ã¢ã§ã¯ãªã16ã³ã¢ã§ãããããæ£ç¢ºã«4åæžå°ããããã«èŠãããããããŸãããå®éããã®æ°ã¯4æªæºã§ãããå€ãã®èŠå ã«äŸåããŸãã ãããã®èŠå ã«ã¯ãã³ã³ãã¥ãŒã¿ãŒã®ããã©ãŒãã³ã¹ãä»ã®ã¿ã¹ã¯ãšã®ã¯ãŒã¯ããŒãããããã¯ãŒã¯åž¯åå¹ ãªã©ãå«ãŸããŸãã ãããã4æªæºã«ãªããšç¢ºä¿¡ã§ããŸãã ãããã«ããããããã«ããã¯å¹æãã芳å¯ãããŸãã çµå±ãåæã®ã€ãã·ãšãŒã¿ãŒïŒdevenv.exeïŒã¯PVS-Studio.exeèµ·åã®çµæãåŠçããå¿ èŠããããŸãã ç§ãã¡ã®å®éšã§ã¯ã4å°ã®è»ã䜿çšãããšã2.5ã3.5åã®å éãåŸãããŸããã
ãŠãŒã¶ãŒãããœãªã¥ãŒã·ã§ã³ã®ç¢ºèªãé ç®ãéžæããŠåæãæåã§éå§ãããå Žåã¯ãdevenv.exeã®åçŽãªåŒã³åºããããã«æžã蟌ãããšã§incredi.batãã¡ã€ã«ã®å 容ãå€æŽããã ãã§ã-Visual StudioãŠã£ã³ããŠãéããããããã¹ãŠã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãåæ£èµ·åã¢ãã©ã€ã¶ãŒã ãã¡ãããããã¯åã«Visual StudioãéããŠãcheck in IncrediBuildãã¡ãã¥ãŒé ç®ãéžæããã»ã©äŸ¿å©ã§ã¯ãªããå°æ¥çã«ã¯ãã®ãããªé ç®ãå®éã«PVS-Studioã¡ãã¥ãŒã«è¡šç€ºãããå¯èœæ§ããããŸãã
ãããã«
IncrediBuildãšPVS-Studioã¯ãçŸåšã®ããŒãžã§ã³ã§æ¢ã«äžç·ã«äœ¿çšã§ããŸãã äœãåé¡ãããå Žåã¯ãå¿ ããé£çµ¡ãã ãã ããæäŒããããŠããã ããŸãã
ãã®èšäºãè±èªã話ãèŽè¡ãšå ±æãããå Žåã¯ã翻蚳ãªã³ã¯Paul Eremeevã䜿çšããŠãã ããã PVS-StudioãšIncrediBuild Distributed Build Systemã®çµ±å ã
èšäºãèªãã§è³ªåããããŸããïŒ
å€ãã®å Žåãèšäºã«ã¯åã質åãå¯ããããŸãã ããã§åçãéããŸããïŒ PVS-StudioããŒãžã§ã³2015ã«é¢ããèšäºã®èªè
ããã®è³ªåãžã®åç ã ãªã¹ããã芧ãã ããã