เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเฉ€เจ†เจˆ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเจพเจฒ เจ‡เจธเจฆเจพ เจเจ•เฉ€เจ•เจฐเจฃ เจนเฉˆเฅค เจ…เจคเฉ‡ เจนเจพเจฒเจพเจ‚เจ•เจฟ เจฒเจ—เจญเจ— เจ•เจฟเจธเฉ‡ เจตเฉ€ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• PVS-เจธเจŸเฉ‚เจกเฉ€เจ“ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจธเจฟเจฐเจซ เจ•เฉเจ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจ‡เจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจฌเจฃเจพเจ‰เจฃเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚เฅค PVS-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ•เฉ‹เจฒ เจนเฉเจฃ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ TeamCity - TeamCity เจจเจฟเจฐเฉ€เจ–เจฃ เจ•เจฟเจธเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจนเฉˆเฅค เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจตเจฐเจคเฉ‡ เจ—เจ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ โ€” C, C++, C# เจ…เจคเฉ‡ Java เจ•เฉ‹เจก เจฆเจพ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ•, เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃ เจ…เจคเฉ‡ เจ เฉ€เจ• เจ•เจฐเจจ เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเฉ€ เจธเจนเฉ‚เจฒเจค เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจจเฉ‚เฉฐ เจตเจฟเฉฐเจกเฉ‹เจœเจผ, เจฒเฉ€เจจเจ•เจธ เจ…เจคเฉ‡ เจฎเฉˆเจ•เฉ‹เจธ 'เจคเฉ‡ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเจš เจ…เจธเฉ€เจ‚ เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจจเจพ เจธเจฟเจฐเจซ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจธเจ—เฉ‹เจ‚ เจ‡เจธเจฆเฉ€ เจตเฉฐเจก เจคเฉ‹เจ‚ เจ•เฉเจ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจตเฉ€ เจตเจฐเจคเจพเจ‚เจ—เฉ‡.

CLMonitor โ€” เจ‡เฉฑเจ• เจจเจฟเจ—เจฐเจพเจจเฉ€ เจธเจฐเจตเจฐ เจนเฉˆ เจœเฉ‹ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฒเจพเจ‚เจšเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจคเฉเจนเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจšเจฒเจพเจ‡เจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจธเจจเฉ‚เจชเจฟเฉฐเจ— เจฎเฉ‹เจก เจตเจฟเฉฑเจš, เจธเจฐเจตเจฐ เจธเจพเจฐเฉ‡ เจธเจฎเจฐเจฅเจฟเจค เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฆเฉ‡ เจฐเจจ เจจเฉ‚เฉฐ เจฐเฉ‹เจ• เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ เจ‡เจน เจธเจนเฉ‚เจฒเจค เจธเจฟเจฐเจซ C/C++ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

PlogConverter - เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฐเจฟเจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจซเจพเจฐเจฎเฉˆเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจ‰เจชเจฏเฉ‹เจ—เจคเจพเฅค

เจ…เจงเจฟเจเจจ เจ…เจงเฉ€เจจ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€

เจ†เจ‰ เจ‡เฉฑเจ• เจตเจฟเจนเจพเจฐเจ• เจ‰เจฆเจพเจนเจฐเจฃ 'เจคเฉ‡ เจ‡เจธ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจ - เจ†เจ“ OpenRCT2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเฉ€เจเฅค

