PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡
āĻ†āĻŽāĻ°āĻž PVS-Studio āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ•āĻ°ā§‡ āĻšāĻ˛ā§‡āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻāĻ–āĻ¨ Chocolatey-āĻ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§, Windows āĻāĻ° āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ°ā§ˇ āĻ†āĻŽāĻ°āĻž āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻāĻŸāĻŋ PVS-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§‡āĻŦā§‡, āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡, āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ā§ˇ āĻŦā§‡āĻļāĻŋāĻĻā§‚āĻ° āĻ¨āĻž āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻ‡ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ° āĻ‰āĻ¤ā§āĻ¸ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŋāĨ¤ Azure DevOps āĻāĻ•āĻŸāĻŋ CI āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡āĨ¤

āĻāĻ–āĻžāĻ¨ā§‡ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•ā§€āĻ•āĻ°āĻŖā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ Azure DevOps-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•ā§€āĻ•āĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻšā§āĻ›āĻŋ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•āĻŋāĻ›ā§ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŦāĻžāĻĻ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻ¨āĻ•āĻ˛ āĻ¨āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻ¨āĻžāĻ¯āĻŧāĻ•āĻ°āĻž:

āĻĒāĻŋāĻ­āĻŋāĻāĻ¸-āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻ•ā§‹āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻŸā§āĻ˛ āĻ¯āĻž C, C++, C# āĻāĻŦāĻ‚ āĻœāĻžāĻ­āĻžāĻ¤ā§‡ āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ 64-āĻŦāĻŋāĻŸ Windows, Linux, āĻāĻŦāĻ‚ macOS āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻšāĻ˛ā§‡ āĻāĻŦāĻ‚ 32-āĻŦāĻŋāĻŸ, 64-āĻŦāĻŋāĻŸ āĻāĻŦāĻ‚ āĻāĻŽāĻŦā§‡āĻĄā§‡āĻĄ ARM āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻ•ā§‹āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻ•ā§‹āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ PVS-Studio āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻ‡ āĻŸā§āĻ˛ā§‡āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡āĨ¤

āĻ…ā§āĻ¯āĻžāĻœā§āĻ°ā§‡ āĻĄāĻŋāĻ­ā§‹āĻĒāĻ¸ — āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ¯āĻž āĻ¯ā§ŒāĻĨāĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻ—ā§āĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§‡ āĻ•āĻ­āĻžāĻ° āĻ•āĻ°ā§‡ā§ˇ āĻāĻ‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽāĻŸāĻŋāĻ¤ā§‡ Azure Pipelines, Azure Boards, Azure Artifacts, Azure Repos, Azure Test Plans āĻāĻ° āĻŽāĻ¤ā§‹ āĻŸā§āĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§‡ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻāĻ° āĻ—ā§āĻŖāĻŽāĻžāĻ¨ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

Chocolatey āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ°āĨ¤ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻšāĻ˛ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ†āĻĒāĻĄā§‡āĻŸ āĻāĻŦāĻ‚ āĻ†āĻ¨āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻŽāĻ—ā§āĻ° āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻœā§€āĻŦāĻ¨āĻšāĻ•ā§āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻžāĨ¤

āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡

āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ¤ā§‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¤āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ˛āĻŋāĻ‚āĻ•. āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ‚āĻ• Chocolatey āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻŦāĻŋāĻ­āĻžāĻ— āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻĻā§‡āĻ–ā§āĻ¨āĨ¤ āĻ†āĻŽāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ āĻ¸ā§‡āĻ–āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻŦāĨ¤

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•ā§‡āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻ†āĻĻā§‡āĻļ:

choco install pvs-studio

PVS-Studio āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ:

choco install pvs-studio --version=7.05.35617.2075

āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•ā§‡āĻ° āĻŽā§‚āĻ˛, āĻŽā§‚āĻ˛ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨, āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ¤āĻžāĻ•āĻž (āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ…ā§āĻ¯āĻžāĻ˛ā§‹āĻ¨, āĻœāĻžāĻ­āĻžāĻ•ā§‹āĻ°, IDEA, MSVS2010, MSVS2012, MSVS2013, MSVS2015, MSVS2017, MSVS2019) -- āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ-āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ā§ˇ

