āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻšāĻ˛ āĻāĻŸāĻŋ āĻ¸āĻŋāĻ†āĻ‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•ā§€āĻ•āĻ°āĻŖāĨ¤ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋāĻ“ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻāĻ•āĻŸāĻžāĻ¨āĻž āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨā§‡āĻ•ā§‡ PVS-Studio āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ•āĻ°ā§‡ āĻšāĻ˛ā§‡āĻ›āĻŋāĨ¤ āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“āĻ¤ā§‡ āĻāĻ–āĻ¨ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ†āĻ‰āĻŸāĻĒā§āĻŸāĻ•ā§‡ āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋ - āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋ āĻĒāĻ°āĻŋāĻĻāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻ•āĻžāĻ°ā§‡āĻ° āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ• āĻāĻŸāĻž āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤

āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ — C, C++, C# āĻāĻŦāĻ‚ āĻœāĻžāĻ­āĻž āĻ•ā§‹āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœ āĻ¸āĻšāĻœāĻ¤āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•āĻŸāĻŋ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ, āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻāĻŦāĻ‚ āĻŽā§āĻ¯āĻžāĻ•ā§‹āĻ¸ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ¨āĻ¯āĻŧ, āĻāĻ° āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻĨā§‡āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋāĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤

āĻ¸āĻŋāĻāĻ˛ āĻŽāĻ¨āĻŋāĻŸāĻ° — āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨āĻŋāĻŸāĻ°āĻŋāĻ‚ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¯āĻž āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻ˛āĻžā§āĻš āĻŽāĻ¨āĻŋāĻŸāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ†āĻŦāĻļā§āĻ¯āĻ•. āĻ¸ā§āĻ¨ā§āĻĒāĻŋāĻ‚ āĻŽā§‹āĻĄā§‡, āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ°ā§‡āĻ° āĻ°āĻžāĻ¨ āĻ†āĻŸāĻ•āĻžāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¯ā§‡ āĻāĻ‡ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° C/C++ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻĒā§āĻ˛āĻžāĻ— āĻ•āĻ¨āĻ­āĻžāĻ°ā§āĻŸāĻžāĻ° - āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻĒā§āĻ°āĻ¤āĻŋāĻŦā§‡āĻĻāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋāĨ¤

āĻ—āĻŦā§‡āĻˇāĻŖāĻž āĻ…āĻ§ā§€āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯

āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ• āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ āĻāĻ‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻŸāĻŋ āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ• - āĻ†āĻ¸ā§āĻ¨ OpenRCT2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻŋāĨ¤

āĻ“āĻĒā§‡āĻ¨āĻ†āĻ°āĻ¸āĻŋāĻŸāĻŋ 2 - RollerCoaster Tycoon 2 (RCT2) āĻ—ā§‡āĻŽāĻŸāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻ¨ā§āĻŽā§āĻ•ā§āĻ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨, āĻāĻŸāĻŋāĻ•ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻŦāĻ‚ āĻŦāĻžāĻ— āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĨ¤ āĻ—ā§‡āĻŽāĻĒā§āĻ˛ā§‡ āĻ°āĻžāĻ‡āĻĄ, āĻĻā§‹āĻ•āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¸āĻŽā§āĻŦāĻ˛āĻŋāĻ¤ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨ā§‹āĻĻāĻ¨ āĻĒāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻšāĻžāĻ°āĻĒāĻžāĻļā§‡ āĻ˜ā§‹āĻ°ā§‡āĨ¤ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ˛āĻžāĻ­ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¤āĻŋāĻĨāĻŋāĻĻā§‡āĻ° āĻ–ā§āĻļāĻŋ āĻ°ā§‡āĻ–ā§‡ āĻĒāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ¸ā§āĻ¨āĻžāĻŽ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ OpenRCT2 āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§ƒāĻļā§āĻ¯āĻ•āĻ˛ā§āĻĒ āĻāĻŦāĻ‚ āĻ¸ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŦāĻ•ā§āĻ¸ āĻ‰āĻ­āĻ¯āĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ‡ āĻ–ā§‡āĻ˛āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻžāĻœ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¯āĻ–āĻ¨ āĻ¸ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŦāĻ•ā§āĻ¸ āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧāĻ•ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻŦāĻž āĻ…āĻ°ā§āĻĨ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ†āĻ°āĻ“ āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧ āĻĒāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ

āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻžāĻāĻšāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻŦ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻ° āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ°ā§‡ āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻšāĻžāĻ˛ā§ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻŽā§āĻšā§‚āĻ°ā§āĻ¤ āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŦāĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¯ā§‡āĻ¤ā§‡ āĻšāĻŦā§‡: localhost:{port specified while installation process} (āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, localhost:9090) āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ­ā§āĻ¯āĻ°ā§āĻĨāĻ¨āĻž āĻœāĻžāĻ¨āĻžāĻ¨ā§‹ āĻšāĻŦā§‡:

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
Create Project āĻŦāĻžāĻŸāĻ¨ā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°ā§āĻ¨āĨ¤

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻŦā§‹āĻ¤āĻžāĻŽ āĻŸāĻŋāĻĒāĻžāĻ¨ā§‹āĻ° āĻĒāĻ° āĻ¸ā§ƒāĻˇā§āĻŸāĻŋ, āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§āĻŦāĻžāĻ—āĻ¤ āĻœāĻžāĻ¨āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧāĨ¤

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻāĻ° āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻŦāĻŋāĻ˛ā§āĻĄ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨.

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻ¸ā§ƒāĻˇā§āĻŸāĻŋ. āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ‡ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛āĻ›ā§‡āĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ‰āĻ¤ā§āĻ¸ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤, āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻ˛āĻžāĻĢāĻžāĻ˛āĻžāĻĢāĻŋ āĻ•āĻ°āĻž.

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻ…āĻŦāĻļā§‡āĻˇā§‡, āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ‡āĨ¤

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻŽāĻžāĻŦā§‡āĻļā§‡āĻ° āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋ, āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨: āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§āĻŸā§‡āĻĒ -> āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§āĻŸā§‡āĻĒ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨.

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻŋ:

  • āĻ°āĻžāĻ¨āĻžāĻ° āĻŸāĻžāĻ‡āĻĒ -> āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻ‡āĻ¨
  • āĻšāĻžāĻ˛āĻžāĻ¨ -> āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻŦ, āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻāĻ• āĻ§āĻžāĻĒ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤, āĻ¤āĻžāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°ā§āĻ¨ āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ:

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻ†āĻŽāĻ°āĻž āĻĒāĻ°ā§‡ āĻĒā§ƒāĻĨāĻ• āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻŦāĨ¤ āĻāĻŸāĻŋ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¯ā§‡ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž, āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž, āĻāĻŸāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻž, āĻĒā§āĻ°āĻ¤āĻŋāĻŦā§‡āĻĻāĻ¨āĻŸāĻŋ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻĄā§‡āĻ° āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ—āĻžāĻ°ā§‹ āĻ˛āĻžāĻ‡āĻ¨ āĻ˛āĻžāĻ—ā§‡āĨ¤