เจ“เจชเจจเจ†เจฐเจธเฉ€เจŸเฉ€ 2 - เจ—เฉ‡เจฎ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 (RCT2) เจฆเจพ เจ‡เฉฑเจ• เจ–เฉเฉฑเจฒเจพ เจ…เจฎเจฒเฉ€เจ•เจฐเจจ, เจ‡เจธ เจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจซเฉˆเจฒเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจฌเฉฑเจ— เจซเจฟเจ•เจธ เจ•เจฐเจจเจพเฅค เจ—เฉ‡เจฎเจชเจฒเฉ‡ เจ‡เฉฑเจ• เจฎเจจเฉ‹เจฐเฉฐเจœเจจ เจชเจพเจฐเจ• เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจฐเฉฑเจ–-เจฐเจ–เจพเจ… เจ•เจฐเจจ เจฆเฉ‡ เจ†เจฒเฉ‡-เจฆเฉเจ†เจฒเฉ‡ เจ˜เฉเฉฐเจฎเจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจตเจพเจฐเฉ€เจ†เจ‚, เจฆเฉเจ•เจพเจจเจพเจ‚ เจ…เจคเฉ‡ เจธเจนเฉ‚เจฒเจคเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจ–เจฟเจกเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฎเฉเจจเจพเจซเจผเจพ เจ•เจฎเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฎเจนเจฟเจฎเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉเจธเจผ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ เจชเจพเจฐเจ• เจฆเฉ€ เจšเฉฐเจ—เฉ€ เจธเจพเจ– เจจเฉ‚เฉฐ เจฌเจฐเจ•เจฐเจพเจฐ เจฐเฉฑเจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค OpenRCT2 เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉเจฐเจฟเจธเจผ เจ…เจคเฉ‡ เจธเฉˆเจ‚เจกเจฌเฉŒเจ•เจธ เจฆเฉ‹เจตเจพเจ‚ เจตเจฟเฉฑเจš เจ–เฉ‡เจกเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจฒเจˆ เจ–เจฟเจกเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจฟเจฐเจงเจพเจฐเจค เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจ–เจพเจธ เจ•เฉฐเจฎ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจธเฉˆเจ‚เจกเจฌเฉŒเจ•เจธ เจ–เจฟเจกเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจœเจพเจ‚ เจตเจฟเฉฑเจค เจฆเฉ‡ เจ‡เฉฑเจ• เจตเจงเฉ‡เจฐเฉ‡ เจฒเจšเจ•เจฆเจพเจฐ เจชเจพเจฐเจ• เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจตเจฟเจตเจธเจฅเจพ

เจธเจฎเจพเจ‚ เจฌเจšเจพเจ‰เจฃ เจฒเจˆ, เจฎเฉˆเจ‚ เจธเจผเจพเจ‡เจฆ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเฉ‡เจตเจพเจ‚เจ—เจพ เจ…เจคเฉ‡ เจ‰เจธ เจชเจฒ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจพเจ‚เจ—เจพ เจœเจฆเฉ‹เจ‚ เจฎเฉ‡เจฐเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ TeamCity เจธเจฐเจตเจฐ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ 'เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: เจฒเฉ‹เจ•เจฒเจนเฉ‹เจธเจŸ:{เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉŒเจฐเจพเจจ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจชเฉ‹เจฐเจŸ} (เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจฒเฉ‹เจ•เจฒเจนเฉ‹เจธเจŸ:9090) เจ…เจคเฉ‡ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจกเฉ‡เจŸเจพ เจฆเจพเจ–เจฒ เจ•เจฐเฉ‹เฅค เจฆเจพเจ–เจฒ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจพเจจเฉ‚เฉฐ เจ‡เจนเจจเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจธเจตเจพเจ—เจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ:

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ“ เจฌเจŸเจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹เฅค เจ…เฉฑเจ—เฉ‡, เจนเฉฑเจฅเฉ€เจ‚ เจšเฉเจฃเฉ‹ เจ…เจคเฉ‡ เจ–เฉ‡เจคเจฐ เจญเจฐเฉ‹เฅค

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจฌเจŸเจจ เจฆเจฌเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฌเจฃเจพเจ“, เจธเจพเจจเฉ‚เฉฐ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจพเจฒเฉ€ เจตเจฟเฉฐเจกเฉ‹ เจฆเฉเจ†เจฐเจพ เจธเจตเจพเจ—เจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจ†เจ“ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ€เจ เจฌเจฟเจฒเจก เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฌเจฃเจพเจ“.

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจ–เฉ‡เจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจญเจฐเฉ‹ เจ…เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ เจฌเจฃเจพเจ“. เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเจฟเฉฐเจกเฉ‹ เจตเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉฐเจธเจ•เจฐเจฃ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจ เจฒเจˆ เจ•เจนเจฟ เจฐเจนเฉ€ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจฐเฉ‹เจค เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฅเจฟเจค เจนเจจ, เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ เจ›เฉฑเจกเฉ‹.

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚.

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจ†เจ“ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจธเจŸเฉˆเจชเจธ เจœเฉ‹เฉœเฉ€เจ, เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹: เจฌเจฟเจฒเจก เจธเจŸเฉˆเจชเจธ -> เจฌเจฟเจฒเจก เจธเจŸเฉˆเจช เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹.

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจšเฉเจฃเจฆเฉ‡ เจนเจพเจ‚:

  • เจฐเจจเจฐ เจฆเฉ€ เจ•เจฟเจธเจฎ -> เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ
  • เจšเจฒเจพเจ“ -> เจ•เจธเจŸเจฎ เจธเจ•เฉเจฐเจฟเจชเจŸ

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เฉฐเจชเจพเจ‡เจฒเฉ‡เจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจ…เจคเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ‡เฉฑเจ• เจ•เจฆเจฎ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ–เฉ‡เจคเจฐ เจจเฉ‚เฉฐ เจญเจฐเฉ‹ เจ•เจธเจŸเจฎ เจธเจ•เฉเจฐเจฟเจชเจŸ:

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจ…เจธเฉ€เจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ•เจฆเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡เฅค เจ‡เจน เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจเจพ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ, เจ‡เจธเจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจเจพ, เจฐเจฟเจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจซเจพเจฐเจฎเฉˆเจŸ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ เจธเจฟเจฐเจซ เจ—เจฟเจ†เจฐเจพเจ‚ เจฒเจพเจˆเจจเจพเจ‚ เจฒเฉฑเจ—เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ†เจ–เจผเจฐเฉ€ เจšเฉ€เจœเจผ เจœเฉ‹ เจธเจพเจจเฉ‚เฉฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ‰เจน เจนเฉˆ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ, เจœเฉ‹ เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจชเฉœเฉเจนเจจเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจ•เฉเจ เจคเจฐเฉ€เจ•เฉ‡ เจฆเฉฑเจธเฉ‡ เจนเจจเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ†เจ“ เจ…เฉฑเจ—เฉ‡ เจตเจงเฉ€เจ: เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ -> เจจเจตเจพเจ‚ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจคเจฟเฉฐเจจ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจœเฉ‹เฉœเฉ‹:

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจธ เจฌเจŸเจจ เจฆเจฌเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจšเจฒเจพเจ“ เจ‰เฉฑเจชเจฐ เจธเฉฑเจœเฉ‡ เจ•เฉ‹เจจเฉ‡ เจตเจฟเฉฑเจš. เจœเจฆเฉ‹เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ, เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฌเจพเจฐเฉ‡ เจฆเฉฑเจธเจพเจ‚เจ—เจพเฅค

เจธเจฟเฉฑเจงเฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸ

เจชเจนเจฟเจฒเจพเจ‚, เจธเจพเจจเฉ‚เฉฐ เจจเจตเฉ€เจจเจคเจฎ PVS-เจธเจŸเฉ‚เจกเฉ€เจ“ เจตเฉฐเจก เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจšเจพเจ•เจฒเฉ‡เจŸ เจชเฉˆเจ•เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจœเจฟเจนเฉœเฉ‡ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจฒเจˆ, เจ‡เฉฑเจ• เจ…เจจเฉเจธเจพเจฐเฉ€ เจนเฉˆ เจฒเฉ‡เจ–:

choco install pvs-studio -y

เจ…เฉฑเจ—เฉ‡, เจ†เจ“ CLMonitor เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฟเจฒเจก เจŸเจฐเฉˆเจ•เจฟเฉฐเจ— เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเฉ€เจเฅค

%CLmon% monitor โ€“-attach

เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡ เจเจฎเจเจธเจฌเฉ€ MSBuild เจฆเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเจพ เจฎเจพเจฐเจ— เจนเฉˆ เจœเฉ‹ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ

%MSB% %ProjPath% /t:clean
%MSB% %ProjPath% /t:rebuild /p:configuration=release
%MSB% %ProjPath% /t:g2
%MSB% %ProjPath% /t:PublishPortable

เจšเจฒเฉ‹ เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจฒเจˆ เจฒเฉŒเจ—เจ‡เจจ เจ…เจคเฉ‡ เจฒเจพเจ‡เจธเฉˆเจ‚เจธ เจ•เฉเฉฐเจœเฉ€ เจฆเจฐเจœ เจ•เจฐเฉ€เจ:

%PVS-Studio_cmd% credentials --username %PVS_Name% --serialNumber %PVS_Key%

เจฌเจฟเจฒเจก เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจชเฉเจฐเฉ€เจชเฉเจฐเฉ‹เจธเฉˆเฉฑเจธเจก เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ CLMonitor เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจšเจฒเจพเจ“:

%CLmon% analyze -l "c:ptest.plog"

เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจตเฉฐเจก เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡. PlogConverter เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจŸเฉˆเจ‚เจกเจฐเจก เจซเจพเจฐเจฎเฉˆเจŸ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• TeamCity-เจตเจฟเจธเจผเฉ‡เจธเจผ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฟเจฒเจก เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš เจธเจฟเฉฑเจงเจพ เจฆเฉ‡เจ– เจธเจ•เจพเจ‚เจ—เฉ‡เฅค

