เจชเฉเจตเฉเจเจธ-เจธเจเฉเจกเฉเจ เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ เจธเจญ เจคเฉเจ เจฎเฉเจเฉเจฆเจพ เจฆเฉเจฐเจฟเจธเจผเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจธเฉเจเจ เจชเฉเจฐเจฃเจพเจฒเฉเจเจ เจจเจพเจฒ เจเจธเจฆเจพ เจเจเฉเจเจฐเจฃ เจนเฉเฅค เจ
เจคเฉ เจนเจพเจฒเจพเจเจเจฟ เจฒเจเจญเจ เจเจฟเจธเฉ เจตเฉ เจจเจฟเจฐเฉฐเจคเจฐ เจเจเฉเจเจฐเจฃ เจชเฉเจฐเจฃเจพเจฒเฉ เจคเฉเจ เจเฉฑเจ PVS-เจธเจเฉเจกเฉเจ เจชเฉเจฐเฉเจเฉเจเจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจธเจฟเจฐเจซ เจเฉเจ เจเจฎเจพเจเจกเจพเจ เจตเจฟเฉฑเจ เจฌเจฃเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจ
เจธเฉเจ เจเจธ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจนเฉเจฐ เจตเฉ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจฌเจฃเจพเจเจฃเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฆเฉ เจนเจพเจเฅค PVS-เจธเจเฉเจกเฉเจ เจเฉเจฒ เจนเฉเจฃ เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ TeamCity - TeamCity เจจเจฟเจฐเฉเจเจฃ เจเจฟเจธเจฎ เจฒเจ เจเฉฑเจ เจซเจพเจฐเจฎเฉเจ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃ เจฒเจ เจธเจฎเจฐเจฅเจจ เจนเฉเฅค เจเจ เจฆเฉเจเฉเจ เจเจฟ เจเจน เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค
เจตเจฐเจคเฉ เจเจ เจธเฉเจซเจเจตเฉเจ เจฐ เจฌเจพเจฐเฉ เจเจพเจฃเจเจพเจฐเฉ
เจ เจงเจฟเจเจจ เจ เจงเฉเจจ เจชเฉเจฐเฉเจเฉเจเจ เจฌเจพเจฐเฉ เจเจพเจฃเจเจพเจฐเฉ
เจเจ เจเฉฑเจ เจตเจฟเจนเจพเจฐเจ เจเจฆเจพเจนเจฐเจฃ 'เจคเฉ เจเจธ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจ - เจเจ OpenRCT2 เจชเฉเจฐเฉเจเฉเจเจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเฉเจเฅค
เจตเจฟเจตเจธเจฅเจพ
เจธเจฎเจพเจ เจฌเจเจพเจเจฃ เจฒเจ, เจฎเฉเจ เจธเจผเจพเจเจฆ เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเฉฑเจก เจฆเฉเจตเจพเจเจเจพ เจ เจคเฉ เจเจธ เจชเจฒ เจคเฉเจ เจธเจผเฉเจฐเฉ เจเจฐเจพเจเจเจพ เจเจฆเฉเจ เจฎเฉเจฐเฉ เจเฉฐเจชเจฟเจเจเจฐ 'เจคเฉ TeamCity เจธเจฐเจตเจฐ เจเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉเฅค เจธเจพเจจเฉเฉฐ เจเจธ 'เจคเฉ เจเจพเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ: เจฒเฉเจเจฒเจนเฉเจธเจ:{เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉเจฐเจพเจจ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจชเฉเจฐเจ} (เจฎเฉเจฐเฉ เจเฉเจธ เจตเจฟเฉฑเจ, เจฒเฉเจเจฒเจนเฉเจธเจ:9090) เจ เจคเฉ เจชเฉเจฐเจฎเจพเจฃเฉเจเจฐเจจ เจกเฉเจเจพ เจฆเจพเจเจฒ เจเจฐเฉเฅค เจฆเจพเจเจฒ เจนเฉเจฃ เจคเฉเจ เจฌเจพเจ เจฆ เจธเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจฆเฉเจเจฐเจพ เจธเจตเจพเจเจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพ:
เจชเฉเจฐเฉเจเฉเจเจ เจฌเจฃเจพเจ เจฌเจเจจ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเฉเฅค เจ
เฉฑเจเฉ, เจนเฉฑเจฅเฉเจ เจเฉเจฃเฉ เจ
เจคเฉ เจเฉเจคเจฐ เจญเจฐเฉเฅค
เจฌเจเจจ เจฆเจฌเจพเจเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ เจฌเจฃเจพเจ, เจธเจพเจจเฉเฉฐ เจธเฉเจเจฟเฉฐเจเจพเจ เจตเจพเจฒเฉ เจตเจฟเฉฐเจกเฉ เจฆเฉเจเจฐเจพ เจธเจตเจพเจเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจเจ เจเจฒเจฟเฉฑเจ เจเจฐเฉเจ เจฌเจฟเจฒเจก เจเฉเจเจซเจฟเจเจฐเฉเจธเจผเจจ เจฌเจฃเจพเจ.
เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจญเจฐเฉ เจ
เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเฉ เจฌเจฃเจพเจ. เจ
เจธเฉเจ เจเฉฑเจ เจตเจฟเฉฐเจกเฉ เจตเฉเจเจฆเฉ เจนเจพเจ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจธเฉฐเจธเจเจฐเจฃ เจเฉฐเจเจฐเฉเจฒ เจธเจฟเจธเจเจฎ เจฆเฉ เจเฉเจฃ เจเจฐเจจ เจฒเจ เจเจนเจฟ เจฐเจนเฉ เจนเฉเฅค เจเจฟเจเจเจเจฟ เจธเจฐเฉเจค เจชเจนเจฟเจฒเจพเจ เจนเฉ เจธเจฅเจพเจจเจ เจคเฉเจฐ 'เจคเฉ เจธเจฅเจฟเจค เจนเจจ, เจเจฒเจฟเฉฑเจ เจเจฐเฉ เจเฉฑเจกเฉ.
เจ
เฉฐเจค เจตเจฟเฉฑเจ, เจ
เจธเฉเจ เจชเฉเจฐเฉเจเฉเจเจ เจธเฉเจเจฟเฉฐเจเจพเจ เจคเฉ เจเจพเจเจฆเฉ เจนเจพเจ.
เจเจ เจ
เจธเฉเจเจฌเจฒเฉ เจธเจเฉเจชเจธ เจเฉเฉเฉเจ, เจ
เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ เจเจฒเจฟเฉฑเจ เจเจฐเฉ: เจฌเจฟเจฒเจก เจธเจเฉเจชเจธ -> เจฌเจฟเจฒเจก เจธเจเฉเจช เจธเจผเจพเจฎเจฒ เจเจฐเฉ.
เจเฉฑเจฅเฉ เจ
เจธเฉเจ เจเฉเจฃเจฆเฉ เจนเจพเจ:
- เจฐเจจเจฐ เจฆเฉ เจเจฟเจธเจฎ -> เจเจฎเจพเจเจก เจฒเจพเจเจจ
- เจเจฒเจพเจ -> เจเจธเจเจฎ เจธเจเฉเจฐเจฟเจชเจ
เจเจฟเจเจเจเจฟ เจ เจธเฉเจ เจชเฉเจฐเฉเจเฉเจเจ เจเฉฐเจชเจพเจเจฒเฉเจธเจผเจจ เจฆเฉเจฐเจพเจจ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจพเจเจเฉ, เจ เจธเฉเจเจฌเจฒเฉ เจ เจคเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเฉฑเจ เจเจฆเจฎ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ, เจเจธ เจฒเจ เจเฉเจคเจฐ เจจเฉเฉฐ เจญเจฐเฉ เจเจธเจเจฎ เจธเจเฉเจฐเจฟเจชเจ:
เจ
เจธเฉเจ เจฌเจพเจ
เจฆ เจตเจฟเฉฑเจ เจตเจฟเจ
เจเจคเฉเจเจค เจเจฆเจฎเจพเจ เจจเฉเฉฐ เจฆเฉเจเจพเจเจเฉเฅค เจเจน เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ เจเจฟ เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจจเฉเฉฐ เจฒเฉเจก เจเจฐเจจเจพ, เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเจจเจพ, เจเจธเจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจเจพ, เจฐเจฟเจชเฉเจฐเจ เจจเฉเฉฐ เจเจเจเจชเฉเฉฑเจ เจเจฐเจจเจพ เจ
เจคเฉ เจเจธเจจเฉเฉฐ เจซเจพเจฐเจฎเฉเจ เจเจฐเจจ เจฒเจ เจเฉเจก เจฆเฉเจเจ เจธเจฟเจฐเจซ เจเจฟเจเจฐเจพเจ เจฒเจพเจเจจเจพเจ เจฒเฉฑเจเจฆเฉเจเจ เจนเจจเฅค
เจเจเจผเจฐเฉ เจเฉเจเจผ เจเฉ เจธเจพเจจเฉเฉฐ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเจน เจนเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจจเฉเฉฐ เจธเฉเฉฑเจ เจเจฐเจจเจพ, เจเฉ เจฎเฉเจ เจเจนเจจเจพเจ เจฆเฉ เจชเฉเฉเจนเจจเจฏเฉเจเจคเจพ เจจเฉเฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเฉเจ เจคเจฐเฉเจเฉ เจฆเฉฑเจธเฉ เจนเจจเฅค เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจเจ เจ เฉฑเจเฉ เจตเจงเฉเจ: เจชเฉเจฐเจพเจฎเฉเจเจฐ -> เจจเจตเจพเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจธเจผเจพเจฎเจฒ เจเจฐเฉ เจ เจคเฉ เจคเจฟเฉฐเจจ เจตเฉเจฐเฉเจเจฌเจฒ เจเฉเฉเฉ:
เจคเฉเจนเจพเจจเฉเฉฐ เจฌเจธ เจฌเจเจจ เจฆเจฌเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเจฒเจพเจ เจเฉฑเจชเจฐ เจธเฉฑเจเฉ เจเฉเจจเฉ เจตเจฟเฉฑเจ. เจเจฆเฉเจ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ เจ
เจคเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ, เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจธเจเฉเจฐเจฟเจชเจ เจฌเจพเจฐเฉ เจฆเฉฑเจธเจพเจเจเจพเฅค
เจธเจฟเฉฑเจงเฉ เจธเจเฉเจฐเจฟเจชเจ
เจชเจนเจฟเจฒเจพเจ, เจธเจพเจจเฉเฉฐ เจจเจตเฉเจจเจคเจฎ 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"
เจเจธ เจฆเฉเจฐเจพเจจ, เจชเฉเจฐเฉเจเฉเจเจ เจฆเจพ เจ เจธเฉเจเจฌเจฒเฉ เจ เจคเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจธเจซเจฒเจคเจพเจชเฉเจฐเจตเจ เจชเฉเจฐเจพ เจนเฉ เจเจฟเจ เจนเฉ, เจ เจธเฉเจ เจเฉเจฌ 'เจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจพเจ เจชเฉเจฐเจพเจเฉเจเจ เจ เจคเฉ เจเจธ เจจเฉเฉฐ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจ.
เจนเฉเจฃ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเฉเจ เจจเจฟเจฐเฉเจเจฃ เจเฉเฉฑเจฒเจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจฐเจฟเจชเฉเจฐเจ เจฆเฉเจเจฃ เจฒเจ:
เจเฉเจคเจพเจตเจจเฉเจเจ เจจเฉเฉฐ เจกเจพเจเจเจจเฉเจธเจเจฟเจ เจจเจฟเจฏเจฎ เจจเฉฐเจฌเจฐเจพเจ เจฆเฉเจเจฐเจพ เจธเจฎเฉเจนเจฌเฉฑเจง เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจเฉเจก เจฐเจพเจนเฉเจ เจจเฉเจตเฉเจเฉเจ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจคเจพเจตเจจเฉ เจฆเฉ เจจเจพเจฒ เจฒเจพเจเจจ เจจเฉฐเจฌเจฐ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจเฉฑเจชเจฐ เจธเฉฑเจเฉ เจเฉเจจเฉ เจตเจฟเฉฑเจ เจชเฉเจฐเจธเจผเจจ เจเจฟเฉฐเจจเฉเจน 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจจ เจจเจพเจฒ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเจธเจคเจพเจตเฉเจเจผเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจจเจตเจพเจ เจเฉเจฌ เจเฉเฉฑเจฒเฉเจน เจเจพเจตเฉเจเจพเฅค เจคเฉเจธเฉเจ เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจเฉเจคเจพเจตเจจเฉ เจฆเฉ เจจเจพเจฒ เจฒเจพเจเจจ เจจเฉฐเจฌเจฐ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจเฉ เจเฉเจก เจฐเจพเจนเฉเจ เจตเฉ เจจเฉเจตเฉเจเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจตเจฐเจคเจฃ เจตเฉเจฒเฉ เจฐเจฟเจฎเฉเจ เจเฉฐเจชเจฟเจเจเจฐ เจคเฉเจ เจจเฉเจตเฉเจเฉเจธเจผเจจ เจธเฉฐเจญเจต เจนเฉ 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 เจฆเฉ เจฐเฉเจเจ เจตเจฟเฉฑเจ เจนเฉเฅค เจฆเฉเจเจพ เจญเจพเจ: (imageDirection/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;
....
}
....
}
เจเจน เจเฉเจก เจเฉเจเฉเจพ เจธเฉฐเจญเจพเจตเจค เจคเฉเจฐ 'เจคเฉ เจกเฉเจเฉฐเจชเจฟเจฒเฉเจธเจผเจจ เจฆเฉเจเจฐเจพ เจชเฉเจฐเจพเจชเจค เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค เจซเจฟเจฐ, เจเจฟเฉฑเจชเจฃเฉ เจเฉฑเจก เจเฉ เจจเจฟเจฐเจฃเจพ เจเจฐเจฆเฉ เจนเฉเจ, เจเฉเจฐ-เจเจพเจฐเจ เจเฉเจก เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจธเฉ. เจนเจพเจฒเจพเจเจเจฟ, เจ เจเฉ เจตเฉ เจเฉเจ เจเจชเจฐเฉเจธเจผเจจ เจฌเจพเจเฉ เจนเจจ เจเจฐเจธเจฐ เจเจ.เจกเฉ, เจเจฟเจธเจฆเจพ เจตเฉ เจฌเจนเฉเจคเจพ เจฎเจคเจฒเจฌ เจจเจนเฉเจ เจนเฉเฅค
เจเฉเจคเจพเจตเจจเฉ 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();
}
}
เจเฉเจก เจเจพเจซเจผเฉ เจ เจเฉเจฌ เจฒเฉฑเจเจฆเจพ เจนเฉ. เจเจน เจฎเฉเจจเฉเฉฐ เจเจพเจชเจฆเจพ เจนเฉ เจเจฟ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจเจพเจ เจตเฉเจฐเฉเจเจฌเจฒ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจตเฉเจฒเฉ เจเฉฑเจ เจเจพเจเจชเฉ เจธเฉ เจเจพเจฒเจฎ เจนเฉเจกเจฐ เจฆเจฌเจพเจเจ เจฎเฉเจเฉเจฆเจพ เจธเจฅเจฟเจคเฉ เจฎเฉเฉฑเจฒ เจเฉเจ เฉ.
เจธเจฟเฉฑเจเจพ
เจเจฟเจตเฉเจ เจเจฟ เจ เจธเฉเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเจพเจ, เจคเฉเจนเจพเจกเฉ เจเฉเจฎเจธเจฟเจเฉ เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ PVS-เจธเจเฉเจกเฉเจ เจธเจเฉเจเจฟเจ เจเจจเจพเจฒเจพเจเจเจผเจฐ เจจเฉเฉฐ เจเจเฉเจเฉเจฐเจฟเจค เจเจฐเจจเจพ เจเจพเจซเจผเฉ เจธเจงเจพเจฐเจจ เจนเฉเฅค เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจธเจฟเจฐเจซ เจเฉฑเจ เจเฉเจเฉ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ เจฒเจฟเจเจฃ เจฒเจ เจเจน เจเจพเจซเจผเฉ เจนเฉ. เจเฉเจก เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจจเจพเจฒ เจคเฉเจนเจพเจจเฉเฉฐ เจ เจธเฉเจเจฌเจฒเฉ เจคเฉเจ เจคเฉเจฐเฉฐเจค เจฌเจพเจ เจฆ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจฆเฉ เจชเจเจพเจฃ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฎเจฟเจฒเฉเจเฉ, เจเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจคเจฎ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเฉเจเฉ เจเจฆเฉเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเฉ เจเฉเฉฐเจเจฒเจคเจพ เจ เจคเฉ เจฒเจพเจเจค เจ เจเฉ เจตเฉ เจเฉฑเจ เจนเฉเจตเฉเจเฉเฅค
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจธ เจฒเฉเจ เจจเฉเฉฐ เจ
เฉฐเจเฉเจฐเฉเจเจผเฉ เจฌเฉเจฒเจฃ เจตเจพเจฒเฉ เจฆเจฐเจธเจผเจเจพเจ เจจเจพเจฒ เจธเจพเจเจเจพ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจ
เจจเฉเจตเจพเจฆ เจฒเจฟเฉฐเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ: เจตเจฒเจพเจฆเจฟเจธเจฒเจพเจต เจธเจเฉเจฒเจฏเจพเจฐเฉเจตเฅค
เจธเจฐเฉเจค: www.habr.com