ç§ãã¡ãçŽé¢ããæ°žé ã®è³ªåã®1ã€ã¯ããPVS-Studioã䜿çšããŠPVS-Studioããã¹ãããŸãããïŒ æ€èšŒçµæã«é¢ããèšäºã¯ã©ãã«ãããŸããïŒã ã¯ããç§ãã¡ã¯å®æçã«ãããè¡ã£ãŠãããããèªåã§èŠã€ãããšã©ãŒã«é¢ããèšäºãæžãããšãã§ããŸããã§ããã ééãã¯ãã³ãŒããèšè¿°ãã段éã§éçºè ã«ãã£ãŠä¿®æ£ãããŸããããã®æç¹ã§æžãåºãããšãåžžã«å¿ããŠããŸãã ãããä»åã¯èªè ã¯å¹žéã§ããã CïŒã®ç£èŠã«ãããVisual Studioã®ãã©ã°ã€ã³ã³ãŒãã¯ãåœç€Ÿãå®æœããæ¯æ¥ã®å€éãã§ãã¯ã«è¿œå ãããŸããã§ããã ãŸããããã«å¿ããŠãã¢ãã©ã€ã¶ãŒã³ã¢ãšã¯ç°ãªããCïŒPVS-Studioã®éçºå šäœãéããŠãšã©ãŒãæ€åºãããŸããã§ããã 圌ããèšãããã«ãéã®è£å°ã¯ãããŸããããããŠããã®ãããã§ããªãã¯ãã®èšäºãèªã¿ãŸããã
PVS-Studioã®ãã¹ãã«ã€ããŠããå°ã
ããããèªè ã¯ãPVS-Studioã®ãã¹ãããã»ã¹ãäžè¬çã«ã©ã®ããã«æ§ç¯ãããŠããããç¥ããããšæãã§ãããã ãã®ãããã¯ã«é¢ããèšäºã¯ãã§ã«æžããŠããŸãã ãããããã以æ¥å€ãã®æéãçµéããäœããå€ãããŸããã ãããã£ãŠãçŸåšã®ç¶æ³ãç°¡åã«èª¬æããŸãã
PVS-Studioãéçºããå Žåã7ã€ã®ãã¹ãæ¹æ³ã䜿çšããŸãã
- éçºè ã®ãã·ã³ã§ã®éçã³ãŒãåæã ãã¹ãŠã®éçºè ã«PVS-Studioãã€ã³ã¹ããŒã«ãããŠããŸãã æ°èŠãŸãã¯å€æŽãããã³ãŒãã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«åæã¡ã«ããºã ã䜿çšããŠããã«ãã§ãã¯ãããŸãã C ++ããã³CïŒã³ãŒãããã§ãã¯ãããŸãã
- å€éãã«ãäžã®éçã³ãŒãåæã èŠåã«æ°ä»ããªãã£ãå Žåã¯ããµãŒããŒã§ã®å€éã®ã¢ã»ã³ããªã®æ®µéã§èŠåã衚瀺ãããŸãã PVS-Studioã¯ãCïŒããã³C ++ã³ãŒãããã§ãã¯ããŸãã ããã«ãC ++ã³ãŒãã®ãã¹ãã«ãClangã䜿çšããŸãã
- ã¯ã©ã¹ãã¡ãœãããé¢æ°ã®ã¬ãã«ã®åäœãã¹ãã ãã¹ãçšã«å€§éã®å ¥åããŒã¿ãæºåããå¿ èŠããããããå€ãã®ãã€ã³ãããã¹ãããã®ã¯é£ãããããããŸãéçºãããã·ã¹ãã ã§ã¯ãããŸããã ããé«åºŠãªãã¹ãã«äŸåããŠããŸãã
- ãšã©ãŒã®ããç¹å¥ã«æºåããããŒã¯ããããã¡ã€ã«ã®ã¬ãã«ã®æ©èœãã¹ãã
- ã¡ã€ã³ã·ã¹ãã ããããŒãã¡ã€ã«ãæ£ãã解æããããšã確èªããæ©èœãã¹ãã
- åã ã®ãµãŒãããŒãã£ãããžã§ã¯ããšãœãªã¥ãŒã·ã§ã³ïŒãããžã§ã¯ããšãœãªã¥ãŒã·ã§ã³ïŒã®ã¬ãã«ã®ååž°ãã¹ãã ç§ãã¡ã«ãšã£ãŠæãéèŠã§æçšãªã¿ã€ãã®ãã¹ãã ãããå®è£ ããããã«ãC ++ã§105åã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãããCïŒã§49åã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããå®æçã«ãã§ãã¯ããŸãã å€ãåæçµæãšæ°ããåæçµæãæ¯èŒããŠãäœããå£ãããæ°ãã蚺æã¡ãã»ãŒãžã磚ãããšã管çããŸãã
- Visual Studioãšçµ±åããã¢ãã€ã³ã§ããæ¡åŒµãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®æ©èœãã¹ãã
ãã©ã°ã€ã³ãã§ãã¯ãéããã®ã¯ã©ãããŠã§ããïŒ ç¥ããŸãã ãµãŒããŒã«ãã©ã°ã€ã³ã³ãŒããã§ãã¯ãè¿œå ããããšã誰ãèŠããŠããŸããã§ããã æ°ããCïŒã¢ãã©ã€ã¶ãŒã®ãã¹ããè¿œå ãããŸãããããã©ã°ã€ã³ã¯è¿œå ãããŠããŸããã ãã®çµæãCïŒã¢ãã©ã€ã¶ãŒã¯ç¬èªã«ãšã©ãŒãéçºããŠçºèŠããŸããã ãããŠãåããCïŒã§æžããããã©ã°ã€ã³ã¯å芳è ã®ãŸãŸã§ããã æè¿ã¯ããŸãå€ãã£ãŠããŸããã ãã®ããããã©ã°ã€ã³ã³ãŒãã¯ã»ãšãã©æ©èœããªãã£ããããã€ã³ã¯ãªã¡ã³ã¿ã«åæã¯åœ¹ã«ç«ããªãããšãããããŸããã ããããå€éãã§ãã¯ã¯ãããŸããã§ããã
PVS-Studioãã©ã°ã€ã³
ã客æ§ãžã®èª å®ããšãªãŒãã³ãã®ãããã§ããŸãäŒè©±ãåé¿ããããã«ããèŠç¥ãã¬äººã®ç®ã«æç¹ãèŠããŸãããèªåã®ç®ã§ãã°ã«æ°ã¥ããªãããšãç§ãã¡ã¯ãã¹ãŠã®ã¿ã€ããã¹ãšãšã©ãŒãé¢çœããã®ãŸã§æžããŸãã èŠã€ãã£ããšã©ãŒã¯ãã¹ãŠãCïŒããµããŒãããPVS-Studio v6.02ã¢ãã©ã€ã¶ãŒãåå ã§ãã
å®éã®ãšã©ãŒããå§ããŸããããããã¯ããããã®è¡ãæžããŠããæç¹ã§ãã§ã«ä¿®æ£ãããŠããŸãã
public void ProcessFiles(....) { .... int RowsCount = DynamicErrorListControl.Instance.Plog.NumberOfRows; if (RowsCount > 20000) DatatableUpdateInterval = 30000; //30s else if (RowsCount > 100000) DatatableUpdateInterval = 60000; //1min else if (RowsCount > 200000) DatatableUpdateInterval = 120000; //2min .... }
ãããã£ãŠãã¢ãã©ã€ã¶ãŒã¯2ã€ã®èŠåãçºè¡ããŸããã
V3022åŒ 'RowsCount> 100000'ã¯åžžã«falseã§ãã ProcessingEngine.cs 559
V3022åŒ 'RowsCount> 200000'ã¯åžžã«falseã§ãã ProcessingEngine.cs 561
人éã®è³ã¯ãåçŽãªãã®ããè€éãªãã®ãŸã§ããŸãã¯ãã®å Žåã®ããã«å°ããªãã®ãã倧ããªãã®ãŸã§ããã¹ãŠã®å€ããã§ãã¯ãããšããé£ç¶çãªæèã«æ £ããŠããŸãã ãã®å Žåããã®ãããªäººéã®è«çã«ãããããã°ã©ã ãæ£ããåäœããŸããã§ããã ããŒãã«å ã®è¡æ°ã®ç¢ºèªäžã«ãšã©ãŒãçºçããŸããã 20,000è¡ãè¶ ããæåã®æ¡ä»¶ã確èªããåŸãããã°ã©ã ã¯ããã«DatatableUpdateIntervalå€ã30ç§ã«èšå®ããŸãã ãããŠããã¡ãããæ®ãã®æ¡ä»¶ã¯ãã§ãã¯ããŸããã RowsCountã1,000,000ã ã£ããšããŠãã
ãã®ã³ãŒãã¯ãVisual Studioã®PVS-Studio IDEãŠã£ã³ããŠã§ãšã©ãŒã¡ãã»ãŒãžã®åºåãæé©åããããã«äœæãããŸããã åœåãPVS-Studioãã©ã°ã€ã³ã¯åä¿¡ãããšããã«åæçµæãçæããŸããã ã€ãŸãããããã®çµæãcmdããã»ã¹ïŒã¢ãã©ã€ã¶ãŒã³ã¢ãéå§ããïŒããæ¥ãç¬éã§ãã ããããéåžžã«å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®æ·±å»ãªããã¬ãŒããã«æ°ã¥ãå§ããŸããã ç¹ã«ããããžã§ã¯ãã«å€æ°ã®* .cãã¡ã€ã«ãååšããå Žåã«åé¡ãçºçããŸããã ããã¯ã* .cãã¡ã€ã«ãéåžžã«è¿ éã«ãã§ãã¯ãããUIã¹ã¬ãããåžžã«çµæããŒãã«ã®åæç»ã§ããžãŒã ã£ãããã§ãã æŽæ°ã®éã«é 延ãè¿œå ããããšã決å®ãããŸãããããã¯ãã¡ãã»ãŒãžæ°ã®å¢å ãšãšãã«å¢å ããŸãã ãªã¹ãå ã®20,000ã¡ãã»ãŒãžã«éããåã«ãé 延ã¯15ç§ã«èšå®ãããŠããŸããã
ãã®å Žåãç§ãã¡ã¯å¹žéã§ãããããã°ã©ã ã®é床ããããã«äœäžããŸãïŒç¹ã«ããã§ãã¯åŸã«æ°åäžãè¶ ããã¡ãã»ãŒãžãåä¿¡ããããšã¯éåžžã«ãŸããªã®ã§ïŒãããã®ã¡ãã»ãŒãžã¯ããæ·±å»ãªã±ãŒã¹ãèå¥ããããšãç®çãšããŠããŸãã ããšãã°ãInfragistics瀟ã®ãããžã§ã¯ãã®ããã«ã
public static double GenerateTemperature(GeoLocation location){ .... else if (location.Latitude > 10 || location.Latitude < 25) .... else if (location.Latitude > -40 || location.Latitude < 10) .... }
ããã§ããæ¡ä»¶ã¯åžžã«çãšãªãã誀ã£ãèšç®ã«ã€ãªãããŸãã
次ã®ãšã©ãŒã¯ããããžã§ã¯ãã«ãšã£ãŠããæ·±å»ã§ãã
public bool GeneratePreprocessedFile(....) { .... if (info.PreprocessorCommandLine.Contains(" /arch:SSE")) ClangCommandLine += " /D \"_M_IX86_FP=1\""; else if (info.PreprocessorCommandLine.Contains(" /arch:SSE2")) ClangCommandLine += " /D \"_M_IX86_FP=2\""; else if (info.PreprocessorCommandLine.Contains(" /arch:IA32")) ClangCommandLine += " /U \"_M_IX86_FP\""; else if (info.PreprocessorCommandLine.Contains(" /arch:AVX")) ClangCommandLine += " /D \"_M_IX86_FP=2\""; .... }
V3053éå°ãªãã§ãã¯ã ãµãã¹ããªã³ã°ã/ archïŒSSEãããã³ã/ archïŒSSE2ãã®æ€çŽ¢ãå«ãæ¡ä»¶ã調ã¹ãŸãã StandaloneProjectItem.cs 229
ééãã®æ°ã¯ç°ãªããŸããããã®æ¬è³ªã¯åãã§ãã 人éã®è«ç-åçŽãªãã®ããè€éãªãã®ãžãšç¶ãããã«ãããã§å€±æãããŠãã ããã ãµãã¹ããªã³ã°ã/ archïŒSSEãã®info.PreprocessorCommandLineã®å€ããã§ãã¯ããããšã«ããããinfo.PreprocessorCommandLineãã«æ¬¡ã®ãµãã¹ããªã³ã°ã/ archïŒSSE2ããå«ãŸããå Žåã®æ¡ä»¶ãåæã«æºãããŸãã ã芧ã®ãšãããèªç¶ã«èªããããã¹ãã¯ãããã°ã©ã ã§èšå®ãããããžãã¯ã«ãŸã£ãã察å¿ããŠããŸããã PreprocessorCommandLineã«ã/ archïŒSSE2ããå«ãŸããŠããããšãããã£ãŠããŠããã³ãŒãã®ç®ãéããŠãã/ D \ã_ M_IX86_FP =ã§ã¯ãªããå€ã/ D \ã_ M_IX86_FP = 2 \ ""ãææ©çã«ClangCommandLineå€æ°ã«è¿œå ããŸã1 \ "";
ã¢ãã©ã€ã¶ãŒã®èŠ³ç¹ããããšã©ãŒã¯ã/ archïŒSSE2ãã©ã°ãã³ã³ãã€ã©ãŒã«æž¡ããšãã®_M_IX86_FPãã¯ãã®èª€ã£ãå®çŸ©ã«ãããŸããã å®éãåæèªäœã®åã®ååŠçã«ã¯ãPVS-Studioã¯clïŒæšæºã®Visual C ++ããªããã»ããµïŒã®ä»£ããã«Clangã䜿çšããŸãã Clangã¯ã¯ããã«é«éã§ãã æ®å¿µãªãããClangã§ã®Microsoftã®C ++èšèªæ¹èšã®ãµããŒãã¯ãŸã çæ³ããã¯ã»ã©é ãã§ãããããã£ãŠãClangãäœããååŠçã§ããªãã£ãå ŽåãPVS-Studioã¯clãåŒã³åºããŸãã ãã®ãããã³ã³ãã€ã©clã®ãã©ã°ãå€æããŠClangãå®çŸ©ããŸãã 詳现
ãã®ãšã©ãŒã¯ãã»ãšãã©ã®å ŽåãClangæäœã®ãšã©ãŒãåæçµæã®èª€ã£ãåºåã«ã¯è³ããªãã£ããããã³ãŒãå ã«éåžžã«é·ãéååšããŠããŸããã
ãã1ã€ã®æ¬åœã®ééãã¯ãProcessAnalyzerOutputé¢æ°ã®åŒã³åºãã§ãã
private void PVSFinishKey(ref Hashtable PathExcludes) { .... ProcessAnalyzerOutput(fileName, projectName, task.strStandardOutput, task.strStandardError, false, ref ParsedOutput, ref PathExcludes); }
é¢æ°ã®å®£èšãèŠãŠãããšã©ãŒã«æ°ä»ãã®ã¯ç°¡åã§ã¯ãããŸããã
private void ProcessAnalyzerOutput( String fileName, String projectName, String strStandardError, String strStandardOutput, bool LargeFileMode, ref List<ErrorInfo> ParsedOutputLines, ref Hashtable PathExcludes) { .... }
åé¡ã¯ãé¢æ°ãã©ã¡ãŒã¿ãŒåãšããã«æž¡ãåŒæ°åã®äžäžèŽã§ãã
V3066 ãProcessAnalyzerOutputãã¡ãœããã«æž¡ãããåŒæ°ã®èª€ã£ãé åºã®å¯èœæ§ïŒãstrStandardErrorãããã³ãstrStandardOutputãã ProcessingEngine.cs 1995
é¢æ°ãã©ã¡ãŒã¿ãŒã®ãã®ãããªé·ããªã¹ãã§ã¯ãäžäžèŽãæ€åºããããšã¯åžžã«å°é£ã§ãã ãã®ãããªå Žåã®IntelliSenseã§ãããåžžã«ä¿åããããšã¯éããŸããã 倧èŠæš¡ãªãããžã§ã¯ãã§ã¯ãé床ãäœäžããå¯èœæ§ããããŸãããã®ãããçŸåšã©ã®èŠçŽ ã䜿çšããŠããã®ããå¿ ãããæ確ã§ã¯ãããŸããã
ãã®ãããéåžžã«äžå¿«ãªç¶æ³ãçºçããå¯èœæ§ããããŸãã ãã®èšºæã¯ãä»ã®ãã¹ãŠã®ãã¥ãŒãªã¹ãã£ãã¯èšºæãšåæ§ã«ç¬¬3ã¬ãã«ã«å±ããŸãããéåžžã«æçšã§ãããç¡èŠããŠã¯ãªããŸããã
ãã®ãšã©ãŒãæ€åºãããå Žæã¯ãã¹ã¿ããã§ãã空è¡ä»¥å€ã®ãã®ãstderrããã³stdoutãã©ã¡ãŒã¿ãŒã«å ¥åãããããšã¯ãããŸããã ãã®ãšã©ãŒã¯ããã®ã¹ã¿ãã®äœ¿çšãéå§ãããšããã«èŠã€ãããŸãã
å¥ã®ãšã©ãŒã¯ãçŸåšéçºäžã®V3072ãšããçªå·ã®èšºæã«ãã£ãŠç¹å®ãããŸããã
sealed class ProcessingEngine { .... private readonly PVSMessageBase _retiredMessageBase; .... } public sealed class PVSMessageBase : ContextBoundObject, IDisposable { .... }
ãã®èšºæã¯ãIDisposableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããã¿ã€ãã®IDisposableã€ã³ã¿ãŒãã§ã€ã¹ãã£ãŒã«ããå®è£ ããªãã¯ã©ã¹ã§æ€åºããããšãç®çãšããŠããŸãã åæ§ã®ã³ãŒãã¯ãã¯ã©ã¹ã®ãªããžã§ã¯ãã䜿çšããåŸãããã°ã©ããŒãããã€ãã®ãªãœãŒã¹ãã¯ãªã¢ããã®ãå¿ããããšãããããšã瀺ããŠããŸãã
ãã®å ŽåãProcessingEngineã¯ã©ã¹ïŒIDisposableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããªãïŒã«ã¯ãIDisposableã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããPVSMessageBaseã¯ã©ã¹ã®ãã£ãŒã«ããå«ãŸããŸãã
ãã®å¿çã¯ãããã¡ããšãããã¢ãŒããã¯ãã£ã§ã¯ãªãããã«ã誀æ€ç¥ã«èµ·å ããå¯èœæ§ããããŸãã ProcessingEngineã¯ã©ã¹ã¯ãããã°ã©ã ã§ã·ã³ã°ã«ãã³ãšããŠäœ¿çšãããŸãã ãããã£ãŠãPVSMessageBaseãã£ãŒã«ããšåæ§ã«ãããã°ã©ã ã®å®è¡äžã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã®ã¿ãååšããŸãã ãªãœãŒã¹ã¯ãããã°ã©ã ã®å®äºæã«è§£æŸãããŸãã
æªè ãããããåãã§ããã ããããã«ãã³ãŒãã«ã¯ä»ã®é倧ãªãšã©ãŒã¯èŠã€ãããŸããã§ããã æ®ãã®ããšã©ãŒãã¯ã»ãšãã©ã®å Žåãã念ã®ããããšãã圢åŒãæããŸãã
ããšãã°ã次ã®åŒã§ã¯ïŒ
private int GetSetRemainingClicks(....) { .... if ((CurrentRemClicks != 0) || ((CurrentRemClicks == 0) && DecrementCurrent)) { .... } .... }
V3031éå°ãªãã§ãã¯ãç°¡çŽ åã§ããŸãã ã||ã æŒç®åã¯å察ã®åŒã§å²ãŸããŠããŸãã DynamicErrorList.cs 383
ãã®ã³ãŒãã¯å®å šã«æ¬¡ã®ããã«çž®å°ã§ããŸã
if (CurrentRemClicks != 0 || DecrementCurrent) {
ããã€ãã®ãåä¿éºããèŠã€ãããŸããã
private void comboBoxFind_KeyDown(object sender, KeyEventArgs e) { .... if (e.KeyCode == Keys.Escape) { if (e.KeyCode == Keys.Escape) { ProcessingEngine.PluginInstance.HidePVSSearchWindow(); } } }
ãããŠãããã§ãæãããªããšãäºéã«ãã§ãã¯ãããŸããã
public IList<KeyValuePair<String, DataRow>> GetSortedNonRetiredRows() { if (ei.ProjectNames.Count == 1) { .... } else if (ei.ProjectNames.Count > 1) { .... } else if (ei.ProjectNames.Count == 0) { .... } }
V3022åŒ 'ei.ProjectNames.Count == 0'ã¯åžžã«trueã§ãã PlogController.cs 277
ãŸããããªãããããå®å šã«ãã¬ã€ãå§ãããªããããªãã¯æåŸãæ¡ã£ãŠãã¹ãŠããã§ãã¯ããå¿ èŠããããŸãã ããã®äŸã®ããã«ïŒ
void ProcessVCProjAnalysisIntegration (String Path, bool Remove) { if (Remove) { .... } else if (!Remove) { .... } }
V3022åŒ 'ïŒRemove'ã¯åžžã«trueã§ãã VCProjectEngine.cs 733
ã³ãŒãã¯ãéåžžã«å¥åŠãªå¹œéãã«ãªãããšããããŸããããã¹ãŠã«ã€ããŠæžãããšãçŽæããå Žåã¯ã次ã®ããã«èšè¿°ããŸãã
private bool PostWebRequest(String post_data) { .... String Sts = ex.Status.ToString() as string; .... string sts = wex.Status.ToString() as string; .... }
V3051éå°ãªåãã£ã¹ãã ãªããžã§ã¯ãã¯ãã§ã«ãStringãã¿ã€ãã§ãã TrialExtensionRequest.cs 181
V3051éå°ãªåãã£ã¹ãã ãªããžã§ã¯ãã¯ãã§ã«ãStringãã¿ã€ãã§ãã TrialExtensionRequest.cs 241
ã³ãŒãã«ã¯æ¬¡ã®ãã§ãã¯ãå«ãŸããŠããŸãã
private String Get_StructMemberAlignment() { .... if (CompileAsManaged.Equals("false") || String.IsNullOrEmpty(CompileAsManaged)) Params += " /GR-"; .... }
V3027å€æ° 'CompileAsManaged'ã¯ãåãè«çåŒã®ãã«ã«å¯ŸããŠæ€èšŒãããåã«ãè«çåŒã§äœ¿çšãããŸããã MSVCParamsGenerator.cs 801
ãããŠãŸãïŒ
private String Get_DisableLanguageExtensions() { .... else if (DisableLanguageExtensions.Equals("false") || String.IsNullOrEmpty(DisableLanguageExtensions)) { .... }
V3027å€æ° 'DisableLanguageExtensions'ã¯ãåãè«çåŒã§nullã«å¯ŸããŠæ€èšŒãããåã«ãè«çåŒã§äœ¿çšãããŸããã MSVCParamsGenerator.cs 1118
Equalsé¢æ°ãåŒã³åºãããåŸãnullã®å€æ°ããã§ãã¯ããã®ã¯ééãã§ãã å®éãAPIã«ãããšãå€æ° "CompileAsManaged"ããã³ "DisableLanguageExtensions"ãnullã«ããããšã¯ã§ããªããããå®éã®ééãã¯ãããŸããã ãããã£ãŠããã§ãã¯ã¯æ¬¡ã®ããã«ç°¡ç¥åã§ããŸãã
CompileAsManaged == string.Empty DisableLanguageExtensions == string.Empty
ã¢ãã©ã€ã¶ãŒãã泚ç®ã«å€ããã³ãŒããæžããä»ã®å ŽæãèŠãŠã¿ãŸãããã
private static DialogResult ShowModalDialog(....) { .... if (buttons == MessageBoxButtons.YesNo || buttons == MessageBoxButtons.YesNoCancel) return DialogResult.Yes; else if (buttons == MessageBoxButtons.OKCancel) return DialogResult.OK; else return DialogResult.OK; }
V3004 ãthenãã¹ããŒãã¡ã³ãã¯ãelseãã¹ããŒãã¡ã³ããšåçã§ãã Utilities.cs 496
MessageBoxButtons.OKCancelã®ç䟡æ§ã®ãã¿ã³å€æ°ããã§ãã¯ããããšã¯æå³ããããŸããã ãšã«ãããDialogResult.OKãè¿ããŸãã ãã®çµæããã®å Žåãã³ãŒãã¯æ¬¡ã®ããã«åæžãããŸãã
return (buttons == MessageBoxButtons.YesNo || buttons == MessageBoxButtons.YesNoCancel) ? DialogResult.Yes : DialogResult.OK;
ãããŠæåŸã®1ã€ã ããã§ã¯ããªãã¡ã¯ã¿ãªã³ã°ãåå ã§ããå¯èœæ§ãæãé«ããªããŸãã
public bool ReadPlog(....) { .... XmlReadMode readMode = XmlReadMode.Auto; .... readMode = dataset.ReadXml(filename); .... }
V3008 ãreadModeãå€æ°ã«ã¯ãé£ç¶ããŠ2åå€ãå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ512ã507ãPlogController.cs 512
ãããã«
ã³ãŒãã確èªãããšãããŸããŸãªæ°æã¡ã«ãªããŸãã èªåã®æã§ééããç¯ããå Žåãããªãã¯ãããä¿®æ£ãããããã®èšãèš³ãèŠã€ããããšããŠããŸãã ééããç°ãªãå Žåãããªãã¯ããã«å¯ŸããŠå šãç°ãªãææ ãçµéšããŸãã ããã¯ãç§ãã¡ã¯ãã¹ãŠäººéã§ãããç§ãã¡ã¯ãã¹ãŠééã£ãŠãããšããèªèã®å€§ããªåé¡ã§ãã ç§ãã¡ã®äžéšã¯ãããèªèããŠãããããã¯ãã§ã«è¯å¥œã§ãããäžéšã¯æç¶ããŠããŸãïŒ
ã...ãããã¯ééãã§ã¯ãããŸãã...ã
ã...ç°¡åã«ä¿®æ£ã§ããŸã...ã
-... 5幎åãããã誰ãäžæºãèšããªãã£ã...
ã¯ãã確ãã«ãå€ãã®ãšã©ãŒã¯ç°¡åã«ä¿®æ£ã§ããããã¯éåžžã«è¯ãããšã§ãã ãããããã®ã¿ã€ããã¹ãééãã«æ°ä»ãããšã¯éåžžã«å°é£ã§ãã å€ãã®å Žåããšã©ãŒã¯ããã°ã©ããŒã§ã¯ãªãããã¹ã¿ãŒã«ââãã£ãŠãããã«æªãããšã«ãŠãŒã¶ãŒã«ãã£ãŠèªèãããŸãã
ã¢ãã©ã€ã¶ã®ç®çã¯ããããã®ãšã©ãŒãšã¿ã€ããã¹ã確èªã§ããããã«ããããšã§ãã åæããŠãã¡ã¢åž³ãããMicrosoft Wordã§å€§ããªããã¹ããæžãæ¹ãã¯ããã«è¯ãã§ãã ãŸããããã°ã©ã ã³ãŒãã¯ãå€ãã®ã»ã³ã»ãŒã·ã§ãã«ãªãã¹ãã»ã©ãŒããã倧ããããšããããããŸãã
å®éãPVS-Studioã¯ãã³ãŒãçšã®Microsoft Wordã®ã¹ãã«ãã§ãã¯ã§ãã 圌ã¯ããã§ããªããæ¥ãã§å°å°ãããããŸãã¯ããããããªãã®èããééã£ãæ¹æ³ã§è¡šæãããšããªãã«èšãã§ãããã åæ-èªè ã«ãšã£ãŠæ¬ã®ããã¹ãã«ãããæèã®æ£ããå®åŒåã¯éåžžã«éèŠã§ãããããã°ã©ã ããžãã¯ã®æ£ãã圢æã¯ãšã³ããŠãŒã¶ãŒã«ãšã£ãŠéèŠã§ãã PVS-Studioã䜿çšãããšãèããããé©åã«è¡šçŸããã³å®åŒåã§ããŸãã
ã€ã³ã¹ãã¬ãŒã·ã§ã³ãšæ確ãªèãããç¥ãããŸããããããæäŒãããŸãã
ãã®èšäºãè±èªåã®èŽè¡ãšå ±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒVitaliy Alferovã PVS-Studioã¢ãã©ã€ã¶ãŒã䜿çšããPVS-Studioãã©ã°ã€ã³ã®ç¢ºèª ã
èšäºãèªãã§è³ªåããããŸããïŒ
å€ãã®å Žåãèšäºã«ã¯åã質åãå¯ããããŸãã ããã§åçãéããŸããïŒ PVS-StudioããŒãžã§ã³2015ã«é¢ããèšäºã®èªè
ããã®è³ªåãžã®åç ã ãªã¹ããã芧ãã ããã