%PlogConverter% "c:ptest.plog" --renderTypes=TeamCity -o "C:temp"

เจ†เจ–เจฐเฉ€ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจซเจพเจฐเจฎเฉˆเจŸ เจ•เฉ€เจคเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆ stdout, เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ TeamCity เจชเจพเจฐเจธเจฐ เจฆเฉเจ†เจฐเจพ เจšเฉเฉฑเจ•เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

type "C:tempptest.plog_TeamCity.txt"

เจชเฉ‚เจฐเจพ เจธเจ•เฉเจฐเจฟเจชเจŸ เจ•เฉ‹เจก:

choco install pvs-studio -y
%CLmon% monitor --attach
set platform=x64
%MSB% %ProjPath% /t:clean
%MSB% %ProjPath% /t:rebuild /p:configuration=release
%MSB% %ProjPath% /t:g2
%MSB% %ProjPath% /t:PublishPortable
%PVS-Studio_cmd% credentials --username %PVS_Name% --serialNumber %PVS_Key%
%CLmon% analyze -l "c:ptest.plog"
%PlogConverter% "c:ptest.plog" --renderTypes=TeamCity -o "C:temp"
type "C:tempptest.plog_TeamCity.txt"

เจ‡เจธ เจฆเฉŒเจฐเจพเจจ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจ…เจคเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจชเฉ‚เจฐเจพ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจŸเฉˆเจฌ 'เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจชเฉเจฐเจพเจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ“.

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจนเฉเจฃ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ€เจ เจจเจฟเจฐเฉ€เจ–เจฃ เจ•เฉเฉฑเจฒเจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฐเจฟเจชเฉ‹เจฐเจŸ เจฆเฉ‡เจ–เจฃ เจฒเจˆ:

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจšเฉ‡เจคเจพเจตเจจเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ• เจจเจฟเจฏเจฎ เจจเฉฐเจฌเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจธเจฎเฉ‚เจนเจฌเฉฑเจง เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ•เฉ‹เจก เจฐเจพเจนเฉ€เจ‚ เจจเฉˆเจตเฉ€เจ—เฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเฉ‡เจคเจพเจตเจจเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจฒเจพเจˆเจจ เจจเฉฐเจฌเจฐ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‰เฉฑเจชเจฐ เจธเฉฑเจœเฉ‡ เจ•เฉ‹เจจเฉ‡ เจตเจฟเฉฑเจš เจชเฉเจฐเจธเจผเจจ เจšเจฟเฉฐเจจเฉเจน 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจจ เจจเจพเจฒ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจŸเฉˆเจฌ เจ–เฉเฉฑเจฒเฉเจน เจœเจพเจตเฉ‡เจ—เจพเฅค เจคเฉเจธเฉ€เจ‚ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจšเฉ‡เจคเจพเจตเจจเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจฒเจพเจˆเจจ เจจเฉฐเจฌเจฐ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจ•เฉ‡ เจ•เฉ‹เจก เจฐเจพเจนเฉ€เจ‚ เจตเฉ€ เจจเฉˆเจตเฉ€เจ—เฉ‡เจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจตเจฐเจคเจฃ เจตเฉ‡เจฒเฉ‡ เจฐเจฟเจฎเฉ‹เจŸ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจคเฉ‹เจ‚ เจจเฉˆเจตเฉ€เจ—เฉ‡เจธเจผเจจ เจธเฉฐเจญเจต เจนเฉˆ SourceTreeRoot เจฎเจพเจฐเจ•เจฐ เจ•เฉ‹เจˆ เจตเฉ€ เจœเฉ‹ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉ‡ เจ‡เจธ เจขเฉฐเจ— เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ, เจ‰เจน เจธเฉฐเจฌเฉฐเจงเจฟเจค เจญเจพเจ— เจจเจพเจฒ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจœเจพเจฃเฉ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ.

เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจฆเฉ‡เจ–เจฃเจพ

เจนเฉเจฃ เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจฌเจฟเจฒเจก เจฆเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจชเฉ‚เจฐเฉ€ เจ•เจฐ เจฒเจˆ เจนเฉˆ, เจ†เจ“ เจ…เจธเฉ€เจ‚ เจ‰เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจฒเฉฑเจญเฉ€เจ†เจ‚ เจ•เฉเจ เจฆเจฟเจฒเจšเจธเจช เจšเฉ‡เจคเจพเจตเจจเฉ€เจ†เจ‚ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจœเจผเจฐ เจฎเจพเจฐเฉ€เจ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ– เจฐเจนเฉ‡ เจนเจพเจ‚เฅค