āĻāĻ•āĻŸāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¯āĻž āĻ­āĻŋāĻœā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ 2019 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻŦā§‡:

choco install pvs-studio --package-parameters="'/MSVS2019'"

āĻāĻ–āĻ¨ āĻ†āĻ¸ā§āĻ¨ Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•ā§‡āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ–āĻŋāĨ¤

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

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

āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžā§āĻš āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻŋ, āĻāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ˛āĻžā§āĻš āĻ•āĻ°āĻŋ āĻŽāĻžāĻ˛āĻŋāĻ• āĻļāĻžāĻ–āĻž:

trigger:
- master

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻĒāĻžāĻ¤āĻ¤ āĻāĻŸāĻŋ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° 2019 āĻāĻŦāĻ‚ āĻ­āĻŋāĻœā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ 2019 āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻĢā§āĻŸ-āĻšā§‹āĻ¸ā§āĻŸā§‡āĻĄ āĻāĻœā§‡āĻ¨ā§āĻŸ āĻšāĻŦā§‡:

pool:
  vmImage: 'windows-latest'

āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŽā§‚āĻ˛ āĻ…āĻ‚āĻļā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ• (block āĻ§āĻžāĻĒ) āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻ¤āĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§‡āĻ“, āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻĄāĻ•āĻžāĻ° āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ° āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋāĻ¨āĻŋāĨ¤ Azure DevOps-āĻāĻ° āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ†āĻŽāĻ°āĻž Chocolatey āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡, āĻāĻ° āĻ¯āĻžāĻ¨ āĻ˛āĻŋāĻ‚āĻ•. āĻ•ā§āĻ˛āĻŋāĻ• āĻāĻŸāĻž āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻĒā§‡āĻ¤ā§‡. āĻāĻ°āĻĒāĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡ āĻĨāĻžāĻ•ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ•ā§‡āĻŦāĻ˛ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡ āĻāĻ•āĻ‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§āĻ¨ā§ˇ

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦ āĻāĻŦāĻ‚ āĻŦā§‹āĻ¤āĻžāĻŽā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§āĻ¨.

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ¸āĻĢāĻ˛ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡, āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻ¸āĻ‚āĻ—āĻ āĻ¨ā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¨:

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ†āĻĒāĻ¨āĻŋ āĻāĻ–āĻ¨ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻ¤ā§‡ Chocolatey āĻŸāĻžāĻ¸ā§āĻ•ā§‡āĻ° āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ•āĻžāĻœ āĻāĻ•āĻŸāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ azure-pipelines.yml:

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

Chocolatey-āĻ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĻā§‡āĻ–ā§āĻ¨:

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻĻāĻ˛āĻ—ā§āĻ˛ā§‹āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻžāĻ ā§‡āĨ¤ āĻ­āĻŋāĻ¤āĻ°ā§‡ Nuspec āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡āĻ° āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§āĻ¨ - pvs-studio. āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¨āĻž āĻ•āĻ°ā§‡āĻ¨ āĻ¤āĻŦā§‡ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇāĻŸāĻŋ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻ¯āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤āĨ¤ āĻāĻ° āĻŦā§‹āĻ¤āĻžāĻŽ āĻŸāĻŋāĻĒā§āĻ¨ āĻ¯ā§‹āĻ— āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸ āĻ•āĻ°āĻž āĻŸāĻžāĻ¸ā§āĻ• āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻŦāĨ¤

steps:
- task: ChocolateyCommand@0
  inputs:
    command: 'install'
    installPackageId: 'pvs-studio'

āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻŽā§‚āĻ˛ āĻ…āĻ‚āĻļā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•:

- task: CmdLine@2
  inputs:
    script: 

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

Ņall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" credentials 
–u $(PVSNAME) –n $(PVSKEY)

āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻŦā§āĻ¯āĻžāĻŸ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ:

Ņall build.bat

āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•ā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸āĻš āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻŦā§‡:

Ņall mkdir PVSTestResults

āĻ†āĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

Ņall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" 
–t .srcchocolatey.sln –o .PVSTestResultsChoco.plog 

āĻ†āĻŽāĻ°āĻž PlogSonverter āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ°āĻŋāĻĒā§‹āĻ°ā§āĻŸāĻ•ā§‡ html āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻŋ:

Ņall "C:Program Files (x86)PVS-StudioPlogConverter.exe" 
–t html –o PVSTestResults .PVSTestResultsChoco.plog

āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ°āĻŋāĻĒā§‹āĻ°ā§āĻŸāĻŸāĻŋ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: PVSTestResults
    artifactName: PVSTestResults
    condition: always()

āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- task: ChocolateyCommand@0
  inputs:
    command: 'install'
    installPackageId: 'pvs-studio'

- task: CmdLine@2
  inputs:
    script: |
      call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" 
      credentials –u $(PVSNAME) –n $(PVSKEY)
      call build.bat
      call mkdir PVSTestResults
      call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" 
      –t .srcchocolatey.sln –o .PVSTestResultsChoco.plog
      call "C:Program Files (x86)PVS-StudioPlogConverter.exe" 
      –t html –o .PVSTestResults .PVSTestResultsChoco.plog

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: PVSTestResults
    artifactName: PVSTestResults
    condition: always()

āĻāĻ° āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°āĻž āĻ¯āĻžāĻ• Save->Save->Run āĻŸāĻžāĻ¸ā§āĻ• āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯āĨ¤ āĻŸāĻžāĻ¸ā§āĻ• āĻŸā§āĻ¯āĻžāĻŦā§‡ āĻ—āĻŋāĻ¯āĻŧā§‡ āĻ°āĻŋāĻĒā§‹āĻ°ā§āĻŸāĻŸāĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

Chocolatey āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ C# āĻ•ā§‹āĻĄā§‡āĻ° āĻŽāĻžāĻ¤ā§āĻ° 37615 āĻ˛āĻžāĻ‡āĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ° āĻ•āĻŋāĻ›ā§ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•.

āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛

āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž N1

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3005 'āĻĒā§āĻ°ā§‹āĻ­āĻžāĻ‡āĻĄāĻžāĻ°' āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛āĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ CrytpoHashProviderSpecs.cs 38

public abstract class CrytpoHashProviderSpecsBase : TinySpec
{
  ....
  protected CryptoHashProvider Provider;
  ....
  public override void Context()
  {
    Provider = Provider = new CryptoHashProvider(FileSystem.Object);
  }
}

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

āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž N2

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3093 [CWE-480] '&' āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ‰āĻ­āĻ¯āĻŧ āĻ…āĻĒāĻžāĻ°ā§‡āĻ¨ā§āĻĄā§‡āĻ° āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻāĻ•āĻŸāĻŋ āĻļāĻ°ā§āĻŸ-āĻ¸āĻžāĻ°ā§āĻ•āĻŋāĻŸ '&&' āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ Platform.cs 64

public static PlatformType get_platform()
{
  switch (Environment.OSVersion.Platform)
  {
    case PlatformID.MacOSX:
    {
      ....
    }
    case PlatformID.Unix:
    if(file_system.directory_exists("/Applications")
      & file_system.directory_exists("/System")
      & file_system.directory_exists("/Users")
      & file_system.directory_exists("/Volumes"))
      {
        return PlatformType.Mac;
      }
        else
          return PlatformType.Linux;
    default:
      return PlatformType.Windows;
  }
}

āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ & āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻĨā§‡āĻ•ā§‡ && āĻ¯ā§‡ āĻ¯āĻĻāĻŋ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ° āĻŦāĻžāĻŽ āĻĻāĻŋāĻ•ā§‡ āĻšāĻ¯āĻŧ āĻŽāĻŋāĻĨā§āĻ¯āĻž, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻžāĻ¨ āĻĻāĻŋāĻ•ā§‡ āĻāĻ–āĻ¨āĻ“ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻ¯āĻž āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ•āĻ˛ āĻŦā§‹āĻāĻžāĻ¯āĻŧ system.directory_exists.

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

