เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เด…เดจเดฒเตˆเดธเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเต† เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเตŠเดจเตเดจเต เดธเดฟเด เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเตเดฎเดพเดฏเตเดณเตเดณ เด…เดคเดฟเดจเตเดฑเต† เดธเด‚เดฏเต‹เดœเดจเดฎเดพเดฃเต. เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดเด•เต€เด•เดฐเดฃ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดถเด•เดฒเดจเด‚ เด•เตเดฑเดšเตเดšเต เด•เดฎเดพเตปเดกเตเด•เดณเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดฎเต†เด™เตเด•เดฟเดฒเตเด‚, เดžเด™เตเด™เตพ เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏ เด•เต‚เดŸเตเดคเตฝ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดจเตเดจเต. TeamCity - TeamCity Inspections Type-เดจเตเดณเตเดณ เด’เดฐเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดจเดฒเตˆเดธเตผ เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ เด‰เดฃเตเดŸเต. เด‡เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ - เดธเดฟ, เดธเดฟ++, เดธเดฟ#, เดœเดพเดต เด•เต‹เดกเต เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด…เดจเดฒเตˆเดธเตผ, เดตเดฟเดตเดฟเดง เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดฟเดถเด•เตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดคเดฟเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดšเตเดฎเดคเดฒเด•เตพ เดธเตเด—เดฎเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดตเดฟเตปเดกเต‹เดธเต, เดฒเดฟเดจเด•เตเดธเต, เดฎเดพเด•เต‹เดธเต เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เด…เดจเดฒเตˆเดธเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เด…เดจเดฒเตˆเดธเตผ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด…เดคเดฟเดจเตเดฑเต† เดตเดฟเดคเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดšเดฟเดฒ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เดณเตเด‚ เดธเดœเต€เดตเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

CLMonitor โ€” เด•เด‚เดชเตˆเดฒเตผ เดฒเต‹เดžเตเดšเตเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เดธเต†เตผเดตเดฑเดพเดฃเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด‡เดคเต เด‰เดŸเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดฃเด‚. เดธเตโ€Œเดจเต‚เดชเตเดชเดฟเด‚เด—เต เดฎเต‹เดกเดฟเตฝ, เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เด•เดฎเตเดชเตˆเดฒเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฑเดฃเตเดฃเตเด•เตพ เดธเต†เตผเดตเตผ เดคเดŸเดธเตเดธเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚. C/C++ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เดฎเดพเดคเตเดฐเดฎเต‡ เดˆ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเดพเด•เต‚ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต.

เดชเตเดฒเด—เต เด•เตบเดตเต†เตผเดŸเตเดŸเตผ - เด…เดจเดฒเตˆเดธเตผ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เดซเต‹เตผเดฎเดพเดฑเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ.

เดชเด เดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเดฆเตเดงเดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ

เด’เดฐเต เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเด‚ - เดจเดฎเตเด•เตเด•เต OpenRCT2 เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเด‚.

OpenRCT2 - เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 (RCT2) เด—เต†เดฏเดฟเดฎเดฟเดจเตเดฑเต† เด’เดฐเต เดคเตเดฑเดจเตเดจ เดจเดฟเตผเดตเตเดตเดนเดฃเด‚, เดชเตเดคเดฟเดฏ เดซเด‚เด—เตเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฌเด—เตเด•เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดฑเตˆเดกเตเด•เตพ, เดทเต‹เดชเตเดชเตเด•เตพ, เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดต เด…เดŸเด™เตเด™เดฟเดฏ เด’เดฐเต เด…เดฎเตเดฏเต‚เดธเตโ€Œเดฎเต†เดจเตเดฑเต เดชเดพเตผเด•เตเด•เต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฐเดฟเดชเดพเดฒเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต† เดšเตเดฑเตเดฑเดฟเดชเตเดชเดฑเตเดฑเดฟเดฏเดพเดฃเต เด—เต†เดฏเดฟเด‚เดชเตเดฒเต‡. เด…เดคเดฟเดฅเดฟเด•เดณเต† เดธเดจเตเดคเต‹เดทเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดชเดพเตผเด•เตเด•เดฟเดจเตเดฑเต† เดจเดฒเตเดฒ เดชเตเดฐเดถเดธเตเดคเดฟ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเดจเตเด‚ เดฒเดพเดญเดฎเตเดฃเตเดŸเดพเด•เตเด•เดพเดจเตเด‚ เด•เดณเดฟเด•เตเด•เดพเดฐเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดฃเด‚. เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเดฒเตเด‚ เดธเดพเตปเดกเตโ€Œเดฌเต‹เด•เตโ€Œเดธเดฟเดฒเตเด‚ เดชเตเดฒเต‡ เดšเต†เดฏเตเดฏเดพเตป OpenRCT2 เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เดŸเดพเดธเตโ€Œเด•เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเตป เดชเตเดฒเต†เดฏเตผ เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเต‡เดธเดฎเดฏเด‚ เดธเดพเตปเดกเตโ€Œเดฌเต‹เด•เตโ€Œเดธเต เดชเตเดฒเต†เดฏเดฑเดฟเดจเต† เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเต‹ เดธเดพเดฎเตเดชเดคเตเดคเดฟเด•เดฎเต‹ เด‡เดฒเตเดฒเดพเดคเต† เด•เต‚เดŸเตเดคเตฝ เดตเดดเด•เตเด•เดฎเตเดณเตเดณ เดชเดพเตผเด•เตเด•เต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด•เดฎเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเต

เดธเดฎเดฏเด‚ เดฒเดพเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ, เดžเดพเตป เด’เดฐเตเดชเด•เตเดทเต‡ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดชเตเดฐเด•เตเดฐเดฟเดฏ เด’เดดเดฟเดตเดพเด•เตเด•เตเด•เดฏเตเด‚ เดŽเดจเตเดฑเต† เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเตฝ TeamCity เดธเต†เตผเดตเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฎเดฟเดทเด‚ เดฎเตเดคเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดจเดฎเตเดฎเตพ เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต: เดฒเต‹เด•เตเด•เตฝเดนเต‹เดธเตเดฑเตเดฑเต:{เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดชเต‹เตผเดŸเตเดŸเต} (เดŽเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฒเต‹เด•เตเด•เตฝเดนเต‹เดธเตเดฑเตเดฑเต:9090) เด•เต‚เดŸเดพเดคเต† เด…เด‚เด—เต€เด•เดพเดฐ เดกเดพเดฑเตเดฑ เดจเตฝเด•เตเด•. เดชเตเดฐเดตเต‡เดถเดฟเดšเตเดš เดถเต‡เดทเด‚ เดžเด™เตเด™เดณเต† เดธเตเดตเดพเด—เดคเด‚ เดšเต†เดฏเตเดฏเตเด‚:

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
Create Project เดฌเดŸเตเดŸเดฃเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดธเตเดตเดฎเต‡เดงเดฏเดพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดซเต€เตฝเดกเตเด•เตพ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เดฌเดŸเตเดŸเตบ เด…เดฎเตผเดคเตเดคเดฟ เดถเต‡เดทเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป, เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดตเดฟเตปเดกเต‹ เดžเด™เตเด™เดณเต† เดธเตเดตเดพเด—เดคเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเด‚ เดฌเดฟเตฝเดกเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เดซเต€เตฝเดกเตเด•เตพ เดชเต‚เดฐเดฟเดชเตเดชเดฟเดšเตเดšเต เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป. เด’เดฐเต เดชเดคเดฟเดชเตเดชเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดตเดฟเตปเดกเต‹ เดžเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต. เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด• เด’เดดเดฟเดตเดพเด•เตเด•เตเด•.

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดžเด™เตเด™เตพ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเต.

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เดจเดฎเตเด•เตเด•เต เด…เดธเด‚เดฌเตเดฒเดฟ เด˜เดŸเตเดŸเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เดพเด‚, เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต: เดฌเดฟเตฝเดกเต เดธเตเดฑเตเดฑเต†เดชเตเดชเตเด•เตพ -> เดฌเดฟเตฝเดกเต เดธเตเดฑเตเดฑเต†เดชเตเดชเต เดšเต‡เตผเด•เตเด•เตเด•.

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เด‡เดตเดฟเดŸเต† เดžเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเต:

  • เดฑเดฃเตเดฃเตผ เดคเดฐเด‚ -> เด•เดฎเดพเตปเดกเต เดฒเตˆเตป
  • เดฑเตบ -> เด•เดธเตเดฑเตเดฑเด‚ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเดฎเดพเดนเดฐเดฃ เดธเดฎเดฏเดคเตเดคเต เดžเด™เตเด™เตพ เดตเดฟเดถเด•เดฒเดจเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเด‚ เดตเดฟเดถเด•เดฒเดจเดตเตเด‚ เด’เดฐเต เด˜เดŸเตเดŸเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด…เดคเดฟเดจเดพเตฝ เดซเต€เตฝเดกเต เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เด‡เดšเตเด›เดพเดจเตเดธเตƒเดค เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต:

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เดžเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฟเด—เดค เด˜เดŸเตเดŸเด™เตเด™เตพ เดชเดฟเดจเตเดจเต€เดŸเต เดจเต‹เด•เตเด•เตเด‚. เด…เดจเดฒเตˆเดธเตผ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเดคเดฟเดจเตŠเดจเตเดจเต เดตเดฐเดฟ เด•เต‹เดกเต เดฎเดพเดคเตเดฐเดฎเต‡ เดŽเดŸเตเด•เตเด•เต‚ เดŽเดจเตเดจเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดจเดฎเตเดฎเตพ เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต, เด…เดตเดฏเตเดŸเต† เดตเดพเดฏเดจเดพเด•เตเดทเดฎเดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเดฟเดฒ เดตเดดเดฟเด•เตพ เดžเดพเตป เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต เดฎเตเดจเตเดจเต‹เดŸเตเดŸเต เดชเต‹เด•เดพเด‚: เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ -> เดชเตเดคเดฟเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดšเต‡เตผเด•เตเด•เตเด• เด•เต‚เดŸเดพเดคเต† เดฎเต‚เดจเตเดจเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเด•:

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เดฌเดŸเตเดŸเตบ เด…เดฎเตผเดคเตเดคเดฟเดฏเดพเตฝ เดฎเดคเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดฎเตเด•เดณเดฟเตฝ เดตเดฒเดคเต เดฎเต‚เดฒเดฏเดฟเตฝ. เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเตเด‚.

