{"id":91065,"date":"2020-08-08T01:42:18","date_gmt":"2020-08-07T23:42:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii"},"modified":"2020-08-08T01:42:18","modified_gmt":"2020-08-07T23:42:18","slug":"staticheskij-analiz-ot-znakomstva-do-integraczii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","title":{"rendered":"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>L\u00f5puks, kui oled v\u00e4sinud l\u00f5putust koodi \u00fclevaatusest v\u00f5i t\u00f5rkeotsingust, m\u00f5tled sa vahel, kuidas oma elu lihtsamaks teha. Natukene otsides v\u00f5i juhuslikult kokku puutudes v\u00f5id leida maagilise fraasi: \"Statiline anal\u00fc\u00fcs\". Vaatame, mis see on ja kuidas see v\u00f5ib teie projektidega suhelda.<\/p>\n<p><img decoding=\"async\" alt=\"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni\" src=\"\/wp-content\/uploads\/2020\/08\/7811b22510bdda6f3f774b8335cbeabe.png\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nTegelikult, kui kirjutate m\u00f5nes kaasaegses keeles, siis, isegi sellest teadmata, olete oma koodi l\u00e4bi staatilise anal\u00fcsaatori lasknud. Asi on selles, et iga kaasaegne kompilaator pakub ehk vaid v\u00e4ikest, kuid siiski hoiatuste kogumit potentsiaalsete probleemide kohta koodis. N\u00e4iteks Visual Studios C++ koodi kompileerides v\u00f5ite n\u00e4ha j\u00e4rgmist:<\/p>\n<p><img decoding=\"async\" alt=\"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni\" src=\"\/wp-content\/uploads\/2020\/08\/a267e4e8a57c1a32e508e5e1983c5ff0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSelles v\u00e4ljundis n\u00e4eme, et muutuja <i>var<\/i> ei olnud kuskil funktsioonis kasutatud. Nii et tegelikult olete peaaegu alati kasutanud lihtsat statilist koodi anal\u00fcsaatorit. Kuid erinevalt professionaalsetest anal\u00fcsaatoritest, nagu Coverity, Klocwork v\u00f5i PVS-Studio, saavad kompilaatori antud hoiatused n\u00e4idata vaid v\u00e4ikest hulka probleeme.<\/p>\n<p>Kui te ei tea t\u00e4pselt, mis staatiline anal\u00fc\u00fcs on ja kuidas seda rakendada, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0046\/\">lugeda seda artiklit<\/a><\/noindex>, et paremini tutvuda selle meetodiga. <\/p>\n<h2>Miks on staatiline anal\u00fc\u00fcs vajalik?<\/h2>\n<p>\nL\u00fchidalt: kiirus ja lihtsustamine. <\/p>\n<p>Staatiline anal\u00fc\u00fcs aitab leida mitmesuguseid probleeme koodis: alates vale keele konstruktsioonide kasutamisest kuni tr\u00fckivigadeni. N\u00e4iteks, selle asemel, et <\/p>\n<pre><code class=\"cpp\">auto x = obj.x;\nauto y = obj.y;\nauto z = obj.z;<\/code><\/pre>\n<p>\nolete kirjutanud j\u00e4rgmise koodi:<\/p>\n<pre><code class=\"cpp\">auto x = obj.x;\nauto y = obj.y;\nauto z = obj.x;<\/code><\/pre>\n<p>\nNagu n\u00e4ete, on viimasel real tr\u00fckiviga. N\u00e4iteks annab PVS-Studio j\u00e4rgmise hoiatuse:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v537\/\">V537<\/a><\/noindex> Kaaluge 'y' objekti kasutamise \u00f5igsuse \u00fclevaatamist.<\/p>\n<p>Kui soovite seda viga k\u00e4tega uurida, proovige valmis n\u00e4idet Compiler Exploreris: *<noindex><a rel=\"nofollow\" href=\"https:\/\/godbolt.org\/z\/cd4WK7\">kliki<\/a><\/noindex>*.<\/p>\n<p>Ja nagu n\u00e4ete, ei pruugi sellistele koodi osadele alati t\u00e4helepanu p\u00f6\u00f6rata, mist\u00f5ttu v\u00f5ib silumisega minna aega, m\u00f5eldes, miks k\u00f5ik t\u00f6\u00f6tab nii kummaliselt. <\/p>\n<p>Kuid see on selge viga. Ent kui arendaja on kirjutanud alamaktsentseeritud koodi, sest unustas m\u00f5ne keele n\u00fcansi? V\u00f5i on ta koodis isegi lubanud <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0066\/\">m\u00e4\u00e4ratlemata k\u00e4itumise<\/a><\/noindex>? \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0431\u044b\u0434\u0435\u043d\u043d\u044b \u0438 \u043b\u044c\u0432\u0438\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438, \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043b\u0438 undefined behavior.<\/p>\n<p>Just for these situations, static analysis has emerged. It is a tool for developers that points out various issues in the code and explains in the documentation why certain things should not be done, what consequences may arise, and how to fix them. Here is an example of how this might look: *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v702\/\">kliki<\/a><\/noindex>*.<\/p>\n<p>You can find more interesting errors that the analyzer may discover in the articles:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0700\/\">Top 10 mistakes in C++ projects of 2019<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0698\/\">Top 10 mistakes in C# projects of 2019<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0699\/\">Top 10 mistakes in Java projects of 2019<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nNow, having read this material and being convinced of the benefits of static analysis, you might want to try it out in practice. But where to start? How to integrate a new tool into the current project? And how to introduce it to the team? You will find answers to these questions below.<\/p>\n<p><b>M\u00e4rkus.<\/b> Static analysis does not replace or cancel out the useful practice of code reviews. It complements this process by helping to spot and correct typos, inaccuracies, and dangerous constructs in advance. It is much more productive to focus on algorithms and code clarity during code reviews than on spotting misplaced brackets or <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0509\/\">reading boring comparison functions<\/a><\/noindex>.<\/p>\n<h2>0. Getting to Know the Tool<\/h2>\n<p>\nEverything begins with a trial version. Indeed, it is difficult to decide to implement anything into the development process if you have never seen the tool in action before. Therefore, the first thing to do is to download <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/?promo=mscas\">the trial version<\/a><\/noindex>.<\/p>\n<p><b>What you will learn at this stage:<\/b><\/p>\n<ul>\n<li>What ways there are to interact with the analyzer;<\/li>\n<li>Whether the analyzer is compatible with your development environment;<\/li>\n<li>What problems currently exist in your projects.<\/li>\n<\/ul>\n<p>\nAfter you have installed everything you need, the first thing to do is to run an analysis of the entire project (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0635\/\">Windows<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">Linux<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">macOS<\/a><\/noindex>). In the case of PVS-Studio in Visual Studio, you will see a picture like this (clickable):<\/p>\n<p><img decoding=\"async\" alt=\"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni\" src=\"\/wp-content\/uploads\/2020\/08\/865b2dfa10661e4999238cdccf8860dc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nThe thing is, usually, projects with a large codebase generate a huge number of warnings from static analyzers. There is no need to fix them all, as your project is already functioning, which means these problems are not critical. However, you <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0633\/\">can take a look at the most interesting warnings.<\/a><\/noindex> ja ja vajadusel neid parandada. Selleks tuleb v\u00e4lja filtreerida ja j\u00e4tta ainult k\u00f5ige usaldusv\u00e4\u00e4rsemad teated. PVS-Studio pluginas Visual Studio jaoks toimub see vigade taseme ja kategooriate filtreerimise abil. K\u00f5ige t\u00e4psema v\u00e4ljundi saamiseks hoidke alles ainult <i>High<\/i> ja <i>\u00dcldine<\/i> (samuti klikkitav):<\/p>\n<p><img decoding=\"async\" alt=\"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni\" src=\"\/wp-content\/uploads\/2020\/08\/400b90713f67b531e4ed513ea9d340a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nT\u00f5epoolest, 178 hoiatuse vaatamine on oluliselt lihtsam kui mitu tuhat\u2026<\/p>\n<p>Vahekaartidel <i>Medium<\/i> ja <i>Madal<\/i> tuleb sageli head hoiatused, kuid nendesse kategooriatesse on kantud need diagnostikad, millel on madalam t\u00e4psus (usaldusv\u00e4\u00e4rsus). Hoiatuste tasemete ja Windowsi all t\u00f6\u00f6tamise v\u00f5imaluste kohta saate rohkem lugeda siit: *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0007\">kliki<\/a><\/noindex>*.<\/p>\n<p>P\u00e4rast k\u00f5ige huvitavamate vigade edukat vaatamist (ja nende edukat parandamist) on v\u00e4\u00e4rt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0032\/\">j\u00e4tkata \u00fclej\u00e4\u00e4nud hoiatuste ignoreerimist<\/a><\/noindex>. See on vajalik selleks, et uued hoiatused ei kaoks vanade seas. Lisaks on staatiline anal\u00fcsaator programmeerija abiline, mitte vigade nimekiri. \ud83d\ude42<\/p>\n<h2>1. Automatiseerimine<\/h2>\n<p>\nP\u00e4rast tutvumist tuleb aeg seadistada pluginaid ja integreerida need CI-sse. See tuleb teha enne, kui programmeerijad hakkavad staatilist anal\u00fc\u00fcsi kasutama. Asi on selles, et programmeerija v\u00f5ib unustada anal\u00fc\u00fcsi lubada v\u00f5i isegi mitte soovida. Sellega tuleb teha l\u00f5plik kontroll, et kontrollimata kood ei saaks sattuda \u00fchisesse arendusharu.<\/p>\n<p><b>Mida te saate selle etapi jooksul teada:<\/b><\/p>\n<ul>\n<li>Milliseid automatiseerimise v\u00f5imalusi t\u00f6\u00f6riist pakub;<\/li>\n<li>Kas anal\u00fcsaator on teie koostamiss\u00fcsteemiga \u00fchilduv.<\/li>\n<\/ul>\n<p>\nKuna ideaalne dokumentatsioon ei eksisteeri, tuleb m\u00f5nikord kirjutada <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/about-feedback\/\">toetuse<\/a><\/noindex>. See on normaalne ja me oleme valmis teid aitama. \ud83d\ude42<\/p>\n<p>Ja n\u00fc\u00fcd asume pideva integreerimise (CI) teenuste juurde. Iga anal\u00fcsaatorit on v\u00f5imalik nende seas rakendada ilma t\u00f5siste probleemideta. Selleks on vajalik luua pipeline\u2019is eraldi etapp, mis tavaliselt asub p\u00e4rast ehitamist ja \u00fchikteste. See toimub erinevate k\u00e4surea utiliitide abil. N\u00e4iteks pakub PVS-Studio j\u00e4rgmisi utiliite:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0035\">PVS-Studio_Cmd.exe<\/a><\/noindex> (lahenduste anal\u00fc\u00fcs, C#, C++ projektid Windowsis)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0031\/\">CLMonitor.exe<\/a><\/noindex> (kompileerimise j\u00e4lgimine)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">pvs-studio-analyzer<\/a><\/noindex> (C++ projektide anal\u00fc\u00fcs Linuxis \/ macOS-is)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0035\/\">pvs-studio-dotnet<\/a><\/noindex> (lahenduste anal\u00fc\u00fcs, C# projektid Linuxis \/ macOS-is)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0044\/\">pvs-studio.jar<\/a><\/noindex> (Java projektide anal\u00fc\u00fcs)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0038\/\">PlogConverter<\/a><\/noindex> (aruande failide konverter)<\/li>\n<\/ul>\n<p>\nCI-sse anal\u00fc\u00fcsi integreerimiseks tuleb teha kolm asja:<\/p>\n<ul>\n<li>Installige anal\u00fcsaator;<\/li>\n<li>K\u00e4itage anal\u00fc\u00fcsi;<\/li>\n<li>Tulemuste edastamine.<\/li>\n<\/ul>\n<p>\nN\u00e4iteks PVS-Studio paigaldamiseks Linuxis (Debian-p\u00f5hine) tuleb t\u00e4ita j\u00e4rgmised k\u00e4sud:<\/p>\n<pre><code class=\"bash\">wget -q -O - https:\/\/files.viva64.com\/etc\/pubkey.txt \n    | sudo apt-key add -\nsudo wget -O \/etc\/apt\/sources.list.d\/viva64.list \n  https:\/\/files.viva64.com\/etc\/viva64.list\n  \nsudo apt-get update -qq\nsudo apt-get install -qq pvs-studio<\/code><\/pre>\n<p>\nWindowsi s\u00fcsteemides puudub v\u00f5imalus anal\u00fcsaatori paigaldamiseks paketihaldurist, kuid anal\u00fcsaatorit saab kasutada k\u00e4surealt:<\/p>\n<pre><code class=\"powershell\">PVS-Studio_setup.exe \/verysilent \/suppressmsgboxes \n\/norestart \/nocloseapplications<\/code><\/pre>\n<p>\nPVS-Studio paigaldamise kohta Windowsi s\u00fcsteemides saab rohkem lugeda *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0025\/\">siit<\/a><\/noindex>*.<\/p>\n<p>P\u00e4rast paigaldamist tuleb anal\u00fc\u00fcs otse k\u00e4ivitada. Kuid seda soovitatakse teha alles p\u00e4rast kompileerimist ja teste. See on tingitud sellest, et staatilise anal\u00fc\u00fcsi l\u00e4biviimiseks vajalik aeg on tavaliselt kaks korda pikem kui kompileerimisel.<\/p>\n<p>Kuna k\u00e4ivitamise meetod s\u00f5ltub platvormist ja projekti erip\u00e4radest, n\u00e4itan ma n\u00e4itena C++ (Linux) varianti:<\/p>\n<pre><code class=\"bash\">pvs-studio-analyzer analyze -j8 \n                            -o PVS-Studio.log\nplog-converter -t errorfile PVS-Studio.log --cerr -w<\/code><\/pre>\n<p>\nEsimene k\u00e4sk k\u00e4ivitab anal\u00fc\u00fcsi ja teine <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0038\/\">konverteerib<\/a><\/noindex>aruande tekstiformaadisse, kuvab selle ekraanile ja tagastab mitte 0 v\u00e4ljakutse koodi, kui m\u00e4rgid on olemas. Seda mehhanismi on mugav kasutada kogumise blokeerimiseks, kui veateateid esineb. Kuid alati v\u00f5ite eemaldada lipu <i>-w<\/i> ja mitte blokeerida kogumist, mis sisaldab hoiatavaid s\u00f5numeid.<\/p>\n<p><b>M\u00e4rkus.<\/b> Tekstiformaat ei ole mugav. See on esitatud lihtsalt n\u00e4itena. Pange t\u00e4hele huvitavamat aruande vormingut \u2014 FullHtml. See v\u00f5imaldab koodi kaudu navigeerida.<\/p>\n<p>Rohkem teavet anal\u00fc\u00fcsi seadistamise kohta CI-s leiate artiklist \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0005\">PVS-Studio ja Continuous Integration<\/a><\/noindex>\" (Windows) v\u00f5i \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0661\/\">Kuidas seadistada PVS-Studio Travis CI-s<\/a><\/noindex>\" (Linux).<\/p>\n<p>Nii et olete seadistanud anal\u00fcsaatori t\u00f6\u00f6 kogumise serveris. N\u00fc\u00fcd, kui keegi on \u00fcles laadinud kontrollimata koodi, t\u00f5useb kontrolli etapp ja saate probleemi avastada, kuid see pole eriti mugav, kuna efektiivsem on kontrollida projekti mitte p\u00e4rast harude sulandumist, vaid enne seda, pull request'i etapis.<\/p>\n<p>\u00dcldiselt ei erine pull request'i anal\u00fc\u00fcsi seadistamine oluliselt tavalise anal\u00fc\u00fcsi k\u00e4itamisest CI-s. Ainus erinevus on vajadus saada muudetud failide nimekiri. Tavaliselt saab neid hankida, k\u00fcsides harude vahelise erinevuse kohta gitiga:<\/p>\n<pre><code class=\"bash\">git diff --name-only HEAD origin\/$MERGE_BASE &gt; .pvs-pr.list<\/code><\/pre>\n<p>\nN\u00fc\u00fcd tuleb see failide loetelu edastada anal\u00fcsaatorile. N\u00e4iteks PVS-Studios on see rakendatud lipuga <i>-S<\/i>:<\/p>\n<pre><code class=\"bash\">pvs-studio-analyzer analyze -j8 \n                            -o PVS-Studio.log \n                            -S .pvs-pr.list<\/code><\/pre>\n<p>\nRohkem teavet pull request'ide anal\u00fc\u00fcsi kohta leiate *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0679\/\">siit<\/a><\/noindex>*. Isegi kui teie CI ei ole artiklis mainitud teenuste nimekirjas, v\u00f5ib teile olla kasu \u00fcldosast, mis k\u00e4sitleb selle t\u00fc\u00fcpi anal\u00fc\u00fcsi teooriat.<\/p>\n<p>Seades pull request'ide anal\u00fc\u00fcsi, suudate blokeerida hoiatustega commit'id, luues seel\u00e4bi piiri, mille \u00fcletamine kontrollimata koodile pole v\u00f5imalik.<\/p>\n<p>See on kindlasti hea, kuid oleks soovitav n\u00e4ha k\u00f5iki hoiatusi \u00fches kohas. Mitte ainult staatilisest anal\u00fcsaatorist, vaid ka \u00fcksustestide v\u00f5i d\u00fcnaamilise anal\u00fcsaatori poolt. Selle jaoks on erinevad teenused ja pistikprogrammid. N\u00e4iteks PVS-Studio'l on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0037\/\">pistikprogramm SonarQube'i integreerimiseks<\/a><\/noindex>.<\/p>\n<h2>2. Arendajate masinatesse integreerimine<\/h2>\n<p>\nN\u00fc\u00fcd on aeg anal\u00fcsaatori paigaldamiseks ja seadistamiseks igap\u00e4evaseks kasutamiseks arendamisel. Sellest hetkest olete tutvunud enamikuga t\u00f6\u00f6viise, seega v\u00f5ib seda pidada k\u00f5ige lihtsamaks osaks.<\/p>\n<p>Lihtsama variandina v\u00f5ivad arendajad ise vajaliku anal\u00fcsaatori paigaldada. Kuid see v\u00f5taks palju aega ja segaks neid arenduselt, seet\u00f5ttu v\u00f5ite selle protsessi automatiseerida, kasutades installijat ja vajalikke lippe. PVS-Studio jaoks on erinevad <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0025\/\">lipud automatiseeritud paigaldamiseks<\/a><\/noindex>. Siiski on alati paketihaldurid, n\u00e4iteks Chocolatey (Windows), Homebrew (macOS) v\u00f5i k\u00fcmneid variante Linuxile.<\/p>\n<p>Seej\u00e4rel tuleb paigaldada vajalikud pistikprogrammid, n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0635\/\">Visual Studio<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/plugins.jetbrains.com\/plugin\/12263-pvs-studio-for-idea-and-android-studio\/\">IDEA<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0052\/\">Rider<\/a><\/noindex> jne.<\/p>\n<h2>3. Igap\u00e4evane kasutamine<\/h2>\n<p>\nSelles etapis on aeg \u00f6elda paar s\u00f5na anal\u00fcsaatori t\u00f6\u00f6 kiirendamise viiside kohta igap\u00e4evasel kasutamisel. Kogu projekti t\u00e4ielik anal\u00fc\u00fcs v\u00f5tab v\u00e4ga palju aega, kuid kas me muudame sageli koodi korraga kogu projektis? Harva leidub niiv\u00f5rd ulatuslikku refaktoreerimist, mis h\u00f5lmab korraga kogu koodibaasi. Muudetud failide hulk harva \u00fcletab k\u00fcmmet, seega on m\u00f5tet neid anal\u00fc\u00fcsida. Sellises olukorras on olemas <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0024\/\">inkrementaalse anal\u00fc\u00fcsi re\u017eiim<\/a><\/noindex>. \u00c4rge kartke, see ei ole veel \u00fcks t\u00f6\u00f6riist. See on spetsiaalne re\u017eiim, mis v\u00f5imaldab anal\u00fc\u00fcsida ainult muudetud faile ja nende s\u00f5ltuvusi, ning see toimub automaatselt p\u00e4rast kompileerimist, kui t\u00f6\u00f6tate IDE-s, kus on installitud pistikprogramm. <\/p>\n<p>Kui anal\u00fcsaator avastab hiljuti muudetud koodis probleeme, annab ta sellest ise teada. N\u00e4iteks PVS-Studio teavitab teid sellest teavitusega:<\/p>\n<p><img decoding=\"async\" alt=\"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni\" src=\"\/wp-content\/uploads\/2020\/08\/20456a6652f0bd4f62d9aea5f1dda5cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAinult \u00f6elda arendajatele, et kasutada t\u00f6\u00f6riista, ei ole piisav. Tuleb kuidagi r\u00e4\u00e4kida neile, mis see on ja kuidas see t\u00f6\u00f6tab. Siin on n\u00e4iteks artiklid PVS-Studio kiireks alustamiseks, kuid sarnaseid \u00f5petusi leiate igasuguste teie valitud t\u00f6\u00f6riistade kohta:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0007\/\">Kuidas kasutada PVS-Studio Windowsis (C, C++, C#)<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">Kuidas kasutada PVS-Studio Linuxis ja macOS-is (C, C++)<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0044\/\">Kuidas kasutada PVS-Studio Java jaoks<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nSellised artiklid annavad kogu vajaliku teabe igap\u00e4evaseks kasutamiseks ja ei v\u00f5ta palju aega. \ud83d\ude42<\/p>\n<p>Juba t\u00f6\u00f6riistaga tutvumise etapis surusime maha palju teateid \u00fche esialgse k\u00e4ivitamise ajal. Kahjuks ei ole staatilised anal\u00fcsaatorid ideaalsed, seet\u00f5ttu annavad nad aeg-ajalt valeh\u00e4ireid. Nende mahav\u00f5tmine on tavaliselt lihtne, n\u00e4iteks PVS-Studio pistikprogrammis Visual Studios piisab \u00fche nupu vajutamisest:<\/p>\n<p><img decoding=\"async\" alt=\"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni\" src=\"\/wp-content\/uploads\/2020\/08\/ed5382f468d21b7e711caba73b439fda.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSiiski ei saa te ainult neid maha suruda. N\u00e4iteks saate teatada toele problemaatika olemasolust. Kui valeh\u00e4ire on parandatav, v\u00f5ite tulevastes v\u00e4rskendustes m\u00e4rgata, et iga korraga on teie koodibaasi jaoks \u00fcha v\u00e4hem ja v\u00e4hem valeh\u00e4ireid.<\/p>\n<h2>P\u00e4rast integreerimist<\/h2>\n<p>\nN\u00fc\u00fcd oleme l\u00e4binud k\u00f5ik etapid staatilise anal\u00fc\u00fcsi integreerimiseks arendusprotsessi. Hoolimata t\u00f6\u00f6riistade s\u00e4tete seadistamise olulisusest CI-s, on peamine koht nende t\u00f6\u00f6ks arendaja arvuti. L\u00f5ppude l\u00f5puks on staatiline anal\u00fcsaator mitte kohtunik, kes \u00fctleb kaugelt, et kood ei sobi. Vastupidi, see on abiline, mis annab teada, kui olete v\u00e4sinud, ja tuletab meelde, kui olete midagi unustanud.<\/p>\n<p>T\u00f5de on see, et regulaarse kasutamise puudumisel ei muuda staatiline anal\u00fc\u00fcs arendust oluliselt lihtsamaks. L\u00f5ppude l\u00f5puks seisneb selle peamine kasu arendajale mitte niiv\u00f5rd keeruliste ja vaieldavate koodil\u00f5ikude leidmises, vaid nende varajases tuvastamises. Olgem n\u00f5us, et probleemi avastamine, kui muudatused on juba testimiseks saadetud, on mitte ainult ebameeldiv, vaid ka v\u00e4ga aegan\u00f5udev. Regulaarne staatiline anal\u00fc\u00fcs vaatab iga muudatuse l\u00e4bi otse teie arvutis ja teavitab kahtlastest kohtadest koodi kirjutamise ajal.<\/p>\n<p>Ja kui teie v\u00f5i teie kolleegid ei ole endiselt kindlad, kas anal\u00fcsaatori juurutamine on vajalik, soovitan teil n\u00fc\u00fcd lugeda artiklit \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0687\/\">P\u00f5hjused, miks rakendada arendusprotsessis koodi staatiline anal\u00fcsaator PVS-Studio<\/a><\/noindex>\". Selles k\u00e4sitletakse arendajate tavalisi muresid, et staatiline anal\u00fc\u00fcs v\u00f5taks nende aega jne.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/514128\/\"><img decoding=\"async\" alt=\"Staatiline anal\u00fc\u00fcs \u2013 tutvumisest integreerimiseni\" src=\"\/wp-content\/uploads\/2020\/08\/6372d668354f708cb0e08df27bb39bdd.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Kui soovite seda artiklit jagada ingliskeelse publikuga, palun kasutage t\u00f5lke linki: Maxim Zvyagintsev. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/514128\/\">Staatiline anal\u00fc\u00fcs: esimestest sammudest integratsioonini<\/a><\/noindex>.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/514124\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u043a\u0430\u043a \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u043b\u0438\u0431\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0442\u043e\u0433\u0434\u0430, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u044f\u0441\u044c \u043e\u0431 \u044d\u0442\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u2013 \u043e\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0434\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-07T23:42:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-07T23:42:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Staatiline anal\u00fc\u00fcs \u2013 esimesest tutvumisest integratsioonini | ProHoster","description":"K\u00fcllastunud l\u00f5putu koodikontrolli v\u00f5i silumise t\u00f5ttu, m\u00f5tle vahel, kuidas end elu lihtsamaks teha. Otsides natuke v\u00f5i kui juhuslikult peale juhtudes, v\u00f5ib n\u00e4ha maagilist fraasi: \"Staatiline anal\u00fc\u00fcs\".","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u2013 \u043e\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0434\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 | ProHoster","og:description":"\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-07T23:42:18+00:00","article:modified_time":"2020-08-07T23:42:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91065","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:35:24","updated":"2022-10-01 20:50:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=91065"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/91066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=91065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=91065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=91065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}