if ((k < nct) & (s[k] != 0.0))

āĻ¸ā§‚āĻšāĻ• āĻšāĻ˛ā§‡āĻ“ k āĻ­ā§āĻ˛, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ•āĻ°āĻž āĻšāĻŦā§‡ IndexOutOfRangeException.

āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž N3, N4

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3022 [CWE-571] āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ 'shortPrompt' āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻ¤ā§āĻ¯āĨ¤ InteractivePrompt.cs 101
āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3022 [CWE-571] āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ 'shortPrompt' āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻ¤ā§āĻ¯āĨ¤ InteractivePrompt.cs 105

public static string 
prompt_for_confirmation(.... bool shortPrompt = false, ....)
{
  ....
  if (shortPrompt)
  {
    var choicePrompt = choice.is_equal_to(defaultChoice) //1
    ?
    shortPrompt //2
    ?
    "[[{0}]{1}]".format_with(choice.Substring(0, 1).ToUpperInvariant(), //3
    choice.Substring(1,choice.Length - 1))
    :
    "[{0}]".format_with(choice.ToUpperInvariant()) //0
    : 
    shortPrompt //4
    ? 
    "[{0}]{1}".format_with(choice.Substring(0,1).ToUpperInvariant(), //5
    choice.Substring(1,choice.Length - 1)) 
    :
    choice; //0
    ....
  }
  ....
}

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

āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž N5

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3123 [CWE-783] āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ '?:' āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻĒāĻžāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ° āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻĻā§‡āĻ° āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ°ā§‡āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ•āĻŽāĨ¤ Options.cs 1019

private static string GetArgumentName (...., string description)
{
  string[] nameStart;
  if (maxIndex == 1)
  {
    nameStart = new string[]{"{0:", "{"};
  }
  else
  {
    nameStart = new string[]{"{" + index + ":"};
  }
  for (int i = 0; i < nameStart.Length; ++i) 
  {
    int start, j = 0;
    do 
    {
      start = description.IndexOf (nameStart [i], j);
    } 
    while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false);
    ....
    return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1);
  }
}

āĻĄāĻžāĻ¯āĻŧāĻ—āĻ¨āĻŋāĻ¸ā§āĻŸāĻŋāĻ• āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›ā§‡:

while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false)

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

āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž N6

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3022 [CWE-571] āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ 'installedPackageVersions.Count != 1' āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻ¤ā§āĻ¯āĨ¤ NugetService.cs 1405

private void remove_nuget_cache_for_package(....)
{
  if (!config.AllVersions && installedPackageVersions.Count > 1)
  {
    const string allVersionsChoice = "All versions";
    if (installedPackageVersions.Count != 1)
    {
      choices.Add(allVersionsChoice);
    }
    ....
  }
  ....
}

āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻĻā§āĻ­ā§āĻ¤ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻ†āĻ›ā§‡: InstallPackageVersions.Count!= 1āĻ¯āĻž āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻĨāĻžāĻ•āĻŦā§‡ āĻ¸āĻ¤ā§āĻ¯. āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻ•ā§‹āĻĄā§‡ āĻāĻ•āĻŸāĻŋ āĻ¯ā§ŒāĻ•ā§āĻ¤āĻŋāĻ• āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻšā§‡āĻ•āĻŋāĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡āĨ¤

āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž N7

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3001 '||' āĻāĻ° āĻŦāĻžāĻŽ āĻĻāĻŋāĻ•ā§‡ āĻāĻŦāĻ‚ āĻĄāĻžāĻ¨ā§‡ 'commandArguments.contains("-apikey")' āĻ…āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻžāĻŦ-āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°. ArgumentsUtility.cs 42