เจšเฉ‡เจคเจพเจตเจจเฉ€ N1

V773 [CWE-401] เจ…เจชเจตเจพเจฆ 'เจจเจคเฉ€เจœเจพ' เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจธเฉเฉฑเจŸ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจ‡เฉฑเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฒเฉ€เจ• เจธเฉฐเจญเจต เจนเฉˆ. libopenrct2 ObjectFactory.cpp 443

Object* CreateObjectFromJson(....)
{
  Object* result = nullptr;
  ....
  result = CreateObject(entry);
  ....
  if (readContext.WasError())
  {
    throw std::runtime_error("Object has errors");
  }
  ....
}

Object* CreateObject(const rct_object_entry& entry)
{
  Object* result;
  switch (entry.GetType())
  {
    case OBJECT_TYPE_RIDE:
      result = new RideObject(entry);
      break;
    case OBJECT_TYPE_SMALL_SCENERY:
      result = new SmallSceneryObject(entry);
      break;
    case OBJECT_TYPE_LARGE_SCENERY:
      result = new LargeSceneryObject(entry);
      break;
    ....
    default:
      throw std::runtime_error("Invalid object type");
  }
  return result;
}

เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจจเฉ‡ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจฆเฉ‡เจ–เฉ€ เจœเฉ‹ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจคเฉŒเจฐ 'เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ†เจฌเจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ“, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจ…เจชเจตเจพเจฆ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจธเจพเจซเจผ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฒเฉ€เจ• เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจšเฉ‡เจคเจพเจตเจจเฉ€ N2

V501 '|' เจฆเฉ‡ เจ–เฉฑเจฌเฉ‡ เจ…เจคเฉ‡ เจธเฉฑเจœเฉ‡ เจชเจพเจธเฉ‡ '(1ULL << WIDX_MONTH_BOX)' เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจ‰เจช-เจธเจฎเฉ€เจ•เจฐเจจ เจนเจจเฅค เจ†เจชเจฐเฉ‡เจŸเจฐ libopenrct2ui Cheats.cpp 487

static uint64_t window_cheats_page_enabled_widgets[] = 
{
  MAIN_CHEAT_ENABLED_WIDGETS |
  (1ULL << WIDX_NO_MONEY) |
  (1ULL << WIDX_ADD_SET_MONEY_GROUP) |
  (1ULL << WIDX_MONEY_SPINNER) |
  (1ULL << WIDX_MONEY_SPINNER_INCREMENT) |
  (1ULL << WIDX_MONEY_SPINNER_DECREMENT) |
  (1ULL << WIDX_ADD_MONEY) |
  (1ULL << WIDX_SET_MONEY) |
  (1ULL << WIDX_CLEAR_LOAN) |
  (1ULL << WIDX_DATE_SET) |
  (1ULL << WIDX_MONTH_BOX) |  // <=
  (1ULL << WIDX_MONTH_UP) |
  (1ULL << WIDX_MONTH_DOWN) |
  (1ULL << WIDX_YEAR_BOX) |
  (1ULL << WIDX_YEAR_UP) |
  (1ULL << WIDX_YEAR_DOWN) |
  (1ULL << WIDX_DAY_BOX) |
  (1ULL << WIDX_DAY_UP) |
  (1ULL << WIDX_DAY_DOWN) |
  (1ULL << WIDX_MONTH_BOX) |  // <=
  (1ULL << WIDX_DATE_GROUP) |
  (1ULL << WIDX_DATE_RESET),
  ....
};

เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจฒเฉ‹เจ• เจ‡เจธ เจงเจฟเจ†เจจ เจฆเฉ€ เจชเฉเจฐเฉ€เจ–เจฟเจ† เจชเจพเจธ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ‡เจน เจ•เจพเจชเฉ€-เจชเฉ‡เจธเจŸ เจ‰เจฆเจพเจนเจฐเจจ เจ‡เจธ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจšเฉฐเจ—เฉ€ เจนเฉˆเฅค

เจšเฉ‡เจคเจพเจตเจจเฉ€เจ†เจ‚ N3

V703 เจ‡เจน เจ…เจœเฉ€เจฌ เจนเฉˆ เจ•เจฟ เจ‰เจคเจชเฉฐเจจ เจ•เจฒเจพเจธ 'RCT12BannerElement' เจตเจฟเฉฑเจš 'เจเฉฐเจกเฉ‡' เจ–เฉ‡เจคเจฐ เจฌเฉ‡เจธ เจ•เจฒเจพเจธ 'RCT12TileElementBase' เจตเจฟเฉฑเจš เจซเฉ€เจฒเจก เจจเฉ‚เฉฐ เจ“เจตเจฐเจฐเจพเจˆเจŸ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฒเจพเจˆเจจเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹: RCT12.h:570, RCT12.h:259เฅค libopenrct2 RCT12.h 570