āĻļā§‡āĻˇ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨, āĻ¯āĻž āĻ†āĻŽāĻŋ āĻ¤āĻžāĻĻā§‡āĻ° āĻĒāĻ āĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻ¸ā§āĻ¨ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ‡: āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ -> āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨:

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¯āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¤āĻž āĻšāĻ˛ āĻŦā§‹āĻ¤āĻžāĻŽ āĻŸāĻŋāĻĒā§āĻ¨ āĻšāĻžāĻ˛āĻžāĻ¨ āĻ‰āĻĒāĻ°ā§‡āĻ° āĻĄāĻžāĻ¨ āĻ•ā§‹āĻŖāĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻ–āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡, āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻ˛āĻŦāĨ¤

āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ

āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ PVS-Studio āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž Chocolatey āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ āĻ¯āĻžāĻ°āĻž āĻāĻ‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻœāĻžāĻ¨āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻ†āĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§:

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, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻ°āĻž āĻšāĻŦā§‡ā§ˇ

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)
  {
    ....
  }
  ....
}

āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ˜āĻ¨āĻŋāĻˇā§āĻ  āĻ•āĻŸāĻžāĻ•ā§āĻˇāĻĒāĻžāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•. āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ imageDirection/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;
      ....
  }
  ....
}

āĻāĻ‡ āĻ•ā§‹āĻĄ āĻ–āĻŖā§āĻĄāĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ decompilation āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°, āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻŦāĻžāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻšāĻžāĻ°, āĻ¨āĻ¨-āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻ•ā§‹āĻĄ āĻ…āĻ‚āĻļ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡. āĻ¤āĻŦā§‡ āĻāĻ–āĻ¨āĻ“ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻŦāĻžāĻ•āĻŋ āĻ†āĻ›ā§‡ 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] āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ '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();
  }
}

āĻ•ā§‹āĻĄāĻŸāĻŋ āĻŦā§‡āĻļ āĻ…āĻĻā§āĻ­ā§āĻ¤ āĻĻā§‡āĻ–āĻžāĻšā§āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛āĻŸāĻŋāĻ•ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻž āĻļāĻ°ā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ‡āĻĒā§‹ āĻ›āĻŋāĻ˛ ColumnHeaderPressedCurrentState āĻ…āĻ°ā§āĻĨ āĻŽāĻŋāĻĨā§āĻ¯āĻž.

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻ†āĻŽāĻ°āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›āĻŋ, āĻ†āĻĒāĻ¨āĻžāĻ° āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•āĻ•ā§‡ āĻāĻ•ā§€āĻ­ā§‚āĻ¤ āĻ•āĻ°āĻž āĻŦā§‡āĻļ āĻ¸āĻšāĻœāĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ¯āĻĨā§‡āĻˇā§āĻŸāĨ¤ āĻ•ā§‹āĻĄ āĻšā§‡āĻ• āĻ•āĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻŽāĻžāĻŦā§‡āĻļā§‡āĻ° āĻĒāĻ°ā§‡ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡, āĻ¯āĻž āĻœāĻŸāĻŋāĻ˛āĻ¤āĻž āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻ–āĻ°āĻš āĻāĻ–āĻ¨āĻ“ āĻ•āĻŽ āĻšāĻ˛ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻĻā§‚āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻŦā§‡āĨ¤

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ‡āĻ‚āĻ°ā§‡āĻœāĻŋ āĻ­āĻžāĻˇāĻžāĻ­āĻžāĻˇā§€ āĻĻāĻ°ā§āĻļāĻ•āĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ­āĻžāĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻŦā§‡ āĻ…āĻ¨ā§āĻ—ā§āĻ°āĻš āĻ•āĻ°ā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ˛āĻŋāĻ™ā§āĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨: āĻ­ā§āĻ˛āĻžāĻĻāĻŋāĻ¸ā§āĻ˛āĻžāĻ­ āĻ¸ā§āĻŸā§‹āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ°āĻ­āĨ¤ āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻŦāĻ‚ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨: āĻŸāĻŋāĻŽāĻ¸āĻŋāĻŸāĻŋāĨ¤ āĻ“āĻĒā§‡āĻ¨ āĻ°ā§‹āĻ˛āĻžāĻ°āĻ•ā§‹āĻ¸ā§āĻŸāĻžāĻ° āĻŸāĻžāĻ‡āĻ•ā§āĻ¨ 2 āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ.

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