PVS-Studio ืฉืืืฆื ืื ืืืื ืคืื ืคืจืืืขืงืื ืืขืฉืจืืื ืืื C, C++, C#, ืืื Java. ืืขืจ ืื ืืืืืืจืขืจ ืงืขื ืืขื ืืฆื ืืืขืจื ืืืืฃ ืกืืกืืขืืขื Windows, Linux ะธ macOSืืืืขืจ ืึทืจืืืงื ืืืขื ืืืกืงืืืืจื ืื ืึทื ืึทืืื ืคืื ืงืึธื ืืขืฉืจืืื ืืื C ืืื C++ ืืื ืืขืจ ืกืืืื Linux.
ืื ืกืืึทืืืจืื ื
ืืื ืกืืึทืืืจื PVS-Studio ืืื ืืขืจ Linux ืขืก ืืขื ืขื ืื ืขืืืขืืข ืืืขืื ืืึธืก ืฆื ืืึธื, ืืืืื ืืืคึผ ืคืื ืคืึทืจืฉืคึผืจืืืืื ื. ืื ืืึทืงืืืขืืกืืข ืืื ืืืืืขืจืกืืข ืืขืืึธืืข ืืื ืฆื ื ืืฆื ืึท ืจืขืคึผืึธืืืืึธืจื, ืืืฒึทื ืืึธืก ืืขืจืืขืืืขืื ืืืืืึธืืึทืืืฉืข ืืขืจืืืึทื ืืืงืื ืืขื ืคืื ืืขื ืึทื ืึทืืืืืจืขืจ ืืืขื ื ืฒึทืข ืืืขืจืกืืขืก ืืืขืจื ืึทืจืืืกืืขืืขืื. ืื ืฆืืืืืืข ืึธืคึผืฆืืข ืืื ืฆื ื ืืฆื ืึทื ืืื ืกืืึทืืึทืฆืืข ืคึผืขืงื, ืืืึธืก ืงืขื ืืึทืื ืืึธืืืื ืืืขืจื. .
ืื ืงืึธืืึทื ืืขืก ืืืึธืก ืืืจ ืืึทืจืคึฟื ืืืืคึฟื ืคึฟืึทืจ ืื ืกืืึทืืืจืื ื ืืขื ืืขื ืึธืคึผ ืคึฟืื ืืขืจ ืืืกืืจืืืืืฆืืข. Linux, ืืืึธืก ืืืจ ื ืืฆื. ืืืฉื, ืคึฟืึทืจ ืกืืกืืขืืขื ืืึทืืืจื ืืืืฃ Debian, ืืื ืกืืึทืืึทืฆืืข ืคึฟืื ืื ืจืขืคึผืึธืืืืึธืจื ืืขื ืืืืก ืึทืืื:
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 update
sudo apt install pvs-studioืฆื ืื ืกืืึทืืืจื PVS-Studio ืคึฟืื ืื ืื ืกืืึทืืืจืื ื ืคึผืขืงื, ืืืจ ืงืขื ืขื ื ืืฆื ืื gdebi ื ืืฆื:
sudo gdebi pvs-studio-VERSION.debืื ืืึทื ืืึธื ืืืจืื ื ืคึผืจืึธืฆืขืก ืืื ืืืกืงืจืืืื ืืื ืืขืจ ืืขืืึทื ืืื ืื "ยป ืืืงืืืขื ืืืฆืืข. ืืืจื ืงืขื ื ืืืจ ืืืื ืืขืคึฟืื ืขื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืกืืกืืขืืขื ืืืึธืก ืืขื ืขื ื ืืฉื ืืึทืืืจื ืืืืฃ Debian.
ื ืึธื ืืึทื ืืึธื ืืืจืื ื, ืืืจ ืืึทืจืคึฟื ืฆื ืึทืจืืึทื ืืขืจืืืืืขื ืืฉ ืืึทืื. ืคึฟืึทืจ ืืขื, ืื ืืึทืคึฟืขื ืืื ืืขื ืืฆื
pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE]ืืื ื ืึธืืขื ะธ ืฉืืืกื - ืืขืจ ื ืึธืืขื ืืื ืืขืจ ืืืึธืก ืื ืืขืจืืืืืขื ืืฉ ืืื ืจืขืืืกืืจืืจื ืืื ืืขืจ ืืขืจืืืืืขื ืืฉ ืฉืืืกื. ืึธืคึผืืืึธื ืึทื ืคึผืึทืจืึทืืขืืขืจ ืึธืืขืจ ืึทืืึทืื ืืืจ ืฆื ืฉืืขืื ืื ืืจื ืืื ืื ืืขืจืืืืืขื ืืฉ ืืขืงืข ืืืขื ืืืื ืืืฉืขื ืขืจืืืืึทื. ืืืจื ืคืขืืืงืืึทื ืขืก ืืื ืกืืึธืจื ืืื ืื ืืืขืืืืืึทืืขืจ ~/.config/PVS-Studio/.
ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืึท ืคึผืจืึธืฆืขืก ืฉืืืกื ืืืืฃ ืื ืืืึทื "".
ืคึผืจืึธืืขืงื ืืืขืจืึทืคืึทืงืืืฉืึทื
ื ืึธื ืื ืกืืึธืืื ื ืื ืึทื ืึทืืืืขืจ, ืืืจ ืงืขื ืขื ืึธื ืืืืื ืงืึธื ืืจืึธืืืจื ืคึผืจืึทืืืฉืขืงืก. ืขืก ืืขื ืขื ืฆืืืื ืืืืคึผื ืืืขืื ืฆื ืืึธื ืืึธืก:
- ืืึธื ืืืึธืจืื ื ืคืื ืืึทืืืื ื;
- ืืืืคื ืืื ืื ืืืืขื ืคึผืจืึธืฆืขืก ืืืืึทื ืคึฟืื ืื ืืืืขื ืกืืกืืขื.
ืืึธืืืจ ืงืืงื ืืืืฃ ืืขืจ ืขืจืฉืืขืจ ืืขืืึธืืข ืขืจืฉื. ืฆื ืึธื ืืืืื ืืึธื ืืืึธืจืื ื ืืื ืืขืจ Linux, ืืืจ ืืืขื ืืึทืจืคึฟื ืึท ื ืืฆืืึทืจ . ืืขืจ ืึทื ืึทืืืืขืจ ื ืืฆื ืขืก ืฆื ืืึทืืืขื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืืึธืก ืคึผืจืึทืกืขืกืึทื ืืขื ืขื ืคืืืกื ืืืง ืืขืฉืึทืก ืื ืืืืขื ืคืื ืื ืคึผืจืืืขืงื.
ืืขืจ ืงืึทืืขืจ ืืื ืืขืคืืจื ืืืืก ืืื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
pvs-studio-analyzer trace -- makeืืขืจ ืืืืฉืคึผืื ื ืืฆื ืืึทืื ืฆื ืืืืขื, ืึธืืขืจ ืืึทืื ืงืขื ืขื ืืืื ืจืืคึผืืืืกื ืืืจื ืงืืื ืื ืืขืจืข ืืึทืคึฟืขื ืืืจ ื ืืฆื ืฆื ืึธื ืืืืื ืืขื ืืืืขื. ืืึทืคึฟืขืื ืฉืืจื ืคึผืึทืจืึทืืขืืขืจืก ืงืขื ืขื ืืืื ืืืจืืืขืืื ืืขื ืฆื ืขืก ืืื ืื ืืขืืืืื ืืืขื ืืืขื.
ืึทืืึธื ืืขืืืื, ืกืืจืึทืกืข ืืืขื ืืึทืื ืึท ืืขืงืข ืืืึธืก ืืขืจ ืคึผืึทืจืกืขืจ ืืืขื ื ืืฆื ืฆื ืงืึธื ืืจืึธืืืจื ืื ืืงืืจ ืงืึธื. ืืืจ ืงืขื ืขื ืึธื ืืืืื ืื ืึทื ืึทืืืกืืก ืืื ืื ืืึทืคึฟืขื
pvs-studio-analyzer analyze -o /path/to/project.logืืขืจ ืจืขืืืืืึทื ืืืขื ืืืื ืึท ืขื ืงืึธืืืื ืืขืงืข ืืื ืื ืจืขืืืืืึทืื, ืืืึธืก ืืืจ ืงืขื ืขื ืืืึทืื ืฆื ืืืื ืขืจ ืคืื ืื ืฉืืืฆื ืคึฟืึธืจืืึทืืืจืื ืืขื. ืืืจ ืืืขืื ืืืกืงืืืืจื ืืื ืฆื ืึทืจืืขืื ืืื ืจืืคึผืึธืจืฅ ืืื ืืขืจ ืืืืึทืืขืจ ืึธืคึผืืืืืื ื.
ืืื ืึทืืืฉืึทื ืฆื ื ืืฆื ืกืืจืึทืกืข, ืึทื ืึทืืืกืืก ืงืขื ืขื ืืืื ืืืื ืืืืคื ืืืืืจื ืืืืฃ ืึท ืืขืงืข compile_commands.json (JSON ืืึทืืืื ื ืืึทืืึทืืึทืกืข). ืคืืืข ืืืืขื ืกืืกืืขืืขื ืืึธืื ืืืจ ืฆื ืึทืจืืืกืคืืจื ืงืึทืืคึผืืืืขืจ ืื ืืืึธืงืึทืืืึธื ืงืึทืืึทื ืื, ืึธืืขืจ ืืืจ ืงืขื ืขื ื ืืฆื ืื ื ืืฆื . ืืื ืืขื ืคืึทื, ืื ืึทื ืึทืืืกืืก ืงืขื ืขื ืืืื ืกืืึทืจืืขื ืืื ืื ืืึทืคึฟืขื
pvs-studio-analyzer analyze โf /path/to/compile_commands.jsonืขืก ืืึธื ืืืื ืื ืืขืืืืื ืึทื ืื ืึทื ืึทืืืืขืจ ืื ืขืจืงืขื ื ืื ืืขืืืืื ื ืงืึทืืคึผืืืืขืจ ืืื ืื ื ืึธืืขื ืคืื ืืืื ืขืงืกืขืงืืืึทืืืข ืืขืงืข. ืืืื ืืืจ ืืึทืงืืืขื ืื ืืขืืช "ืงืืื ืืึทืืืื ื ืื ืืฅ ืืขืคึฟืื ืขื" ืืืขื ืืฉืขืง, ืคึผืจืึผืืื ืกืคึผืขืฆืืคืืฆืืจื ืื ื ืึธืืขื ืคืื ืืืื ืงืึทืืคึผืืืืขืจ ืืืจื ืืขื ืคึผืึทืจืึทืืขืืขืจ --ืงืึธืืคึผืืืขืจ ืึธืืขืจ โc:
pvs-studio-analyzer analyze -c MyCompilerืืึธืก ืงืขื ืืืื ื ืืืืืง ืืืขื ืงืจืืื-ืงืึธืืคึผืืืืื ื ืืื ื ืืฆื ืงืึธืืคึผืืืขืจืก ืืื ื ืื-ื ืึธืจืืึทื ืขืงืกืขืงืืืึทืืืข ืืขืงืข ื ืขืืขื.
ืืื ืึทืืืฉืึทื ืฆื ืืืืคื ืืื ืืึธื ืืืึธืจ ืืึธืืข, ืืืจ ืงืขื ืขื ืืืกืฉืืืืขื ืื ืึทื ืึทืืืืขืจ ืืื ืืืื ืืืืขื ืกืืกืืขื ืึธืืขืจ IDE. ืืืจ ืงืขื ืขื ืืขืคึฟืื ืขื ืืืืฉืคืืื ืคืื ืคึผืจืึทืืืฉืขืงืก ืืื ืฉืืื ืงืึทื ืคืืืืขืจื ืื ืืึทืืจืืืฉืึทื ืืื ืืื ืื PVS_Studio ืจืืคึผืึทืืึทืืึธืจื:
ืืขืจ ืืขืืึทืืืจืืข ืืื ืกืืจืืงืฆืืขืก ืืืขืื ืืื ืึทืืื ืฆื ืืืจืืคืืจื ืื ืึทื ืึทืืื ืืขื ืขื ืื ืืืฆื ืืื ืื. Linux ืงืืง ืืจืืื .
ืืจืืขืื ืืื ืจืืคึผืึธืจืฅ
ื ืึธื ืงืึธื ืืจืึธืืืจืื ื ืื ืคึผืืึทื, ืื ืึทื ืึทืืืืขืจ ืืืฉืขื ืขืจืืืฅ ืึท ืงืึธืืขื ืืึทืจืืื. ืืื ืกืืจ ืฆื ืืืึทืื ืขืก ืฆื ืืืื ืขืจ ืคืื ืื ืฉืืืฆื ืคึฟืึธืจืืึทืืืจืื ืืขื, ืืืจ ืืึธื ื ืืฆื ืื ื ืืฆื ืคึผืืึธื-ืงืึทื ืืืขืจืืขืจ, ืืืึธืก ืืื ืืื ืกืืึทืืืจื ืฆืืืึทืืขื ืืื PVS-Studio.
ืื ื ืืฆื ืฉืืืฆื ืื ืคืืืืขื ืืข ืคึฟืึธืจืืึทืืืจืื ืืขื:
- xml - ืึท ืืึทืงืืืขื ืคึฟืึธืจืืึทื ืคึฟืึทืจ ื ืึธื ืคึผืจืึทืกืขืกืื ื ืคืื ืึทื ืึทืืืกืืก ืจืขืืืืืึทืื, ืืขืฉืืืฆื ืืืจื ืื ืคึผืืืืื ืคึฟืึทืจ SonarQube;
- csv ืืื ืึท ืืขืงืกื ืคึฟืึธืจืืึทื ืืืืืื ื ืฆื ืคืึธืจืฉืืขืื ืืึทืืืืึทืจ ืืึทืื;
- errorfile - ืืงืง ืืื ืงืืึทื ื ืจืขืืืืืึทื ืคึฟืึธืจืืึทื;
- ืืึทืกืงืืืกื - ืืขืืช ืคึฟืึธืจืืึทื ืืืึธืก ืงืขื ืขื ืืืื ืืขืขืคื ื ืืื QtCreator;
- HTML - HTML ืืึทืจืืื ืืื ืึท ืงืืจืฅ ืืึทืฉืจืืึทืืื ื ืคืื ืื ืึทื ืึทืืืกืืก ืจืขืืืืืึทืื;
- fullhtml - HTML ืืึทืจืืื ืืื ืึทื ืึทืืืกืืก ืจืขืืืืืึทืื ืืืืกืืขืฉืืขืื ืืืจื ืคืึทืจืฉืืืขื ืข ืคึผืึทืจืึทืืขืืขืจืก ืืื ืืงืืจ ืงืึธื ื ืึทืืืืืึทืฆืืข.
ืฆื ืืขื ืืขื ืืึทืจืืื, ืื Fullhtml ืคึฟืึธืจืืึทื ืืื ืืขืจืกื ืืึทืงืืืขื, ืืืืึทื ืขืก ืึทืืึทืื ืืืจ ืฆื ืฉืคึผืจืื ืืขื ืฆื ืื ืืงืืจ ืงืึธื ืฉืืจื ืืื ืืืึธืก ืื ืืืืจืขื ืื ื ืืื ืคืืจืืขืงืืืขื. ืื ืคืืืืขื ืืข ืืึทืคึฟืขื ืึทืืึทืื ืืืจ ืฆื ืืืึทืื ืื ืึทื ืึทืืืืขืจ ืืึทืจืืื ืฆื ืืขื ืคึฟืึธืจืืึทื:
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dirื ืึธื ืขืงืกืึทืงืืืืื ื ืื ืืึทืคึฟืขื, ืึท ืืืขืืืืืึทืืขืจ ืืืขื ืืืื ืืืฉืืคื /path/report_dir, ืืืึธืก ืืืขื ืึทื ืืืึทืืื ืื ืืึทืจืืื ืืขืงืขืก.
ืืึทืฆืึธืื ืืคืืขืจืงืืึทืืงืืึทื ืฆื ืื ืฉืืืกื -a. ืขืก ืึทืืึทืื ืืืจ ืฆื ืกืคึผืขืฆืืคืืฆืืจื ืืืึธืก ืืืึธืจื ืื ืื ืืึธื ืืืื ืึทืจืืึทื ืืขืจืขืื ื ืืื ืืขื ืืึทืจืืื. ืืึธืก ืืื ืืึทืงืืืขื ืืืื ืืืจ ืืึทืจืคึฟื ืฆื ืคืืืืขืจ ืื ืจืขืืืืืึทื ืคืื ืื ืึทื ืึทืืืืขืจ. ืื ืืืืื ืืึทืคึฟืขื ืืืขื ืืืฉืขื ืขืจืืื ืึท ืืึทืจืืื ืืืึธืก ืืืขื ืึทื ืืืึทืืื ืืืืื ืืืึธืจื ืื ืื ืคืื ืื ืึทืืืขืืืื ืข ืึทื ืึทืืืกืืก ืืจืืคึผืข ืคืื โโืืขืจ ืขืจืฉืืขืจ ืืื ืจืืข ืฆืืืจืื ืืขืืืขืืก (ืืืื ะธ ืืืื).
ืืืจืืื ืืืืฉืคืื:

