เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เด
เดจเดฒเตเดธเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดจเดฟเดฒเดตเดฟเดฒเต เดธเดพเดนเดเดฐเตเดฏเดเตเดเดณเดฟเดฒเตเดจเตเดจเต เดธเดฟเด เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเตเดฎเดพเดฏเตเดณเตเดณ เด
เดคเดฟเดจเตเดฑเต เดธเดเดฏเตเดเดจเดฎเดพเดฃเต. เดเดคเตเดเตเดเดฟเดฒเตเด เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดเดเตเดเดฐเดฃ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฐเต PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดตเดฟเดถเดเดฒเดจเด เดเตเดฑเดเตเดเต เดเดฎเดพเตปเดกเตเดเดณเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดฎเตเดเตเดเดฟเดฒเตเด, เดเดเตเดเตพ เด เดชเตเดฐเดเตเดฐเดฟเดฏ เดเตเดเตเดคเตฝ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดเตเดเตเดจเตเดจเดคเต เดคเตเดเดฐเตเดจเตเดจเต. TeamCity - TeamCity Inspections Type-เดจเตเดณเตเดณ เดเดฐเต เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดเตเดเต เด
เดจเดฒเตเดธเตผ เดเดเตเดเตโเดชเตเดเตเดเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเตเดเต เดเดชเตเดชเตเตพ เดเดฃเตเดเต. เดเดคเต เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเตเดเตเดเดพเด.
เดเดชเดฏเตเดเดฟเดเตเด เดธเตเดซเตเดฑเตเดฑเตโเดตเตเดฏเดฑเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ
เดชเด เดฟเดเตเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดชเดฆเตเดงเดคเดฟเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ
เดเดฐเต เดชเตเดฐเดพเดฏเตเดเดฟเด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เด เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเด - เดจเดฎเตเดเตเดเต OpenRCT2 เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเดพเด.
เดเดฎเดชเตเดชเตเดเตเดคเตเดคเดฒเต
เดธเดฎเดฏเด เดฒเดพเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ, เดเดพเตป เดเดฐเตเดชเดเตเดทเต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเตป เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดดเดฟเดตเดพเดเตเดเตเดเดฏเตเด เดเดจเตเดฑเต เดเดฎเตเดชเตเดฏเตเดเตเดเดฑเดฟเตฝ TeamCity เดธเตเตผเดตเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดจเดฟเดฎเดฟเดทเด เดฎเตเดคเตฝ เดเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เดจเดฎเตเดฎเตพ เดเดคเดฟเดฒเตเดเตเดเต เดชเตเดเตเดฃเตเดเดคเตเดฃเตเดเต: เดฒเตเดเตเดเตฝเดนเตเดธเตเดฑเตเดฑเต:{เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเตป เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดชเตเตผเดเตเดเต} (เดเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฒเตเดเตเดเตฝเดนเตเดธเตเดฑเตเดฑเต:9090) เดเตเดเดพเดคเต เด เดเดเตเดเดพเดฐ เดกเดพเดฑเตเดฑ เดจเตฝเดเตเด. เดชเตเดฐเดตเตเดถเดฟเดเตเด เดถเตเดทเด เดเดเตเดเดณเต เดธเตเดตเดพเดเดคเด เดเตเดฏเตเดฏเตเด:
Create Project เดฌเดเตเดเดฃเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด. เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดธเตเดตเดฎเตเดงเดฏเดพ เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต เดซเตเตฝเดกเตเดเตพ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเด.
เดฌเดเตเดเตบ เด
เดฎเตผเดคเตเดคเดฟ เดถเตเดทเด เดธเตเดทเตเดเดฟเดเตเดเดพเตป, เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดตเดฟเตปเดกเต เดเดเตเดเดณเต เดธเตเดตเดพเดเดคเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเดพเด เดฌเดฟเตฝเดกเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตเด.
เดซเตเตฝเดกเตเดเตพ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเต เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด เดธเตเดทเตเดเดฟเดเตเดเดพเตป. เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดธเดเดตเดฟเดงเดพเดจเด เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดเดตเดถเตเดฏเดชเตเดชเตเดเตเดจเตเดจ เดเดฐเต เดตเดฟเตปเดกเต เดเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต. เดเดฑเดตเดฟเดเดเตเดเตพ เดเดคเดฟเดจเดเด เดชเตเดฐเดพเดฆเตเดถเดฟเดเดฎเดพเดฏเดฟ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเด เดเดดเดฟเดตเดพเดเตเดเตเด.
เด
เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดเดเตเดเตพ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเต.
เดจเดฎเตเดเตเดเต เด
เดธเดเดฌเตเดฒเดฟ เดเดเตเดเดเตเดเตพ เดเตเตผเดเตเดเดพเด, เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต: เดฌเดฟเตฝเดกเต เดธเตเดฑเตเดฑเตเดชเตเดชเตเดเตพ -> เดฌเดฟเตฝเดกเต เดธเตเดฑเตเดฑเตเดชเตเดชเต เดเตเตผเดเตเดเตเด.
เดเดตเดฟเดเต เดเดเตเดเตพ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเต:
- เดฑเดฃเตเดฃเตผ เดคเดฐเด -> เดเดฎเดพเตปเดกเต เดฒเตเตป
- เดฑเตบ -> เดเดธเตเดฑเตเดฑเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต
เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเดฎเดพเดนเดฐเดฃ เดธเดฎเดฏเดคเตเดคเต เดเดเตเดเตพ เดตเดฟเดถเดเดฒเดจเด เดจเดเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด เดธเดเดฌเตเดฒเดฟเดฏเตเด เดตเดฟเดถเดเดฒเดจเดตเตเด เดเดฐเต เดเดเตเดเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด, เด เดคเดฟเดจเดพเตฝ เดซเตเตฝเดกเต เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดเตเดเดพเดจเตเดธเตเดค เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต:
เดเดเตเดเตพ เดตเตเดฏเดเตเดคเดฟเดเดค เดเดเตเดเดเตเดเตพ เดชเดฟเดจเตเดจเตเดเต เดจเตเดเตเดเตเด. เด
เดจเดฒเตเดธเตผ เดฒเตเดกเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดซเตเตผเดฎเดพเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดชเดคเดฟเดจเตเดจเตเดจเต เดตเดฐเดฟ เดเตเดกเต เดฎเดพเดคเตเดฐเดฎเต เดเดเตเดเตเดเต เดเดจเตเดจเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.
เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดจเดฎเตเดฎเตพ เด เดตเดธเดพเดจเดฎเดพเดฏเดฟ เดเตเดฏเตเดฏเตเดฃเตเดเดคเต, เด เดตเดฏเตเดเต เดตเดพเดฏเดจเดพเดเตเดทเดฎเดค เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฟเดฒ เดตเดดเดฟเดเตพ เดเดพเตป เดตเดฟเดตเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต เดฎเตเดจเตเดจเตเดเตเดเต เดชเตเดเดพเด: เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ -> เดชเตเดคเดฟเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเตเตผเดเตเดเตเด เดเตเดเดพเดคเต เดฎเตเดจเตเดจเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเตเตผเดเตเดเตเด:
เดฌเดเตเดเตบ เด
เดฎเตผเดคเตเดคเดฟเดฏเดพเตฝ เดฎเดคเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด เดฎเตเดเดณเดฟเตฝ เดตเดฒเดคเต เดฎเตเดฒเดฏเดฟเตฝ. เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเดเดฏเตเด เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด.
เดจเตเดฐเดฟเดเตเดเต เดคเดฟเดฐเดเตเดเดฅ
เดเดฆเตเดฏเด, เดเดเตเดเตพ เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดตเดฟเดคเดฐเดฃเด เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเตเดเตเดเดฒเตเดฑเตเดฑเต เดชเดพเดเตเดเตเดเต เดฎเดพเดจเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเดฒเดฑเดฟเดฏเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดตเตผเดเตเดเดพเดฏเดฟ, เดเดฐเต เด
เดจเตเดฌเดจเตเดงเดฎเตเดฃเตเดเต
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"
เดเดคเดฟเดจเดฟเดเดฏเดฟเตฝ, เดชเดฆเตเดงเดคเดฟเดฏเตเดเต เด เดธเดเดฌเตเดฒเดฟเดฏเตเด เดตเดฟเดถเดเดฒเดจเดตเตเด เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ, เดจเดฎเตเดเตเดเต เดเดพเดฌเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด เดชเตเดฐเตเดพเดเดเตเดเตเดเตพ เด เดคเต เดเดฑเดชเตเดชเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดเดจเดฟ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเดพเด เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดเดเตเด
เดจเดฒเตเดธเตผ เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดเดพเดฃเตเดจเตเดจเดคเดฟเดจเต เดชเตเดเดพเตป:
เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเต เดฑเตเตพ เดจเดฎเตเดชเดฑเตเดเตพ เด
เดจเตเดธเดฐเดฟเดเตเดเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดคเดฐเดเดคเดฟเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเตเดกเดฟเดฒเตเดเต เดจเดพเดตเดฟเดเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป, เดจเดฟเดเตเดเตพ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดเดณเตเดณ เดฒเตเตป เดจเดฎเตเดชเดฑเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเดฃเด. เดฎเตเดเดณเดฟเตฝ เดตเดฒเดคเต เดเตเดฃเดฟเดฒเตเดณเตเดณ เดเตเดฆเตเดฏเดเดฟเดนเตเดจเดคเตเดคเดฟเตฝ เดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเดจเตเดเตเดเตเดเดฟเดฏ เดเดฐเต เดชเตเดคเดฟเดฏ เดเดพเดฌเต เดจเดฟเดเตเดเตพเดเตเดเต เดคเตเดฑเดเตเดเตเด. เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดเดณเตเดณ เดฒเตเตป เดจเดฎเตเดชเดฑเดฟเตฝ เดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดกเดฟเดฒเตเดเต เดจเดพเดตเดฟเดเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด. เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ เดตเดฟเดฆเตเดฐ เดเดฎเตเดชเตเดฏเตเดเตเดเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดพเดตเดฟเดเตเดทเตป เดธเดพเดงเตเดฏเดฎเดพเดฃเต SourceTreeRoot เดฎเดพเตผเดเตเดเตผ. เด
เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเตเดคเดฟเดฏเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดเตผเดเตเดเตเด เด
เดจเตเดฌเดจเตเดง เดตเดฟเดญเดพเดเดตเตเดฎเดพเดฏเดฟ เดธเตเดตเดฏเด เดชเดฐเดฟเดเดฏเดชเตเดชเตเดเดพเด
เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดซเดฒเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต
เดเดชเตเดชเตเตพ เดเดเตเดเตพ เดฌเดฟเตฝเดกเต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดจเตเดจเดคเตเด เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเตเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟ, เดเดเตเดเตพ เดจเตเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตฝ เดเดฃเตเดเตเดคเตเดคเดฟเดฏ เดเดฟเดฒ เดฐเดธเดเดฐเดฎเดพเดฏ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดจเตเดเตเดเดพเด.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N1
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
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
struct RCT12SpriteBase
{
....
uint8_t flags;
....
};
struct rct1_peep : RCT12SpriteBase
{
....
uint8_t flags;
....
};
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เด เดเดฟเดธเตเดฅเดพเดจ เดเตเดฒเดพเดธเดฟเดฒเตเด เดกเดฟเดธเตเตปเดกเดจเตเดฑเดฟเดฒเตเด เดเดฐเต เดชเตเดฐเตเดณเตเดณ เดเดฐเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดฐเต เดชเดฟเดถเดเดฒเตเดฒ. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดชเดพเดฐเดจเตเดฑเต เดเตเดฒเดพเดธเดฟเดจเตเดฑเต เดเดฒเตเดฒเดพ เดฎเตเดเดฒเดเดณเตเด เดเตเตฝเดกเต เดเตเดฒเดพเดธเดฟเตฝ เดเดฃเตเดเตเดจเตเดจเต เดชเดพเดฐเดฎเตเดชเดฐเตเดฏ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏ เดคเดจเตเดจเต เด เดจเตเดฎเดพเดจเดฟเดเตเดเตเดจเตเดจเต. เด เดตเดเดพเดถเดฟเดฏเดฟเตฝ เด เดคเต เดชเตเดฐเดฟเดฒเตเดณเตเดณ เดซเตเตฝเดกเตเดเตพ เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเดเตเดเตพ เดเดถเดฏเดเตเดเตเดดเดชเตเดชเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N4
void vehicle_visual_observation_tower(...., int32_t imageDirection, ....)
{
if ((imageDirection / 8) && (imageDirection / 8) != 3)
{
....
}
....
}
เดจเดฎเตเดเตเดเต เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเตเดเตเดเดพเด. เดเดเตเดธเตเดชเตเดฐเดทเตป เดเดฎเตเดเต เดกเดฏเดฑเดเตเดทเตป/8 เดเดเตเดเดฟเตฝ เดเดณเตเดณเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด เดเดฎเตเดเต เดฆเดฟเดถ -7 เดฎเตเดคเตฝ 7 เดตเดฐเตเดฏเตเดณเตเดณ เดถเตเดฐเตเดฃเดฟเดฏเดฟเดฒเดพเดฃเต. เดฐเดฃเตเดเดพเด เดญเดพเดเด: (เดเดฟเดคเตเดฐ เดฆเดฟเดถ / 8) != 3 เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต เดเดฎเตเดเต เดฆเดฟเดถ เดชเดฐเดฟเดงเดฟเดเตเดเต เดชเตเดฑเดคเตเดคเดพเดฏเดคเดฟเดจเต: เดฏเดฅเดพเดเตเดฐเดฎเด -31 เดฎเตเดคเตฝ -24 เดตเดฐเตเดฏเตเด 24 เดฎเตเดคเตฝ 31 เดตเดฐเตเดฏเตเด. เด เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดถเตเดฐเตเดฃเดฟเดฏเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดจเดฎเตเดชเดฑเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเดฟเดเตเดเต เดตเดณเดฐเต เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต, เดเตเดเดพเดคเต เด เดเตเดกเดฟเตฝ เดเดฐเต เดชเดฟเดถเดเตเด เดเดฒเตเดฒเตเดเตเดเดฟเตฝเดชเตเดชเตเดฒเตเด, เด เดตเตเดฏเดตเดธเตเดฅเดเตพ เดเตเดเตเดคเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดตเตเดฃเตเดเตเด เดเดดเตเดคเดพเตป เดเดพเตป เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดเตเดกเต เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจ เดเดณเตเดเตพเดเตเดเต เดเดคเต เดเตเดตเดฟเดคเด เดตเดณเดฐเต เดเดณเตเดชเตเดชเดฎเดพเดเตเดเตเด.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N5
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
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
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
void CustomListView::MouseUp(....)
{
....
if (!ColumnHeaderPressedCurrentState)
{
ColumnHeaderPressed = std::nullopt;
ColumnHeaderPressedCurrentState = false;
Invalidate();
}
}
เดเตเดกเต เดคเดฟเดเดเตเดเตเด เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต. เดเดฃเตเดเตเดทเดจเดฟเดฒเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดตเตเดฃเตเดเตเด เด เดธเตเตป เดเตเดฏเตเดฏเตเดฎเตเดชเตเดดเต เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเต เดธเดเดญเดตเดฟเดเตเดเดคเดพเดฏเดฟ เดเดจเดฟเดเตเดเต เดคเตเดจเตเดจเตเดจเตเดจเต เดเตเดณเดเดนเตเดกเตผ เดชเตเดฐเดธเตเดธเตเดกเต เดเดฑเดจเตเดฑเต เดธเตเดฑเตเดฑเตเดฑเตเดฑเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดคเตเดฑเตเดฑเดพเดฏ.
เดคเตเดฐเตเดฎเดพเดจเด
เดเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดจเดฟเดเตเดเดณเตเดเต TeamCity เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต PVS-Studio เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เด เดจเดฒเตเดธเตผ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเดฐเต เดเตเดฑเดฟเดฏ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดดเตเดคเดฟเดฏเดพเตฝ เดฎเดคเดฟ. เดเตเดกเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เด เดธเดเดฌเตเดฒเดฟเดเตเดเต เดถเตเดทเด เดเดเตป เดคเดจเตเดจเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด, เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดเต เดธเดเตเดเตเตผเดฃเตเดฃเดคเดฏเตเด เดตเดฟเดฒเดฏเตเด เดเดชเตเดชเตเดดเตเด เดเตเดฑเดตเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เด เดต เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเตป เดธเดนเดพเดฏเดฟเดเตเดเตเด.
เดเดเดเตเดฒเตเดทเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดทเดเดฐเตเดฎเดพเดฏเดฟ เด เดฒเตเดเดจเด เดชเดเตเดเดฟเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดตเดฟเดตเตผเดคเตเดคเดจ เดฒเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเด: Vladislav Stolyarov.
เด
เดตเดฒเดเดฌเด: www.habr.com