ืขืืืฃ ืืกืงืืจืช ืงืื ืืื ืกืืคืืช ืื ื ืืคืื ืืืืื, ืืคืขืืื ืืชื ืืืฉื ืืื ืืคืฉื ืืช ืืืืื ืฉืื. ืืืืจื ืืืคืืฉ ืงืื, ืื ืืืงืจื ืื ื ืชืงืืชื ืื, ืชืืืื ืืจืืืช ืืช ืืฉืคื ืืงืกื: "ื ืืชืื ืกืืื". ืืื ื ืจืื ืื ืื ืืืื ืื ืืืื ืืงืืื ืืื ืืจืืงืฆืื ืขื ืืคืจืืืงื ืฉืื.
ืืืขืฉื, ืื ืืชื ืืืชื ืืฉืคื ืืืืจื ืืช ืืืฉืื, ืื, ืืคืืื ืืื ืฉืฉืืช ืื, ืืจืฆืช ืืช ืื ืืจื ืื ืชื ืกืืื. ืืขืืืื ืืื ืฉืื ืืืืจ ืืืืจื ื ืืกืคืง, ืื ืื ืงืืืฆื ืืขืืจื, ืฉื ืืืืจืืช ืืืื ืืขืืืช ืคืืื ืฆืืืืืืช ืืงืื. ืืืืืื, ืืขืช ืงืืืคืืืฆืื ืฉื ืงืื C++ ื-Visual Studio, ืืืชืื ืฉืชืจืื ืืช ืืืืจืื ืืืืื:
ืืคืื ืื ืื ื ืจืืืื ืฉืืืฉืชื ื ืืื ืืขืืื ืื ืืื ืืฉืืืืฉ ืืฉืื ืืงืื ืืคืื ืงืฆืื. ืื ืืืฆืืืืช, ืืืขื ืชืืื ืืฉืชืืฉืช ืืื ืชื ืงืื ืกืืื ืคืฉืื. ืขื ืืืช, ืฉืื ืืื ืื ืชืืื ืืงืฆืืขืืื ืืืื Coverity, Klocwork ืื PVS-Studio, ืืืืืจืืช ืฉืืกืคืง ืืืืืจ ืขืฉืืืืช ืืืฆืืืข ืจืง ืขื ืืืืื ืงืื ืฉื ืืขืืืช.
ืื ืืื ื ืืืืข ืืืืืืืช ืืื ื ืืชืื ืกืืื ืืืืฆื ืืืืฉื ืืืชื,
ืืื ืืชื ืฆืจืื ื ืืชืื ืกืืื?
ืืงืฆืจื: ืืืฆื ืืคืืฉืื.
ื ืืชืื ืกืืื ืืืคืฉืจ ืื ืืืฆืื ืืจืื ืืขืืืช ืฉืื ืืช ืืงืื: ืืฉืืืืฉ ืื ื ืืื ืืื ืืืช ืฉืคื ืืขื ืืฉืืืืืช ืืงืืื. ืืืฉื, ืืืงืื
auto x = obj.x;
auto y = obj.y;
auto z = obj.z;
ืืชืืช ืืช ืืงืื ืืื:
auto x = obj.x;
auto y = obj.y;
auto z = obj.x;
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืฉ ืฉืืืืช ืืงืืื ืืฉืืจื ืืืืจืื ื. ืืืืืื, PVS-Studio ืืืฆืื ืืช ืืืืืจื ืืืื:
ืื ืืชื ืจืืฆื ืืืื ืืก ืืช ืืืื ืืฉืืืื ืื, ื ืกื ืืืืื ืืืื ื ืืกืืืจ ืืงืืืคืืืืจ: *
ืืืคื ืฉืืชื ืืืื, ืื ืชืืื ืืคืฉืจ ืืฉืื ืื ืืงืืขื ืงืื ืืืื ืืื, ืืืืื ืื, ืืชื ืืืื ืืฉืืช ืืืืื ืืืฉื ืฉืขื ืืืื, ืืชืืืช ืืื ืืื ืขืืื ืืฆืืจื ืื ืื ืืืืจื.
ืขื ืืืช, ืืจืืจ ืฉืื ืืขืืช. ืื ืื ืืืคืชื ืืชื ืงืื ืื ืืืคืืืืื ืื ืืื ืฉืื ืืื ืขืืื ืืช ืฉื ืืฉืคื? ืื ืืคืืื ืืคืฉืจื ืืช ืื ืืงืื
ืขืืืจ ืืฆืืื ืืื ืืืคืืข ื ืืชืื ืกืืื. ืืื ืขืืืจ ืืืคืชื ืฉืืฆืืืข ืขื ืืขืืืช ืฉืื ืืช ืืงืื ืืืกืืืจ ืืชืืขืื ืืืืข ืืื ืฆืืจื ืืืชืื ืื, ืืื ืื ืืืื ืืืืืื ืืืื ืืชืงื ืืช ืื. ืื ื ืืืืื ืืื ืื ืขืฉืื ืืืืจืืืช: *
ืืชื ืืืื ืืืฆืื ืฉืืืืืช ืืขื ืืื ืืช ืืืชืจ ืฉืื ืชื ืืืื ืืืืืช ืืืืืจืื:
10 ืืฉืืืืืช ืืืืืืืืช ืืคืจืืืงืืื ืฉื C++ ืืฉื ืช 2019 10 ืืฉืืืืืช ืืืืืืืืช ืืคืจืืืงืืื ืฉื C# ืืฉื ืช 2019 10 ืืืืืื ืืืืืืืื ืืคืจืืืงืื Java ืืฉื ืช 2019
ืืขืช ืืืืจ ืฉืงืจืืช ืืช ืืืืืจ ืืื ืืืชื ืืฉืืื ืข ืืืชืจืื ืืช ืฉื ื ืืชืื ืกืืื, ืืืื ืชืจืฆื ืื ืกืืช ืืืชื. ืืื ืืืืคื ืืืชืืื? ืืืฆื ืืฉืื ืืื ืืืฉ ืืคืจืืืงื ืื ืืืื ืฉืื? ืืืื ืืืืืจ ืื ืืช ืืฆืืืช? ืชืฉืืืืช ืืฉืืืืช ืืื ืชืืฆื ืืืื.
ืืขืจื. ื ืืชืื ืกืืื ืืื ื ืืืืืฃ ืื ืืืื ืืืจ ืฉืืืืฉื ืืื ืืืงืืจืืช ืงืื. ืืื ืืฉืืื ืืช ืืชืืืื ืืื, ืขืืืจ ืืืืืื ืืืชืงื ืืจืืฉ ืฉืืืืืช ืืงืืื, ืื ืืืืงืื ืืขืืฆืืืื ืืกืืื ืื. ืื ืืจืื ืืืชืจ ืคืจืืืืงืืืื ืืืชืืงื ืืืืงืืจืืช ืงืื ืขื ืืืืืจืืชืืื ืืืืืจืืช ืงืื, ืืืงืื ืืืคืฉ ืกืืืจืืื ืฉืืืืื ืื
0. ืืืืจืืช ืขื ืืืื
ืืื ืืชืืื ืืืจืกืช ื ืืกืืื. ืืื, ืงืฉื ืืืืืื ืืืื ืืก ืืฉืื ืืชืืืื ืืคืืชืื ืื ืืขืืื ืื ืจืืืช ืืช ืืืื ืื ืืคื ื ืื. ืืื, ืืืืจ ืืจืืฉืื ืฉืขืืื ืืขืฉืืช ืืื ืืืืจืื
ืื ืชืืืื ืืฉืื ืื:
- ืืื ืืืจืืื ืืืื ืืจืืงืฆืื ืขื ืืื ืชื;
- ืืื ืืื ืชื ืชืืื ืืกืืืืช ืืคืืชืื ืฉืื?
- ืืืื ืืขืืืช ืืฉ ืืจืืข ืืคืจืืืงืืื ืฉืื?
ืืืืจ ืฉืืชืงื ืช ืืช ืื ืื ืฉืืชื ืฆืจืื, ืืืืจ ืืจืืฉืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืืื ืืืคืขืื ื ืืชืื ืฉื ืื ืืคืจืืืงื (
ืืขืืืื ืืื ืื ืื ืชืืื ืกืืืืื ืืืจื ืืื ืืืฆืืืื ืืกืคืจ ืขืฆืื ืฉื ืืืืจืืช ืขืืืจ ืคืจืืืงืืื ืขื ืืกืืก ืงืื ืืืื. ืืื ืฆืืจื ืืชืงื ืืช ืืืื, ืืืืืื ืฉืืคืจืืืงื ืฉืื ืืืจ ืขืืื, ืื ืฉืืืืจ ืฉืืขืืืช ืืื ืืื ื ืงืจืืืืืช. ืขื ืืืช, ืืชื
ืืืื, 178 ืืืืจืืช ืืจืื ืืืชืจ ืงืืืช ืืฆืคืืื ืืืฉืจ ืืื ืืืคื...
ืืืจืืืกืืืช ืืื ืื ื ะธ ื ืืื ืืขืชืื ืงืจืืืืช ืืฉ ืืืืจืืช ืืืืืช, ืืื ืงืืืืจืืืช ืืื ืืืืืืช ืืช ืืืืืื ืื ืฉืืฉ ืืื ืคืืืช ืืืืง (ืืืืื ืืช). ืืืืข ื ืืกืฃ ืขื ืจืืืช ืืืืจื ืืืคืฉืจืืืืช ืืขืืืื ืชืืช Windows ื ืืชื ืืืฆืื ืืื: *
ืืืืจ ืฉืืืงืชื ืืืฆืืื ืืช ืืฉืืืืืช ืืืขื ืืื ืืช ืืืืชืจ (ืืชืืงื ื ืืืชื ืืืฆืืื) ืฉืืื
1. ืืืืืืฆืื
ืืืืจ ืืืืจืืช, ืืืืข ืืืื ืืืืืืจ ืชืืกืคืื ืืืืฉืชืื ื-CI. ืื ืืืื ืืืืขืฉืืช ืืคื ื ืฉืืชืื ืชืื ืืชืืืืื ืืืฉืชืืฉ ืื ืชื ืืกืืื. ืืขืืืื ืืื ืฉืืืชืื ืช ืขืฉืื ืืฉืืื ืืืคืฉืจ ื ืืชืื ืื ืื ืืจืฆืืช ืืขืฉืืช ืืืช ืืื. ืืื ืืขืฉืืช ืืืช, ืขืืื ืืืฆืข ืืืืงื ืกืืคืืช ืฉื ืืื ืืื ืฉืงืื ืื ื ืืืง ืื ืืืื ืืืืื ืก ืืขื ืฃ ืืคืืชืื ืืืืื.
ืื ืชืืืื ืืฉืื ืื:
- ืืืื ืืคืฉืจืืืืช ืืืืืืฆืื ืืกืคืง ืืืื;
- ืืื ืืื ืชื ืชืืื ืืืขืจืืช ืืืจืืื ืฉืื?
ืืืืืื ืฉืื ืงืืื ืชืืขืื ืืืฉืื, ืืคืขืืื ืฆืจืื ืืืชืื
ืืขืช ื ืขืืืจ ืืฉืืจืืชื ืืื ืืืจืฆืื ืืชืืฉืืช (CI). ื ืืชื ืืืืืืข ืืื ืื ืื ืชื ืืื ืืขืืืช ืจืฆืื ืืืช. ืืื ืืขืฉืืช ืืืช, ืืชื ืฆืจืื ืืืฆืืจ ืฉืื ื ืคืจื ืืฆื ืจืช, ืฉืืืจื ืืื ืืืืงื ืืืืจ ืืืืงืืช ืืื ืืื ืืืืืืื. ืื ื ืขืฉื ืืืืฆืขืืช ืืื ืขืืจ ืฉืื ืื ืืืกืืฃ. ืืืืืื, PVS-Studio ืืกืคืง ืืช ืืื ืืฉืืจืืช ืืืืื:
PVS-Studio_Cmd.exe (ื ืืชืื ืคืชืจืื ืืช, C#, C++ ืคืจืืืงืืื ื-Windows)CLMonitor.exe (ืืขืงื ืืืจ ืงืืืคืืืฆืื)pvs-studio-analyzer (ื ืืชืื ืฉื ืคืจืืืงืื C++ ื-Linux / macOS)pvs-studio-dotnet (ื ืืชืื ืคืชืจืื ืืช, ืคืจืืืงืื C# ื-Linux / macOS)pvs-studio.jar (ื ืืชืื ืฉื ืคืจืืืงืื Java)PlogConverter (ืืืืจ ืงืืฆื ืืืืืช)
ืืื ืืฉืื ื ืืชืื ื-CI, ืขืืื ืืขืฉืืช ืฉืืืฉื ืืืจืื:
- ืืชืงื ืืช ืื ืชื;
- ืืคืขื ื ืืชืื;
- ืืกืคืง ืชืืฆืืืช.
ืืืืืื, ืืื ืืืชืงืื ืืช PVS-Studio ืขื ืืื ืืงืก (Debian-base), ืขืืื ืืืคืขืื ืืช ืืคืงืืืืช ืืืืืช:
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
ืืืขืจืืืช ืฉืืจืืฆืืช Windows, ืืื ืืจื ืืืชืงืื ืืช ืื ืชื ืืื ืื ืืืืืืืช, ืืื ืืคืฉืจ ืืคืจืืก ืืช ืื ืชื ืืฉืืจืช ืืคืงืืื:
PVS-Studio_setup.exe /verysilent /suppressmsgboxes
/norestart /nocloseapplications
ืืชื ืืืื ืืงืจืื ืขืื ืขื ืคืจืืกืช PVS-Studio ืืืขืจืืืช ืืื ืคืืขื Windows *
ืืืืจ ืืืชืงื ื, ืขืืื ืืืคืขืื ืืช ืื ืืชืื ืืฉืืจืืช. ืขื ืืืช, ืืืืืฅ ืืขืฉืืช ืืืช ืจืง ืืืืจ ืฉืขืืจื ืงืืืคืืืฆืื ืืืืื ืื. ืืกืืื ืืื ืืื ืฉื ืืชืื ืกืืื ืืืงื ืืืจื ืืื ืคื ืฉื ืืื ืืื ืืืงืืืคืืืฆืื.
ืืืืืื ืฉืฉืืืช ืืืฉืงื ืชืืืื ืืคืืืคืืจืื ืืืชืืื ืืช ืืคืจืืืงื, ืืจืื ืืช ืืืคืฉืจืืช ืขืืืจ C++ (Linux) ืืืืืื:
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w
ืืคืงืืื ืืจืืฉืื ื ืชืืฆืข ืืช ืื ืืชืื, ืืืฉื ืืื
ืืขืจื. ืคืืจืื ืืืงืกื ืื ื ืื. ืื ืืืื ืคืฉืื ืืืืืื. ืฉืืื ืื ืืคืืจืื ืืื ืืขื ืืื ืืืชืจ - FullHtml. ืื ืืืคืฉืจ ืื ืื ืืื ืืงืื.
ืชืืื ืืงืจืื ืขืื ืขื ืืืืจืช ื ืืชืื ืขื CI ืืืืืจ "
ืืืงืื, ืืืืจืช ืืช ืื ืชื ืืฉืจืช ื-build. ืืขืช, ืื ืืืฉืื ืืขืื ืงืื ืื ื ืืืง, ืฉืื ืืืืืืช ืืืืฉื, ืืชืืืื ืืืืืช ืืช ืืืขืื, ืืืื ืื ืื ืืืืจื ื ืื, ืฉืื ืืืชืจ ืืขืื ืืืืืง ืืช ืืคืจืืืงื ืื ืืืืจ ืืืืื ืืกื ืืคืื, ืืื ืืคื ืื, ืืฉืื ืืงืฉืช ืืืฉืืื. ื.
ืืืืคื ืืืื, ืืืืจืช ื ืืชืื ืืงืฉืช ืืฉืืื ืืื ื ืฉืื ื ืืืจืื ืืืืฉืงื ืืจืืืื ืฉื ื ืืชืื ืขื CI. ืืืื ืืฆืืจื ืืงืื ืจืฉืืื ืฉื ืงืืฆืื ืฉืืฉืชื ื. ื ืืชื ืืืฉืื ืืืชื ืืืจื ืืื ืขื ืืื ืฉืืืืชืช ืืืืืืื ืืื ืขื ืคืื ืืืืฆืขืืช git:
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
ืืขืช ืขืืื ืืืขืืืจ ืืช ืจืฉืืืช ืืงืืฆืื ืืื ืื ืชื ืืงืื. ืืืืืื, ื-PVS-Studio ืื ืืืืฉื ืืืืฆืขืืช ืืืื -S:
pvs-studio-analyzer analyze -j8
-o PVS-Studio.log
-S .pvs-pr.list
ืชืืื ืืงืื ืืืืข ื ืืกืฃ ืขื ื ืืชืื ืืงืฉืืช ืืฉืืื *
ืขื ืืื ืืืืจืช ื ืืชืื ืฉื ืืงืฉืืช ืืฉืืื, ืืชื ืืืื ืืืกืื commits ืืืืืืืช ืืืืจืืช, ืืืื ืืืฆืืจ ืืืื ืฉืงืื ืื ื ืืืง ืื ืืืื ืืืฆืืช.
ืื ืื ืืืืื ืืื, ืืื ืืืืชื ืจืืฆื ืืจืืืช ืืช ืื ืืืืืจืืช ืืืงืื ืืื. ืื ืจืง ืืื ืชื ืืกืืื, ืืื ืื ืืืืืงืืช ืืืืื ืื ืืื ืชื ืืืื ืื. ืืฉื ื ืฉืืจืืชืื ืืชืืกืคืื ืฉืื ืื ืืื. ื-PVS-Studio, ืืืฉื, ืืฉ
2. ืืื ืืืจืฆืื ืขื ืืืื ืืช ืืคืชืืื
ืขืืฉืื ืืืืข ืืืื ืืืชืงืื ืืืืืืืจ ืืช ืื ืชื ืืฉืืืืฉ ืืืืืืื ืืคืืชืื. ืืฉืื ืื ืืืจ ืืืจืชื ืืช ืจืื ืืจืื ืืขืืืื, ืื ืืคืฉืจ ืืงืจืื ืืื ืืืืง ืืงื ืืืืชืจ.
ืืืคืฉืจืืช ืืคืฉืืื ืืืืชืจ, ืืคืชืืื ืืืืืื ืืืชืงืื ืืช ืืื ืชื ืืืจืืฉ ืืขืฆืื. ืขื ืืืช, ืื ืืืงื ืืจืื ืืื ืืืกืื ืืช ืืขืชื ืืืคืืชืื, ืื ืฉืชืืื ืืืคืื ืืช ืืชืืืื ืืื ืืืืืืืื ืืืืฆืขืืช ืืชืงืื ืืืืืืื ืืืจืืฉืื. ืขืืืจ PVS-Studio ืืฉื ื ืฉืื ืื
ืืืืจ ืืื ืชืฆืืจื ืืืชืงืื ืืช ืืชืืกืคืื ืืืจืืฉืื, ืืืฉื ืขืืืจ
3. ืฉืืืืฉ ืืืืืืื
ืืฉืื ืื, ืื ืืืื ืืืืจ ืืื ืืืืื ืขื ืืจืืื ืืืืืฅ ืืช ืื ืชื ืืืืื ืืฉืืืืฉ ืืืืืืืื. ื ืืชืื ืืื ืฉื ืืคืจืืืงื ืืืื ืืืงื ืืจืื ืืื, ืืื ืืืืื ืชืืืจืืช ืื ืื ื ืืฉื ืื ืงืื ืืืืจื ืื ืืคืจืืืงื ืืืช ืืืช? ืืื ืืืขื ืืืืืฃ ืืืืจืื ืื ืื ืืืื ืฉืืื ืืฉืคืืข ืืื ืขื ืื ืืกืืก ืืงืื. ืืกืคืจ ืืงืืฆืื ืืืฉืชื ืื ืื-ืืื ืืช ืจืง ืืขืชืื ืจืืืงืืช ืขืืื ืขื ืชืจืืกืจ, ืืืื ืืืืื ื ืื ืชื ืืืชื. ืืืฆื ืืื ืืฉ
ืื ืืื ืชื ืืืื ืืขืืืช ืืงืื ืฉืืฉืชื ื ืืืืจืื ื, ืืื ืืืืื ืขื ืื ืืืืคื ืขืฆืืื. ืืืืืื, PVS-Studio ืืกืคืจ ืื ืขื ืื ืืืืฆืขืืช ืืชืจืื:
ืืืืื, ืื ืื ืืกืคืืง ืืืืื ืืืคืชืืื ืืืฉืชืืฉ ืืืื. ืื ืื ื ืฆืจืืืื ืืืืฉืื ืืกืคืจ ืืื ืื ืื ืืืื ืื. ืื ื, ืืืฉื, ืืืืจืื ืขื ืืชืืื ืืืืจื ืขืืืจ PVS-Studio, ืืื ืืชื ืืืื ืืืฆืื ืืืจืืืช ืืืืืช ืืื ืืื ืฉืืชื ืืขืืืฃ:
ืืืฆื ืืืคืขืื ืืช PVS-Studio ื-Windows (C, C++, C#) ืืืฆื ืืืคืขืื PVS-Studio ืขื ืืื ืืงืก ื-macOS (C, C++) ืืืฆื ืืืคืขืื ืืช PVS-Studio Java
ืืืืจืื ืืืื ืืกืคืงืื ืืช ืื ืืืืืข ืืืจืืฉ ืืฉืืืืฉ ืืืืืืื ืืืื ื ืืืงืืื ืืจืื ืืื. ๐
ืขืื ืืฉืื ืืืืืจืืช ืขื ืืืื, ืืืืงื ื ืืจืื ืืืืจืืช ืืืืช ืืืฉืงืืช ืืจืืฉืื ืืช. ืืืจืื ืืฆืขืจ, ืื ืชืืื ืกืืืืื ืืื ื ืืืฉืืืื, ืืืื ืืขืช ืืขืช ืื ื ืืชื ืื ืชืืฆืืืช ืืืืืืืช ืฉืืืืืช. ืืืจื ืืื ืงื ืืืื ืืืชื; ืืืืืื, ืืชืืกืฃ PVS-Studio ืขืืืจ Visual Studio ืืชื ืจืง ืฆืจืื ืืืืืฅ ืขื ืืคืชืืจ ืืื:
ืขื ืืืช, ืืชื ืืืื ืืขืฉืืช ืืืชืจ ืืืฉืจ ืจืง ืืืื ืืืชื. ืืืืืื, ืืชื ืืืื ืืืืื ืขื ืืขืื ืืชืืืื. ืื ื ืืชื ืืชืงื ืืช ื-false positive, ืื ืืขืืืื ืื ืขืชืืืืื ืชืืืื ืืฉืื ืื ืฉืืื ืคืขื ืืฉ ืคืืืช ืืคืืืช ืชืืฆืืืช ืฉืืืืืช ืกืคืฆืืคืืืช ืืืกืืก ืืงืื ืฉืืื.
ืืืืจ ืืื ืืืจืฆืื
ืื ืขืืจื ื ืืช ืื ืืฉืืืื ืฉื ืฉืืืื ื ืืชืื ืกืืื ืืชืืืื ืืคืืชืื. ืืืจืืช ืืืฉืืืืช ืฉื ืืืืจืช ืืืื ืืืื ื-CI, ืืืงืื ืืืฉืื ืืืืชืจ ืืืคืขืื ืืืชื ืืื ืืืืฉื ืฉื ืืืคืชื. ืืืจื ืืื, ืื ืชื ืกืืื ืืื ืื ืฉืืคื ืฉืืืืจ ืืืคืฉืื ืจืืืง ืืื ืฉืืงืื ืื ืืื. ืืืืคื, ืื ืขืืืจ ืฉืืืืจ ืื ืื ืืชื ืขืืืฃ ืืืืืืจ ืื ืื ืฉืืืช ืืฉืื.
ื ืืื, ืืื ืฉืืืืฉ ืงืืืข, ื ืืชืื ืกืืื ืื ืกืืืจ ืฉืืคืฉื ืืฉืืขืืชืืช ืืช ืืคืืชืื. ืืืจื ืืื, ืืืชืจืื ืืขืืงืจื ืฉืื ืขืืืจ ืืคืชื ืืืื ืื ืื ืื ืืืืคืืฉ ืืืจ ืงืืขื ืงืื ืืืจืืืื ืืฉื ืืืื ืืืืืืงืช, ืืื ืืืืืื ืืืงืื ืฉืืื. ืืกืืื ืฉืืืืื ืืขืื ืืืืจ ืฉืืืืช ืืขืจืืืืช ืืืืืงื ืืื ืื ืจืง ืื ื ืขืื, ืืื ืื ืืืื ืืื ืจื. ื ืืชืื ืกืืื, ืืฉืืืืฉ ืงืืืข, ืืกืชืื ืขื ืื ืฉืื ืื ืืฉืืจืืช ืืืืฉื ืฉืื ืืืืืื ืขื ืืงืืืืช ืืฉืืืื ืืืื ืืขืืืื ืขื ืืงืื.
ืืื ืืชื ืื ืืงืืืืืช ืฉืื ืขืืืื ืื ืืืืืื ืื ืืืื ืืืืฉื ืืช ืื ืชื, ืื ืื ื ืืฆืืข ืื ืืืชืืื ืืงืจืื ืืช ืืืืืจ "
ืื ืืชื ืจืืฆื ืืฉืชืฃ ืืช ืืืืืจ ืืื ืขื ืงืื ืืืืจ ืื ืืืืช, ืื ื ืืฉืชืืฉ ืืงืืฉืืจ ืืชืจืืื: ืืงืกืื Zvyagintsev.
ืืงืืจ: www.habr.com