public static bool arguments_contain_sensitive_information(string
 commandArguments)
{
  return commandArguments.contains("-install-arguments-sensitive")
  || commandArguments.contains("-package-parameters-sensitive")
  || commandArguments.contains("apikey ")
  || commandArguments.contains("config ")
  || commandArguments.contains("push ")
  || commandArguments.contains("-p ")
  || commandArguments.contains("-p=")
  || commandArguments.contains("-password")
  || commandArguments.contains("-cp ")
  || commandArguments.contains("-cp=")
  || commandArguments.contains("-certpassword")
  || commandArguments.contains("-k ")
  || commandArguments.contains("-k=")
  || commandArguments.contains("-key ")
  || commandArguments.contains("-key=")
  || commandArguments.contains("-apikey")
  || commandArguments.contains("-api-key")
  || commandArguments.contains("-apikey")
  || commandArguments.contains("-api-key");
}

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

commandArguments.contains("-apikey=");
commandArguments.contains("-api-key=");

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

PS āĻāĻŦāĻ‚ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻāĻ‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻšā§-āĻ˛āĻžāĻ‡āĻ¨ āĻļāĻ°ā§āĻ¤ā§‡āĻ° āĻļā§‡āĻˇā§‡ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĨāĻžāĻ•ā§‡ :)āĨ¤ āĻĒā§āĻ°āĻ•āĻžāĻļāĻ¨āĻž āĻĻā§‡āĻ–ā§āĻ¨ "āĻļā§‡āĻˇ āĻ˛āĻžāĻ‡āĻ¨ āĻĒā§āĻ°āĻ­āĻžāĻŦ".

āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž N8

āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž: V3095 [CWE-476] 'āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛āĻĄ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ' āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻļā§‚āĻ¨ā§āĻ¯ā§‡āĻ° āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§‡ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ˛āĻžāĻ‡āĻ¨ āĻšā§‡āĻ• āĻ•āĻ°ā§āĻ¨: 910, 917. NugetService.cs 910

public virtual ConcurrentDictionary<string, PackageResult> get_outdated(....)
{
  ....
  var pinnedPackageResult = outdatedPackages.GetOrAdd(
    packageName, 
    new PackageResult(installedPackage, 
                      _fileSystem.combine_paths(
                        ApplicationParameters.PackagesLocation, 
                        installedPackage.Id)));
  ....
  if (   installedPackage != null
      && !string.IsNullOrWhiteSpace(installedPackage.Version.SpecialVersion) 
      && !config.UpgradeCommand.ExcludePrerelease)
  {
    ....
  }
  ....
}

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

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

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

āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻ›āĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻāĻŦāĻ‚ PVS-Studio āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•ā§‡āĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ†āĻĒāĻ¨āĻžāĻ° āĻĻāĻ˛ āĻ¯ā§‡ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ° āĻ—ā§āĻŖāĻŽāĻžāĻ¨ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¯ā§‹āĻ—ā§āĻ¯āĻ¤āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‹āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻ•āĻ°āĻŦā§‡ āĻļā§‚āĻ¨ā§āĻ¯ āĻĻāĻŋāĻ¨ā§‡āĻ° āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž.

āĻĻā§āĻ°āĻˇā§āĻŸāĻŦā§āĻ¯

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

PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĨā§‡āĻ•ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ‡āĻ‚āĻ°ā§‡āĻœāĻŋ āĻ­āĻžāĻˇāĻžāĻ­āĻžāĻˇā§€ āĻĻāĻ°ā§āĻļāĻ•āĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ­āĻžāĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻŦā§‡ āĻ…āĻ¨ā§āĻ—ā§āĻ°āĻš āĻ•āĻ°ā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ˛āĻŋāĻ™ā§āĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨: āĻ­ā§āĻ˛āĻžāĻĻāĻŋāĻ¸ā§āĻ˛āĻžāĻ­ āĻ¸ā§āĻŸā§‹āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ°āĻ­āĨ¤ PVS-Studio āĻāĻ–āĻ¨ āĻšāĻ•ā§‹āĻ˛ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: Azure DevOps-āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻšāĻ•āĻ˛ā§‡āĻŸ āĻšā§‡āĻ• āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡.

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

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