struct RCT12SpriteBase
{
  ....
  uint8_t flags;
  ....
};
struct rct1_peep : RCT12SpriteBase
{
  ....
  uint8_t flags;
  ....
};

เจฌเฉ‡เจธเจผเฉฑเจ•, เจฌเฉ‡เจธ เจ•เจฒเจพเจธ เจ…เจคเฉ‡ เจกเจฟเจธเฉˆเจ‚เจกเฉˆเจ‚เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ•เฉ‹ เจจเจพเจฎ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจนเจฎเฉ‡เจธเจผเจพ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจตเจฟเจฐเจพเจธเจคเฉ€ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจ–เฉเจฆ เจ‡เจน เจฎเฉฐเจจเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจตเจฐเจ— เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจ–เฉ‡เจคเจฐ เจฌเจพเจฒ เจตเจฐเจ— เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจนเจจเฅค เจตเจพเจฐเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ•เฉ‹ เจจเจพเจฎ เจจเจพเจฒ เจ–เฉ‡เจค เจ˜เฉ‹เจธเจผเจฟเจค เจ•เจฐเจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจญเฉฐเจฌเจฒเจญเฉ‚เจธเจพ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจšเฉ‡เจคเจพเจตเจจเฉ€ N4

V793 เจ‡เจน เจ…เจœเฉ€เจฌ เจนเฉˆ เจ•เจฟ 'imageDirection/8' เจ•เจฅเจจ เจฆเจพ เจจเจคเฉ€เจœเจพ เจธเจฅเจฟเจคเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเจพ เจนเฉˆ. เจธเจผเจพเจ‡เจฆ, เจ‡เจธ เจ•เจฅเจจ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจšเฉ€เจœเจผ เจจเจพเจฒ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจธเฉ€เฅค libopenrct2 ObservationTower.cpp 38

void vehicle_visual_observation_tower(...., int32_t imageDirection, ....)
{
  if ((imageDirection / 8) && (imageDirection / 8) != 3)
  {
    ....
  }
  ....
}

เจ†เจ“ เจ‡เฉฑเจ• เจกเฉ‚เฉฐเจ˜เฉ€ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจเฅค เจธเจฎเฉ€เจ•เจฐเจจ เจšเจฟเฉฑเจคเจฐ เจฆเจฟเจธเจผเจพ/8 เจเฉ‚เจ เจพ เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‡เจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจฆเจฟเจธเจผเจพ -7 เจคเฉ‹เจ‚ 7 เจฆเฉ€ เจฐเฉ‡เจ‚เจœ เจตเจฟเฉฑเจš เจนเฉˆเฅค เจฆเฉ‚เจœเจพ เจญเจพเจ—: (imageDirection/8) !=3 เจœเจพเจ‚เจšเจพเจ‚ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจฆเจฟเจธเจผเจพ เจธเฉ€เจฎเจพ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเฉ‹เจฃ เจฒเจˆ: เจ•เฉเจฐเจฎเจตเจพเจฐ -31 เจคเฉ‹เจ‚ -24 เจ…เจคเฉ‡ 24 เจคเฉ‹เจ‚ 31 เจคเฉฑเจ•เฅค เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจฐเฉ‡เจ‚เจœ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเจจ เจฒเจˆ เจธเฉฐเจ–เจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจฌเจนเฉเจค เจ…เจœเฉ€เจฌ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡, เจญเจพเจตเฉ‡เจ‚ เจ•เฉ‹เจก เจฆเฉ‡ เจ‡เจธ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจ—เจฒเจคเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจฎเฉˆเจ‚ เจ‡เจนเจจเจพเจ‚ เจธเจผเจฐเจคเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจธเจชเฉฑเจธเจผเจŸ เจนเฉ‹เจฃ เจฒเจˆ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพเฅค เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจฒเฉ‹เจ•เจพเจ‚ เจฒเจˆ เจœเฉ€เจตเจจ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจฌเจฃเจพ เจฆเฉ‡เจตเฉ‡เจ—เจพ เจœเฉ‹ เจ‡เจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจฆเฉ‡ เจ…เจคเฉ‡ เจธเฉฐเจญเจพเจฒเจฆเฉ‡ เจนเจจเฅค

