{"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\/sv\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","title":{"rendered":"Statisk analys \u2013 fr\u00e5n introduktion till integration","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I stadiet av o\u00e4ndlig code review eller fels\u00f6kning funderar man ibland p\u00e5 hur man kan f\u00f6renkla sitt liv. Efter en del s\u00f6kande, eller om man av en slump st\u00f6ter p\u00e5, kan man se det magiska uttrycket: \"Statisk analys\". L\u00e5t oss ta en titt p\u00e5 vad det \u00e4r och hur det kan interagera med ditt projekt.<\/p>\n<p><img decoding=\"async\" alt=\"Statisk analys \u2013 fr\u00e5n introduktion till integration\" src=\"\/wp-content\/uploads\/2020\/08\/7811b22510bdda6f3f774b8335cbeabe.png\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEgentligen, om du skriver i n\u00e5got modernt programmeringsspr\u00e5k, har du, \u00e4ven utan att veta om det, redan k\u00f6rt det genom en statisk analysator. Det \u00e4r s\u00e5 att varje modern kompilator tillhandah\u00e5ller en, om \u00e4n minimal, upps\u00e4ttning av varningar om potentiella problem i koden. Till exempel, n\u00e4r du kompilerar C++-kod i Visual Studio kan du se f\u00f6ljande:<\/p>\n<p><img decoding=\"async\" alt=\"Statisk analys \u2013 fr\u00e5n introduktion till integration\" src=\"\/wp-content\/uploads\/2020\/08\/a267e4e8a57c1a32e508e5e1983c5ff0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nI detta utdata ser vi att variabeln <i>var<\/i> aldrig anv\u00e4ndes n\u00e5gonstans i funktionen. S\u00e5 i sj\u00e4lva verket har du n\u00e4stan alltid anv\u00e4nt en enkel statisk kodanalysator. Men till skillnad fr\u00e5n professionella analysatorer som Coverity, Klocwork eller PVS-Studio, kan varningarna som kompilatorn ger endast p\u00e5peka en liten m\u00e4ngd problem.<\/p>\n<p>Om du inte vet s\u00e4kert vad statisk analys \u00e4r och hur man implementerar det, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0046\/\">denna artikel<\/a><\/noindex>, f\u00f6r att f\u00f6rdjupa dig mer i denna metodologi. <\/p>\n<h2>Vad beh\u00f6vs statisk analys f\u00f6r?<\/h2>\n<p>\nKort sagt: hastighet och f\u00f6renkling. <\/p>\n<p>Statisk analys g\u00f6r det m\u00f6jligt att hitta m\u00e4ngder av olika problem i koden: fr\u00e5n felaktig anv\u00e4ndning av spr\u00e5kkonstruktioner till stavfel. Till exempel, ist\u00e4llet f\u00f6r <\/p>\n<pre><code class=\"cpp\">auto x = obj.x;\nauto y = obj.y;\nauto z = obj.z;<\/code><\/pre>\n<p>\ndu skrev f\u00f6ljande kod:<\/p>\n<pre><code class=\"cpp\">auto x = obj.x;\nauto y = obj.y;\nauto z = obj.x;<\/code><\/pre>\n<p>\nSom du ser finns det ett stavfel i den sista raden. Till exempel ger PVS-Studio f\u00f6ljande varning:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v537\/\">V537<\/a><\/noindex> \u00d6verv\u00e4g att granska korrektheten i anv\u00e4ndningen av 'y'-elementet.<\/p>\n<p>Om du vill testa detta fel manuellt, prova ett f\u00e4rdigt exempel p\u00e5 Compiler Explorer: *<noindex><a rel=\"nofollow\" href=\"https:\/\/godbolt.org\/z\/cd4WK7\">klicka<\/a><\/noindex>*.<\/p>\n<p>Och som du kanske f\u00f6rst\u00e5r, \u00e4r det inte alltid m\u00f6jligt att l\u00e4gga m\u00e4rke till s\u00e5dana kodstycken direkt, vilket kan leda till att man sitter fast i fels\u00f6kning i en timme, f\u00f6rundrad \u00f6ver varf\u00f6r allt verkar s\u00e5 konstigt. <\/p>\n<p>Men detta \u00e4r ett uppenbart fel. Vad h\u00e4nder om utvecklaren skrev ineffektiv kod eftersom han gl\u00f6mde n\u00e5gon nyans av spr\u00e5ket? Eller om han helt enkelt slutade med <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0066\/\">undefined behavior<\/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>Det var just f\u00f6r dessa situationer som statisk analys uppstod. Det \u00e4r en assistent f\u00f6r utvecklaren som visar p\u00e5 olika problem i koden och f\u00f6rklarar i dokumentationen varf\u00f6r det \u00e4r fel att skriva p\u00e5 det s\u00e4ttet, vilka konsekvenser det kan f\u00e5 och hur man \u00e5tg\u00e4rdar det. H\u00e4r \u00e4r ett exempel p\u00e5 hur det kan se ut: *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v702\/\">klicka<\/a><\/noindex>*.<\/p>\n<p>Fler intressanta fel som analysatorn kan uppt\u00e4cka kan du hitta i artiklar:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0700\/\">Topp 10 fel i C++-projekt under 2019<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0698\/\">Topp 10 fel i C#-projekt under 2019<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0699\/\">Topp 10 fel i Java-projekt under 2019<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nNu, efter att ha l\u00e4st detta material och \u00f6vertygat dig om f\u00f6rdelarna med statisk analys, kanske du vill prova det i praktiken. Men hur b\u00f6rjar man? Hur integrerar man ett nytt verktyg i ett p\u00e5g\u00e5ende projekt? Och hur introducerar man det f\u00f6r teamet? Du hittar svaren p\u00e5 dessa fr\u00e5gor nedan.<\/p>\n<p><b>Anteckning.<\/b> Statisk analys ers\u00e4tter inte och avskaffar inte n\u00e5got s\u00e5 v\u00e4rdefullt som kodgranskningar. Den kompletterar denna process genom att hj\u00e4lpa till att f\u00f6rutse och korrigera stavfel, felaktigheter och farliga konstruktioner. Det \u00e4r mycket mer produktivt att fokusera p\u00e5 algoritmer och kodens tydlighet under kodgranskningarna, snarare \u00e4n att jaga efter en felplacerad parentes eller <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0509\/\">l\u00e4sa tr\u00e5kiga j\u00e4mf\u00f6ringsfunktioner<\/a><\/noindex>.<\/p>\n<h2>0. Bekanta dig med verktyget<\/h2>\n<p>\nAllt b\u00f6rjar med en testversion. Det \u00e4r verkligen sv\u00e5rt att best\u00e4mma sig f\u00f6r att inf\u00f6ra n\u00e5got i utvecklingsprocessen om man aldrig har sett verktyget i aktion tidigare. S\u00e5 det f\u00f6rsta steget \u00e4r att ladda ner <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/?promo=mscas\">en provversion<\/a><\/noindex>.<\/p>\n<p><b>Vad du kommer att l\u00e4ra dig i detta steg:<\/b><\/p>\n<ul>\n<li>Vilka s\u00e4tt det finns att interagera med analysatorn;<\/li>\n<li>Om analysatorn \u00e4r kompatibel med din utvecklingsmilj\u00f6;<\/li>\n<li>Vilka problem som finns i dina projekt just nu.<\/li>\n<\/ul>\n<p>\nN\u00e4r du har installerat allt du beh\u00f6ver \u00e4r det f\u00f6rsta steget att k\u00f6ra en analys av hela projektet (<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>). I fallet med PVS-Studio i Visual Studio kommer du att se n\u00e5got som detta (klickbart):<\/p>\n<p><img decoding=\"async\" alt=\"Statisk analys \u2013 fr\u00e5n introduktion till integration\" src=\"\/wp-content\/uploads\/2020\/08\/865b2dfa10661e4999238cdccf8860dc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nFaktum \u00e4r att statiska analysatorer vanligtvis genererar en stor m\u00e4ngd varningar f\u00f6r projekt med en stor kodbas. Det \u00e4r inte n\u00f6dv\u00e4ndigt att \u00e5tg\u00e4rda dem alla, eftersom ditt projekt redan fungerar, vilket inneb\u00e4r att dessa problem inte \u00e4r kritiska. Men du <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0633\/\">kan titta p\u00e5 de mest intressanta varningarna.<\/a><\/noindex> och vid behov r\u00e4tta dem. F\u00f6r detta beh\u00f6ver man filtrera utdata och beh\u00e5lla endast de mest tillf\u00f6rlitliga meddelandena. I PVS-Studio plugin f\u00f6r Visual Studio g\u00f6rs detta genom att filtrera efter niv\u00e5er och kategorier av fel. F\u00f6r att f\u00e5 den mest exakta utdata, l\u00e5t endast f\u00f6ljande vara aktiverat <i>H\u00f6g<\/i> och <i>General<\/i> (\u00e4ven klickbart):<\/p>\n<p><img decoding=\"async\" alt=\"Statisk analys \u2013 fr\u00e5n introduktion till integration\" src=\"\/wp-content\/uploads\/2020\/08\/400b90713f67b531e4ed513ea9d340a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nVerkligen, att granska 178 varningar \u00e4r betydligt enklare \u00e4n flera tusen...<\/p>\n<p>I flikarna <i>Medium<\/i> och <i>L\u00e5g<\/i> finns det ofta bra varningar, men i dessa kategorier ing\u00e5r diagnoser som har l\u00e4gre precision (tillf\u00f6rlitlighet). Mer information om varningsniv\u00e5er och alternativ f\u00f6r Windows kan ses h\u00e4r: *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0007\">klicka<\/a><\/noindex>*.<\/p>\n<p>Efter att ha granskats de mest intressanta felen (och framg\u00e5ngsrikt \u00e5tg\u00e4rdat dem) ska man <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0032\/\">d\u00e4mpa de \u00e5terst\u00e5ende varningarna<\/a><\/noindex>. Detta beh\u00f6vs f\u00f6r att nya varningar inte ska f\u00f6rsvinna bland de gamla. Dessutom \u00e4r den statiska analysatorn en hj\u00e4lpare f\u00f6r programmeraren, och inte en lista \u00f6ver buggar. \ud83d\ude42<\/p>\n<h2>1. Automatisering<\/h2>\n<p>\nEfter introduktionen kommer tiden f\u00f6r att st\u00e4lla in plugins och integrera dem i CI. Detta m\u00e5ste g\u00f6ras innan programmerarna b\u00f6rjar anv\u00e4nda den statiska analysatorn. Anledningen \u00e4r att en programmerare kan gl\u00f6mma att aktivera analysen eller helt enkelt inte vilja g\u00f6ra det. F\u00f6r detta m\u00e5ste en slutlig kontroll g\u00f6ras s\u00e5 att obevakad kod inte kan hamna i den allm\u00e4nna utvecklingsgrenen.<\/p>\n<p><b>Vad du kommer att l\u00e4ra dig i detta steg:<\/b><\/p>\n<ul>\n<li>Vilka automatiseringsalternativ verktyget erbjuder;<\/li>\n<li>\u00c4r analysatorn kompatibel med ditt byggsystem.<\/li>\n<\/ul>\n<p>\nEftersom det inte finns n\u00e5gon perfekt dokumentation, m\u00e5ste man ibland skriva till <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/about-feedback\/\">supporten<\/a><\/noindex>. Det \u00e4r helt okej, och vi \u00e4r glada att hj\u00e4lpa dig. \ud83d\ude42<\/p>\n<p>L\u00e5t oss nu g\u00e5 vidare till kontinuerlig integrations (CI) tj\u00e4nster. Varje analysator kan implementeras i dem utan allvarliga problem. F\u00f6r detta beh\u00f6ver du skapa ett separat steg i pipelinen, som vanligtvis ligger efter bygget och enhetstester. Detta g\u00f6rs med hj\u00e4lp av olika konsolverktyg. Till exempel erbjuder PVS-Studio f\u00f6ljande verktyg:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0035\">PVS-Studio_Cmd.exe<\/a><\/noindex> (analys av l\u00f6sningar, C#, C++ projekt p\u00e5 Windows)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0031\/\">CLMonitor.exe<\/a><\/noindex> (\u00f6vervakning av kompilering)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">pvs-studio-analyzer<\/a><\/noindex> (analys av C++ projekt p\u00e5 Linux \/ macOS)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0035\/\">pvs-studio-dotnet<\/a><\/noindex> (analys av l\u00f6sningar, C# projekt p\u00e5 Linux \/ macOS)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0044\/\">pvs-studio.jar<\/a><\/noindex> (analys av Java projekt)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0038\/\">PlogConverter<\/a><\/noindex> (konverterare av rapportfiler)<\/li>\n<\/ul>\n<p>\nF\u00f6r att integrera analysen i CI m\u00e5ste tre saker g\u00f6ras:<\/p>\n<ul>\n<li>Installera analysatorn;<\/li>\n<li>Starta analysen;<\/li>\n<li>Leverera resultaten.<\/li>\n<\/ul>\n<p>\nTill exempel, f\u00f6r att installera PVS-Studio p\u00e5 Linux (Debian-baserat) beh\u00f6ver du k\u00f6ra f\u00f6ljande kommandon:<\/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>\nI system som k\u00f6rs under Windows finns det ingen m\u00f6jlighet att installera analysatorn via paketf\u00f6rvaltaren, men det \u00e4r m\u00f6jligt att starta analysatorn fr\u00e5n kommandoraden:<\/p>\n<pre><code class=\"powershell\">PVS-Studio_setup.exe \/verysilent \/suppressmsgboxes \n\/norestart \/nocloseapplications<\/code><\/pre>\n<p>\nMer om distribution av PVS-Studio i Windows-system kan l\u00e4sas *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0025\/\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>*.<\/p>\n<p>Efter installationen m\u00e5ste du starta sj\u00e4lva analysen. Men det rekommenderas att g\u00f6ra detta f\u00f6rst efter att kompileringen och testerna har genomf\u00f6rts. Detta beror p\u00e5 att statisk analys vanligtvis tar dubbelt s\u00e5 l\u00e5ng tid som kompilering.<\/p>\n<p>Eftersom s\u00e4ttet att starta beror p\u00e5 plattformen och projektets s\u00e4rdrag, visar jag ett alternativ f\u00f6r C++ (Linux) som exempel:<\/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>\nDet f\u00f6rsta kommandot kommer att utf\u00f6ra analysen, och det andra <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0038\/\">konverterar<\/a><\/noindex>rapporten till textformat, skriver ut den p\u00e5 sk\u00e4rmen och returnerar en kod som skiljer sig fr\u00e5n 0 om det finns varningar. En s\u00e5dan mekanism \u00e4r anv\u00e4ndbar f\u00f6r att blockera bygget om det finns felmeddelanden. Men du kan alltid ta bort flaggan <i>-w<\/i> och inte blockera bygget som inneh\u00e5ller varningar.<\/p>\n<p><b>Anteckning.<\/b> Textformatet \u00e4r inte bekv\u00e4mt. Det anges bara som exempel. Observera det mer intressanta rapportformatet - FullHtml. Det till\u00e5ter navigering i koden.<\/p>\n<p>Mer om att st\u00e4lla in analys p\u00e5 CI kan l\u00e4sas i artikeln \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0005\">PVS-Studio och Continuous Integration<\/a><\/noindex>\" (Windows) eller \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0661\/\">Hur man konfigurerar PVS-Studio i Travis CI<\/a><\/noindex>\" (Linux).<\/p>\n<p>Bra, du har konfigurerat analysatorn p\u00e5 byggservern. Nu, om n\u00e5gon har laddat upp otestad kod, kommer verifieringssteget att misslyckas och du kan uppt\u00e4cka problemet. Det \u00e4r dock inte helt praktiskt, eftersom det \u00e4r effektivare att kontrollera projektet innan sammanslagningen av brancher, snarare \u00e4n efter, i steget av pull request.<\/p>\n<p>I stort sett skiljer sig inst\u00e4llningen av pull request-analys inte mycket fr\u00e5n att k\u00f6ra analys p\u00e5 CI. F\u00f6rutom behovet av att f\u00e5 en lista \u00f6ver \u00e4ndrade filer. Vanligtvis kan dessa f\u00e5s genom att beg\u00e4ra skillnaden mellan brancherna med hj\u00e4lp av git:<\/p>\n<pre><code class=\"bash\">git diff --name-only HEAD origin\/$MERGE_BASE &gt; .pvs-pr.list<\/code><\/pre>\n<p>\nNu m\u00e5ste vi \u00f6verf\u00f6ra denna lista med filer till analysatorn. Till exempel i PVS-Studio g\u00f6rs detta med hj\u00e4lp av flaggan <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>\nMer om analys av pull requests kan man f\u00e5 veta *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0679\/\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>*. \u00c4ven om din CI inte finns med i listan \u00f6ver de angivna tj\u00e4nsterna i artikeln, kommer den allm\u00e4nna sektionen som handlar om teorin f\u00f6r denna typ av analys att vara nyttig f\u00f6r dig.<\/p>\n<p>Genom att konfigurera analys av pull requests kan du blockera commits som inneh\u00e5ller varningar, vilket skapar en gr\u00e4ns som otestad kod inte kan passera.<\/p>\n<p>Detta \u00e4r sj\u00e4lvklart bra, men det skulle vara trevligt att kunna se alla varningar p\u00e5 ett st\u00e4lle. Inte bara fr\u00e5n den statiska analysatorn utan ocks\u00e5 fr\u00e5n enhetstester eller den dynamiska analysatorn. F\u00f6r detta finns det olika tj\u00e4nster och plugins. PVS-Studio har till exempel <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0037\/\">en plugin f\u00f6r integration med SonarQube<\/a><\/noindex>.<\/p>\n<h2>2. Integration p\u00e5 utvecklarnas maskiner<\/h2>\n<p>\nNu \u00e4r det dags att installera och konfigurera analysatorn f\u00f6r dagligt bruk i utvecklingen. Vid det h\u00e4r laget har du redan bekantat dig med de flesta arbetsmetoder, s\u00e5 detta kan kallas den enklaste delen.<\/p>\n<p>Som det enklaste alternativet kan utvecklarna sj\u00e4lva installera den n\u00f6dv\u00e4ndiga analysatorn. Men detta kommer att ta mycket tid och avleda dem fr\u00e5n utvecklingen, s\u00e5 du kan automatisera denna process genom att anv\u00e4nda installationsprogrammet och n\u00f6dv\u00e4ndiga flaggor. F\u00f6r PVS-Studio finns det olika <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0025\/\">flaggar f\u00f6r automatiserad installation<\/a><\/noindex>. Det finns alltid paketmanagerare, s\u00e5som Chocolatey (Windows), Homebrew (macOS) eller dussintals alternativ f\u00f6r Linux.<\/p>\n<p>D\u00e4refter beh\u00f6ver du installera de n\u00f6dv\u00e4ndiga plugins, till exempel f\u00f6r <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> med flera.<\/p>\n<h2>3. Daglig anv\u00e4ndning<\/h2>\n<p>\nVid denna punkt \u00e4r det dags att s\u00e4ga n\u00e5gra ord om s\u00e4tt att p\u00e5skynda analysatorns arbete vid daglig anv\u00e4ndning. En fullst\u00e4ndig analys av hela projektet tar mycket tid, men hur ofta \u00e4ndrar vi koden p\u00e5 en g\u00e5ng i hela projektet? Det finns knappt n\u00e5got s\u00e5 omfattande refaktorisering som omedelbart p\u00e5verkar hela kodbasen. Antalet \u00e4ndrade filer p\u00e5 en g\u00e5ng \u00f6verstiger s\u00e4llan ett tiotal, d\u00e4rf\u00f6r \u00e4r det meningsfullt att analysera just dem. F\u00f6r s\u00e5dana situationer finns det <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0024\/\">en inkrementell analysl\u00e4ge<\/a><\/noindex>. Bara bli inte r\u00e4dda, det \u00e4r inte ett nytt verktyg. Det \u00e4r ett speciellt l\u00e4ge som till\u00e5ter analys av endast \u00e4ndrade filer och deras beroenden, och detta sker automatiskt efter kompilering om du arbetar i en IDE med den installerade plugin. <\/p>\n<p>Om analysatorn hittar problem i den nyligen \u00e4ndrade koden, kommer den att meddela om detta automatiskt. Till exempel, PVS-Studio kommer att informera dig om detta med ett meddelande:<\/p>\n<p><img decoding=\"async\" alt=\"Statisk analys \u2013 fr\u00e5n introduktion till integration\" src=\"\/wp-content\/uploads\/2020\/08\/20456a6652f0bd4f62d9aea5f1dda5cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDet r\u00e4cker inte med att s\u00e4ga till utvecklarna att anv\u00e4nda verktyget. Vi beh\u00f6ver p\u00e5 n\u00e5got s\u00e4tt ber\u00e4tta f\u00f6r dem vad det \u00e4r och hur det fungerar. H\u00e4r \u00e4r till exempel artiklar om snabbstart f\u00f6r PVS-Studio, men liknande handledningar kan du hitta f\u00f6r vilket verktyg du \u00e4n f\u00f6redrar:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0007\/\">Hur man k\u00f6r PVS-Studio i Windows (C, C++, C#)<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">Hur man k\u00f6r PVS-Studio i Linux och macOS (C, C++)<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0044\/\">Hur man k\u00f6r PVS-Studio Java<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nS\u00e5dana artiklar ger all n\u00f6dv\u00e4ndig information f\u00f6r dagligt bruk och tar inte mycket tid. \ud83d\ude42<\/p>\n<p>Redan i inledningen till verktyget undertryckte vi m\u00e5nga varningar under en av de f\u00f6rsta k\u00f6rningarna. Tyv\u00e4rr \u00e4r statiska analysatorer inte perfekta, s\u00e5 de ger ibland falska positiva. Att undertrycka dem \u00e4r vanligtvis enkelt, till exempel i PVS-Studio-plugin f\u00f6r Visual Studio r\u00e4cker det med att trycka p\u00e5 en knapp:<\/p>\n<p><img decoding=\"async\" alt=\"Statisk analys \u2013 fr\u00e5n introduktion till integration\" src=\"\/wp-content\/uploads\/2020\/08\/ed5382f468d21b7e711caba73b439fda.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMen du kan inte bara undertrycka dem. Du kan till exempel rapportera ett problem till supporten. Om en falsk positiv kan \u00e5tg\u00e4rdas, kan du i framtida uppdateringar m\u00e4rka att antalet specifika falska positiva f\u00f6r din kodbas minskar mer och mer.<\/p>\n<h2>Efter integrationen<\/h2>\n<p>\nVi har nu g\u00e5tt igenom alla steg f\u00f6r att integrera statisk analys i utvecklingsprocessen. Trots vikten av att konfigurera s\u00e5dana verktyg p\u00e5 CI, \u00e4r den viktigaste platsen f\u00f6r k\u00f6rning just utvecklarens dator. F\u00f6r en statisk analysator \u00e4r det inte en domare som s\u00e4ger att koden inte duger fr\u00e5n en avl\u00e4gsen plats. Tv\u00e4rtom, det \u00e4r en assistent som ger r\u00e5d n\u00e4r du \u00e4r tr\u00f6tt och p\u00e5minner dig om du har gl\u00f6mt n\u00e5got.<\/p>\n<p>Sanningen \u00e4r att utan regelbunden anv\u00e4ndning av statisk analys knappast kommer utvecklingen att bli enklare. Den st\u00f6rsta f\u00f6rdelen f\u00f6r utvecklaren ligger inte s\u00e5 mycket i att hitta komplexa och tveksamma kodavsnitt, utan snarare i att tidigt uppt\u00e4cka dem. H\u00e5ller ni inte med om att det \u00e4r frustrerande att uppt\u00e4cka ett problem n\u00e4r \u00e4ndringarna har skickats f\u00f6r testning, och att det dessutom kan ta l\u00e5ng tid? Statisk analys, vid regelbunden anv\u00e4ndning, granskar varje f\u00f6r\u00e4ndring direkt p\u00e5 din dator och informerar om misst\u00e4nkta omr\u00e5den medan du arbetar med koden.<\/p>\n<p>Om du eller dina kollegor fortfarande \u00e4r os\u00e4kra p\u00e5 om ni b\u00f6r implementera analysatorn, f\u00f6resl\u00e5r jag att ni nu l\u00e4ser artikeln \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0687\/\">Anledningar till att inf\u00f6ra en statistisk kodanalysator PVS-Studio i utvecklingsprocessen<\/a><\/noindex>\". Den tar upp vanliga farh\u00e5gor hos utvecklare om att statisk analys skulle ta tid och liknande.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/514128\/\"><img decoding=\"async\" alt=\"Statisk analys \u2013 fr\u00e5n introduktion till integration\" src=\"\/wp-content\/uploads\/2020\/08\/6372d668354f708cb0e08df27bb39bdd.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Om du vill dela denna artikel med en engelsktalande publik, v\u00e4nligen anv\u00e4nd l\u00e4nken till \u00f6vers\u00e4ttningen: Maxim Zvyagintsev. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/514128\/\">Statisk analys: Fr\u00e5n att komma ig\u00e5ng till integration<\/a><\/noindex>.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Statisk analys \u2013 fr\u00e5n introduktion till integration | ProHoster","description":"Tr\u00f6tt p\u00e5 o\u00e4ndlig kodgranskning eller fels\u00f6kning, funderar man ibland p\u00e5 hur man kan f\u00f6renkla sitt liv. Och efter en liten s\u00f6kning, eller av en slump, kan man se det magiska fraset: \"Statisk analys\".","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/91065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=91065"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/91065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/91066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=91065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=91065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=91065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}