āĻāĻŽāĻ°āĻž PVS-Studio āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻ°ā§ āĻāĻ˛ā§āĻāĻŋāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻāĻāĻ¨ Chocolatey-āĻ āĻāĻĒāĻ˛āĻŦā§āĻ§, Windows āĻāĻ° āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ°ā§ˇ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻāĻŋ PVS-āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§āĻŦā§, āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§, āĻā§āĻ˛āĻžāĻāĻĄ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ¤ā§ā§ˇ āĻŦā§āĻļāĻŋāĻĻā§āĻ° āĻ¨āĻž āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻāĻāĻ āĻāĻā§āĻ˛ā§āĻāĻŋāĻ° āĻāĻ¤ā§āĻ¸ āĻā§āĻĄāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĨ¤ Azure DevOps āĻāĻāĻāĻŋ CI āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
āĻāĻāĻžāĻ¨ā§ āĻā§āĻ˛āĻžāĻāĻĄ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻā§āĻāĻ°āĻŖā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§:
āĻĒāĻŋāĻāĻŋāĻāĻ¸-āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻŽā§āĻā§ āĻ¯āĻžāĻ¯āĻŧ: Azure DevOps āĻĒāĻŋāĻāĻŋāĻāĻ¸-āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻŽā§āĻā§ āĻ¯āĻžāĻ¯āĻŧ: āĻā§āĻ°ā§āĻ¯āĻžāĻāĻŋāĻ¸ āĻ¸āĻŋāĻāĻ āĻĒāĻŋāĻāĻŋāĻāĻ¸-āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻŽā§āĻā§ āĻ¯āĻžāĻ¯āĻŧ: āĻ¸āĻžāĻ°ā§āĻā§āĻ˛āĻ¸āĻŋāĻāĻ āĻĒāĻŋāĻāĻŋāĻāĻ¸-āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻŽā§āĻā§ āĻ¯āĻžāĻ¯āĻŧ: āĻāĻŋāĻāĻ˛ā§āĻ¯āĻžāĻŦ āĻ¸āĻŋāĻāĻ/āĻ¸āĻŋāĻĄāĻŋ
āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ Azure DevOps-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻā§āĻāĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻā§āĻāĻŋ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŋāĻā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻŦāĻžāĻĻ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯āĻžāĻ¤ā§ āĻ¨āĻāĻ˛ āĻ¨āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻ¨āĻžāĻ¯āĻŧāĻāĻ°āĻž:
āĻāĻā§āĻ˛ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋāĻ¤ā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻ¨āĻŋāĻā§āĻ āĻā§āĻāĻžāĻŦā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŦā§āĻ¨ āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻā§āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻĻā§āĻļ:
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 āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻāĻŋ āĻāĻ°āĻ¤ā§, āĻāĻ° āĻ¯āĻžāĻ¨
āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻŦā§āĻ¤āĻžāĻŽā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨.
āĻ¸āĻĢāĻ˛ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ā§āĻ° āĻĒāĻ°ā§, āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨ āĻ¸āĻāĻāĻ āĻ¨ā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¨:
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ¨ āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§ Chocolatey āĻāĻžāĻ¸ā§āĻā§āĻ° āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻžāĻ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ azure-pipelines.yml:
Chocolatey-āĻ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĻā§āĻā§āĻ¨:
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻĻāĻ˛āĻā§āĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻžāĻ ā§āĨ¤ āĻāĻŋāĻ¤āĻ°ā§ 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 āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻāĻžāĻ¸ā§āĻ āĻā§āĻ¯āĻžāĻŦā§ āĻāĻŋāĻ¯āĻŧā§ āĻ°āĻŋāĻĒā§āĻ°ā§āĻāĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤
Chocolatey āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ C# āĻā§āĻĄā§āĻ° āĻŽāĻžāĻ¤ā§āĻ° 37615 āĻ˛āĻžāĻāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ° āĻāĻŋāĻā§ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ.
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛
āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž N1
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
public abstract class CrytpoHashProviderSpecsBase : TinySpec
{
....
protected CryptoHashProvider Provider;
....
public override void Context()
{
Provider = Provider = new CryptoHashProvider(FileSystem.Object);
}
}
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¨āĻŋāĻā§āĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨āĻŽā§āĻ¨ā§āĻ āĻļāĻ¨āĻžāĻā§āĻ¤ āĻāĻ°ā§āĻā§, āĻ¯āĻžāĻ° āĻā§āĻ¨ āĻŽāĻžāĻ¨ā§ āĻ¨ā§āĻāĨ¤ āĻ¸āĻŽā§āĻāĻŦāĻ¤, āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋāĻ° āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻ āĻ¨ā§āĻ¯ āĻā§āĻ¨āĻ āĻāĻāĻāĻŋ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ āĻŋāĻ āĻāĻā§, āĻŦāĻž āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒā§, āĻāĻŦāĻ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨āĻŽā§āĻ¨ā§āĻāĻāĻŋ āĻ¸āĻ°āĻžāĻ¨ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž N2
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
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.
āĻŦāĻŋāĻŦā§āĻāĻŋāĻ¤ āĻāĻŖā§āĻĄā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻāĻāĻžāĻ āĻ¤ā§āĻ°ā§āĻāĻŋāĨ¤ āĻšā§āĻ¯āĻžāĻ, && āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°āĻā§ && āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§ āĻāĻ āĻļāĻ°ā§āĻ¤āĻāĻŋ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻŋāĻ āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻāĻāĻŋ āĻā§āĻ¨āĻ āĻāĻŋāĻā§āĻā§ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, & āĻāĻŦāĻ && āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋ āĻā§āĻ°ā§āĻ¤āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸ā§āĻˇā§āĻāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻāĻ¨ āĻ
āĻāĻŋāĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻ° āĻĄāĻžāĻ¨āĻĻāĻŋāĻā§ āĻā§āĻ˛/āĻ
āĻŦā§āĻ§ āĻŽāĻžāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻžāĻĻā§āĻ° āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšā§,
if ((k < nct) & (s[k] != 0.0))
āĻ¸ā§āĻāĻ āĻšāĻ˛ā§āĻ k āĻā§āĻ˛, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻ¨āĻŋāĻā§āĻˇā§āĻĒ āĻāĻ°āĻž āĻšāĻŦā§ IndexOutOfRangeException.
āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž N3, N4
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
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
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
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
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
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
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
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
āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž:
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 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ°āĻ āĻāĻŽ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻāĻŋ
āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯
āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻāĻā§, āĻāĻŽāĻ°āĻž āĻāĻāĻ˛ā§āĻ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻāĻžāĻā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻĒāĻžāĻ āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻž āĻāĻāĻŋ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻā§āĨ¤ āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻžāĻŽā§āĻ˛āĻ āĻāĻŋāĻā§ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¨āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¤āĻžāĻ°āĻž, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, "api-key" āĻā§ āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¯ā§ āĻŦāĻžāĻāĻāĻŋ āĻāĻŽāĻ°āĻž āĻĒā§āĻ¯āĻŧā§āĻāĻŋ āĻ¤āĻž āĻ¤āĻžāĻ°āĻž āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§āĻā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻāĻ°ā§āĻāĻŋ āĻāĻžāĻˇāĻžāĻāĻžāĻˇā§ āĻĻāĻ°ā§āĻļāĻāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻŦā§ āĻ
āĻ¨ā§āĻā§āĻ°āĻš āĻāĻ°ā§ āĻ
āĻ¨ā§āĻŦāĻžāĻĻ āĻ˛āĻŋāĻā§āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨: āĻā§āĻ˛āĻžāĻĻāĻŋāĻ¸ā§āĻ˛āĻžāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ°āĻāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com