เดจเต‡เดฐเดฟเดŸเตเดŸเต เดคเดฟเดฐเด•เตเด•เดฅ

เด†เดฆเตเดฏเด‚, เดžเด™เตเด™เตพ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เดตเดฟเดคเดฐเดฃเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เต‚เดŸเตเดคเดฒเดฑเดฟเดฏเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดตเตผเด•เตเด•เดพเดฏเดฟ, เด’เดฐเต เด…เดจเตเดฌเดจเตเดงเดฎเตเดฃเตเดŸเต เด’เดฐเต เดฒเต‡เด–เดจเด‚:

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-เดฏเตเดŸเต† เดฒเต‹เด—เดฟเตป, เดฒเตˆเดธเตปเดธเต เด•เต€ เดจเตฝเด•เดพเด‚:

%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 เดตเดฐเต†เดฏเตเดณเตเดณ เดถเตเดฐเต‡เดฃเดฟเดฏเดฟเดฒเดพเดฃเต. เดฐเดฃเตเดŸเดพเด‚ เดญเดพเด—เด‚: (เดšเดฟเดคเตเดฐ เดฆเดฟเดถ / 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;
      ....
  }
  ....
}

เดˆ เด•เต‹เดกเต เดถเด•เดฒเด‚ เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดกเต€เด•เด‚เดชเตˆเดฒเต‡เดทเตป เดตเดดเดฟเดฏเดพเดฃเต เดฒเดญเดฟเดšเตเดšเดคเต. เดคเตเดŸเตผเดจเตเดจเต, เด…เดตเดถเต‡เดทเดฟเดšเตเดš เด…เดญเดฟเดชเตเดฐเดพเดฏเดฎเดจเตเดธเดฐเดฟเดšเตเดšเต, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดคเตเดค เด•เต‹เดกเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เด‚ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดคเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด‡เดจเดฟเดฏเตเด‚ เดฐเดฃเตเดŸเต เด“เดชเตเดชเดฑเต‡เดทเดจเตเด•เตพ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต cursorId, เด…เดคเตเด‚ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เด…เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ.

เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต 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] 'เดชเต‡เดฐเต == 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();
  }
}

เด•เต‹เดกเต เดคเดฟเด•เดšเตเดšเตเด‚ เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเต. เด•เดฃเตเดŸเต€เดทเดจเดฟเดฒเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดตเต€เดฃเตเดŸเตเด‚ เด…เดธเตˆเตป เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เดดเต‹ เด…เด•เตเดทเดฐเดคเตเดคเต†เดฑเตเดฑเต เดธเด‚เดญเดตเดฟเดšเตเดšเดคเดพเดฏเดฟ เดŽเดจเดฟเด•เตเด•เต เดคเต‹เดจเตเดจเตเดจเตเดจเต เด•เต‹เดณเด‚เดนเต†เดกเตผ เดชเตเดฐเดธเตเดธเตเดกเต เด•เดฑเดจเตเดฑเต เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดคเต†เดฑเตเดฑเดพเดฏ.

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดžเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดจเดฟเด™เตเด™เดณเตเดŸเต† TeamCity เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต PVS-Studio เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด…เดจเดฒเตˆเดธเตผ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดŽเดดเตเดคเดฟเดฏเดพเตฝ เดฎเดคเดฟ. เด•เต‹เดกเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดธเด‚เดฌเตเดฒเดฟเด•เตเด•เต เดถเต‡เดทเด‚ เด‰เดŸเตป เดคเดจเตเดจเต† เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚, เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดŸเต† เดธเด™เตเด•เต€เตผเดฃเตเดฃเดคเดฏเตเด‚ เดตเดฟเดฒเดฏเตเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เด•เตเดฑเดตเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚.

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚
เด‡เด‚เด—เตเดฒเต€เดทเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‡เด•เตเดทเด•เดฐเตเดฎเดพเดฏเดฟ เดˆ เดฒเต‡เด–เดจเด‚ เดชเด™เตเด•เดฟเดŸเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดตเดฟเดตเตผเดคเตเดคเดจ เดฒเดฟเด™เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•: Vladislav Stolyarov. เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚: เดŸเต€เด‚เดธเดฟเดฑเตเดฑเดฟ. เด“เดชเตเดชเตบ เดฑเต‹เดณเตผเด•เต‹เดธเตเดฑเตเดฑเตผ เดŸเตˆเด•เตเด•เต‚เตบ 2 เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•