ืืจืืงื ืืืืฃ ืึท ืฆืขื ืึธืจื ืึทืจืืืงืืขื, ืืืจ ืงืขื ืขื ืฉืคึผืจืื ืืขื ืฆื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืฉืืจื ืคืื ืงืึธื:

ืืจืืงื ืืืืฃ ืื ืืืึทืื ืึธืกืืืง ื ืืืขืจ ืืื ืื ืืืึทื ืงืึธืืขืงืก ืืืขื ืขืคืขื ืขื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืืืกืงืจืืืืื ื ืืขื ืืืึทืื ืึธืกืืืง.
ืึทื ืึทืืืืขืจ ืกืึทืคึผืจืขืฉืึทื
ืืืขื ืงืึธื ืืจืึธืืืจืื ื ืื ืงืึธื ืืื ืึท ืกืืึทืืืง ืึทื ืึทืืืืขืจ, ืคืึทืืฉ ืคึผืึทืืึทืืืืื ืึธืืขืจ ืคืฉืื ืึทื ืืืึธื ืืื ืึทืจืืืงืืขื (ืจืึทืฉ) ืืขื ืขื ืืขืืืขื. PVS-Studio ืืื ืืขืงืึทื ืืืึทืื ืคึฟืึทืจ ืกืึทืคึผืจืขืกืื ื ืึทืืึท ืืืึธืจื ืื ืื. ืคึฟืึทืจ ืืืื ืกืึทืคึผืจืขืฉืึทื ืคืื ืึทืืึทืจืืก, ืืืจ ืงืขื ืขื ืฆืืืืืื ืืืื ืขืจ ืคืื ืื ืืขืืืึธืืก ืืืกืงืจืืืื ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืึธืคึผืืืืืื ื "".
ืืืื, ืืืขื ืึทื ืึทืืืืืื ื ืึทืื ืงืึธื, ืขืก ืงืขื ืืืื ื ืืืืืง ืฆื ืืึทืกืืืืื ืคืึทืจืฉืืืงื ืึทืืข ืึทืจืืืงืืขื. ืืื ืึท ืืขืจืฉื, ืืึธืก ืืื ื ืืืืืง ืฆื ืงืึธื ืืจืึธืืืจื ืืืืื ืื ืงืึธื ืืืึธืก ืืื ืืืกืืฃ ืฆื ืื ืืืืืกืืื ื ืงืึธื. ืฆื ืืึธื ืืึธืก, ื ืืฆื ืื ืคึผืึทืจืึทืืขืืขืจ ืคืึทืจืฉืืืงื ืืืืืืึทืืื pvs-studio-analyzer.
ืืืจ ืงืขื ืขื ืคืึทืจืฉืืืงื ืึทืจืืืงืืขื ืืื ืึท ืืึทืจืืื ืืื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
pvs-studio-analyzer suppress /path/to/report.logืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืกืึทืคึผืจืขืกื ืึทืจืืืงืืขื ืืื ืกืืึธืจื ืืื ืึท ืืขืงืข suppress_base.json, ืืืึธืก ืืืื ืืขืื ืื ืคึผืจืืืขืงื. ืึทืืึท ืึทืจืืืงืืขื ืืขื ืขื ืืงืกืงืืืืื ืคืื ืื ืืึทืจืืื ืืขืฉืึทืก ืกืึทืืกืึทืงืืืึทื ื ืืฉืขืงืก.
ืืขื ืืขืงืึทื ืืืึทื ืืื ืืืกืงืจืืืื ืืื ืืขืจ ืืขืืึทื ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื. .
ืกืึธืฃ
ืืึธืก ืืื ืืขืืืขื ืึท ืงืืจืฆืข ืืงืืื ืฆื ื ืืฆื ืืขื PVS-Studio ืึทื ืึทืืืืืจืขืจ ืืื ืืขืจ Linuxืืื ืืืฃ ืื ืืืก ืืื ืืขืืืขื ื ืืฆืืขื ืืื ืืื ืืขืขื ืืคืขืจื ืขืืืขืืข ืคืื โโืืืืขืจืข ืืขืจืกื ืืขืฉืืขืืืข ืคืจืืืขืก. ืืืจ ืงืขื ื ืืืืขื ืขื ืืขืจ ืืืขืื ืืขื ืืขืืข ืืื ืื ืืืงืืืขื ืืืฆืืข. .
ืืืื ืืืจ ืืืืื ืืืืื ืืขื ืึทืจืืืงื ืืื ืึทื ืขื ืืืืฉ-ืืขืจืขืื ืืืืขื, ืืืืข ื ืืฆื ืื ืืืืขืจืืขืฆืื ื ืืื ืง: ืืืจื ืืื ืึทืขืื. .
ืืงืืจ: www.habr.com