เจšเฉ‡เจคเจพเจตเจจเฉ€ N5

V587 เจ‡เจธ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจ…เจธเจพเจˆเจจเจฎเฉˆเจ‚เจŸเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจ…เจœเฉ€เจฌ เจ•เฉเจฐเจฎ: A = B; เจฌเฉ€ = เจ;เฅค เจฒเจพเจˆเจจเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹: 1115, 1118. libopenrct2ui MouseInput.cpp 1118

void process_mouse_over(....)
{
  ....
  switch (window->widgets[widgetId].type)
  {
    case WWT_VIEWPORT:
      ebx = 0;
      edi = cursorId;                                 // <=
      // Window event WE_UNKNOWN_0E was called here,
      // but no windows actually implemented a handler and
      // it's not known what it was for
      cursorId = edi;                                 // <=
      if ((ebx & 0xFF) != 0)
      {
        set_cursor(cursorId);
        return;
      }
      break;
      ....
  }
  ....
}

เจ‡เจน เจ•เฉ‹เจก เจŸเฉเจ•เฉœเจพ เจธเฉฐเจญเจพเจตเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจกเฉ€เจ•เฉฐเจชเจฟเจฒเฉ‡เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจซเจฟเจฐ, เจŸเจฟเฉฑเจชเจฃเฉ€ เจ›เฉฑเจก เจ•เฉ‡ เจจเจฟเจฐเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ—เฉˆเจฐ-เจ•เจพเจฐเจœ เจ•เฉ‹เจก เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจœเฉ‡ เจตเฉ€ เจ•เฉเจ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฌเจพเจ•เฉ€ เจนเจจ เจ•เจฐเจธเจฐ เจ†เจˆ.เจกเฉ€, เจœเจฟเจธเจฆเจพ เจตเฉ€ เจฌเจนเฉเจคเจพ เจฎเจคเจฒเจฌ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจšเฉ‡เจคเจพเจตเจจเฉ€ N6

V1004 [CWE-476] 'เจชเจฒเฉ‡เจ…เจฐ' เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจจเฉ‚เฉฐ nullptr เจฆเฉ‡ เจตเจฟเจฐเฉเฉฑเจง เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจฒเจพเจˆเจจเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹: 2085, 2094. libopenrct2 Network.cpp 2094

void Network::ProcessPlayerList()
{
  ....
  auto* player = GetPlayerByID(pendingPlayer.Id);
  if (player == nullptr)
  {
    // Add new player.
    player = AddPlayer("", "");
    if (player)                                          // <=
    {
      *player = pendingPlayer;
       if (player->Flags & NETWORK_PLAYER_FLAG_ISSERVER)
       {
         _serverConnection->Player = player;
       }
    }
    newPlayers.push_back(player->Id);                    // <=
  }
  ....
}

เจ‡เจน เจ•เฉ‹เจก เจ เฉ€เจ• เจ•เจฐเจจเจพ เจ•เจพเจซเจผเฉ€ เจ†เจธเจพเจจ เจนเฉˆ; เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจคเฉ€เจœเฉ€ เจตเจพเจฐ เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ–เจฟเจกเจพเจฐเฉ€ เจ‡เฉฑเจ• เจจเจฒ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจตเจฟเฉฑเจš, เจœเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉฐเจกเฉ€เจธเจผเจจเจฒ เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจญเจพเจ— เจตเจฟเฉฑเจš เจœเฉ‹เฉœเฉ‹เฅค เจฎเฉˆเจ‚ เจฆเฉ‚เจœเฉ‡ เจตเจฟเจ•เจฒเจช เจฆเจพ เจธเฉเจเจพเจ… เจฆเฉ‡เจตเจพเจ‚เจ—เจพ:

void Network::ProcessPlayerList()
{
  ....
  auto* player = GetPlayerByID(pendingPlayer.Id);
  if (player == nullptr)
  {
    // Add new player.
    player = AddPlayer("", "");
    if (player)
    {
      *player = pendingPlayer;
      if (player->Flags & NETWORK_PLAYER_FLAG_ISSERVER)
      {
        _serverConnection->Player = player;
      }
      newPlayers.push_back(player->Id);
    }
  }
  ....
}

เจšเฉ‡เจคเจพเจตเจจเฉ€ N7

V547 [CWE-570] เจธเจฎเฉ€เจ•เจฐเจจ 'name == nullptr' เจนเจฎเฉ‡เจธเจผเจพ เจ—เจฒเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค libopenrct2 ServerList.cpp 102

std::optional<ServerListEntry> ServerListEntry::FromJson(...)
{
  auto name = json_object_get(server, "name");
  .....
  if (name == nullptr || version == nullptr)
  {
    ....
  }
  else
  {
    ....
    entry.name = (name == nullptr ? "" : json_string_value(name));
    ....
  }
  ....
}

เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจเจŸเจ•เฉ‡ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจฆเฉ€ เจ‡เฉฑเจ• เจฎเฉเจธเจผเจ•เจฒ เจชเฉœเฉเจนเจจ เจตเจพเจฒเฉ€ เจฒเจพเจˆเจจ เจคเฉ‹เจ‚ เจ›เฉเจŸเจ•เจพเจฐเจพ เจชเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจ•เฉ‡ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ nullptr. เจฎเฉˆเจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเจพ เจธเฉเจเจพเจ… เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚:

std::optional<ServerListEntry> ServerListEntry::FromJson(...)
{
  auto name = json_object_get(server, "name");
  .....
  if (name == nullptr || version == nullptr)
  {
    name = ""
    ....
  }
  else
  {
    ....
    entry.name = json_string_value(name);
    ....
  }
  ....
}

เจšเฉ‡เจคเจพเจตเจจเฉ€ N8

V1048 [CWE-1164] 'ColumnHeaderPressedCurrentState' เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจ‰เจนเฉ€ เจฎเฉเฉฑเจฒ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค libopenrct2ui CustomListView.cpp 510

void CustomListView::MouseUp(....)
{
  ....
  if (!ColumnHeaderPressedCurrentState)
  {
    ColumnHeaderPressed = std::nullopt;
    ColumnHeaderPressedCurrentState = false;
    Invalidate();
  }
}

เจ•เฉ‹เจก เจ•เจพเจซเจผเฉ€ เจ…เจœเฉ€เจฌ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ. เจ‡เจน เจฎเฉˆเจจเฉ‚เฉฐ เจœเจพเจชเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจœเจพเจ‚ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจ‡เฉฑเจ• เจŸเจพเจˆเจชเฉ‹ เจธเฉ€ เจ•เจพเจฒเจฎ เจนเฉˆเจกเจฐ เจฆเจฌเจพเจ‡เจ† เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจฎเฉเฉฑเจฒ เจเฉ‚เจ เฉ‡.

เจธเจฟเฉฑเจŸเจพ

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจคเฉเจนเจพเจกเฉ‡ เจŸเฉ€เจฎเจธเจฟเจŸเฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš PVS-เจธเจŸเฉ‚เจกเฉ€เจ“ เจธเจŸเฉˆเจŸเจฟเจ• เจเจจเจพเจฒเจพเจˆเจœเจผเจฐ เจจเฉ‚เฉฐ เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจ•เจฐเจจเจพ เจ•เจพเจซเจผเฉ€ เจธเจงเจพเจฐเจจ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจฒเจฟเจ–เจฃ เจฒเจˆ เจ‡เจน เจ•เจพเจซเจผเฉ€ เจนเฉˆ. เจ•เฉ‹เจก เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจจเจพเจฒ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจคเฉ‹เจ‚ เจคเฉเจฐเฉฐเจค เจฌเจพเจ…เจฆ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฎเจฟเจฒเฉ‡เจ—เฉ€, เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเฉ‡เจ—เฉ€ เจœเจฆเฉ‹เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ เจ…เจคเฉ‡ เจฒเจพเจ—เจค เจ…เจœเฉ‡ เจตเฉ€ เจ˜เฉฑเจŸ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ
เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจ…เฉฐเจ—เฉเจฐเฉ‡เจœเจผเฉ€ เจฌเฉ‹เจฒเจฃ เจตเจพเจฒเฉ‡ เจฆเจฐเจธเจผเจ•เจพเจ‚ เจจเจพเจฒ เจธเจพเจ‚เจเจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจ…เจจเฉเจตเจพเจฆ เจฒเจฟเฉฐเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹: เจตเจฒเจพเจฆเจฟเจธเจฒเจพเจต เจธเจŸเฉ‹เจฒเจฏเจพเจฐเฉ‹เจตเฅค เจชเฉ€เจตเฉ€เจเจธ-เจธเจŸเฉ‚เจกเฉ€เจ“ เจ…เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ: เจŸเฉ€เจฎเจธเจฟเจŸเฉ€เฅค เจ“เจชเจจ เจฐเฉ‹เจฒเจฐเจ•เฉ‹เจธเจŸเจฐ เจŸเจพเจˆเจ•เฉ‚เจจ 2 เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