{"id":352787,"date":"2023-05-11T06:41:28","date_gmt":"2023-05-11T05:41:28","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=qodana&#038;p=352787"},"modified":"2023-05-11T06:41:33","modified_gmt":"2023-05-11T05:41:33","slug":"qodana-2023-1","status":"publish","type":"qodana","link":"https:\/\/blog.jetbrains.com\/ko\/qodana\/2023\/05\/qodana-2023-1\/","title":{"rendered":"Qodana 2023.1: \uc720\uc5f0\ud55c \ud504\ub85c\ud30c\uc77c \uad6c\uc131, Kotlin\/JS IR \ucef4\ud30c\uc77c\ub7ec \ub9c8\uc774\uadf8\ub808\uc774\uc158 \uc9c0\uc6d0, Go \ub77c\uc774\uc120\uc2a4 \ud638\ud658\uc131 \uac80\uc0ac, \ud50c\ub7ec\uadf8\uc778 \ud1b5\ud569 \ubc0f 30\uac1c \uc774\uc0c1\uc758 \uc2e0\uaddc \uac80\uc0ac"},"content":{"rendered":"<p><em>\ud604\uc7ac \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uc0c1\ud0dc\uc778 Qodana\ub294 JetBrains\uc758 \uc2a4\ub9c8\ud2b8\ud55c \ucf54\ub4dc \ud488\uc9c8 \ud50c\ub7ab\ud3fc\uc785\ub2c8\ub2e4. \uac15\ub825\ud55c \uc815\uc801 \ubd84\uc11d \uc5d4\uc9c4\uc73c\ub85c\uc11c JetBrains IDE\uc758 \uac80\uc0ac\ub97c \uc5b4\ub290 CI \ud30c\uc774\ud504\ub77c\uc778\uc73c\ub85c\ub4e0 \uac00\uc838\uc62c \uc218 \uc788\uc73c\uba70, \ub9ac\uc18c\uc2a4\ub97c \ub9ce\uc774 \uc0ac\uc6a9\ud558\ub294 \uac80\uc0ac\ub294 CI \uc11c\ubc84\uc5d0\uc11c \uc2e4\ud589\ud558\uc5ec \uc2dc\uac04\uacfc \ucef4\ud4e8\ud305 \ub9ac\uc18c\uc2a4\ub97c \uc808\uac10\ud574 \uc90d\ub2c8\ub2e4. \ub610\ud55c 60\uac1c \uc774\uc0c1\uc758 \uae30\uc220\uacfc \ubb34\uc81c\ud55c\uc758 \ucf54\ub4dc \uc904 \ubd84\uc11d\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/em><\/p>\n<p>\uc2e0\uaddc Qodana \ub9b4\ub9ac\uc2a4\uc5d0\ub294 \ucf54\ub4dc \ud488\uc9c8\uc744 \ucd5c\uc0c1\uc73c\ub85c \uc720\uc9c0\ud574\uc8fc\ub294 \uc8fc\uc694 \uac1c\uc120 \uc0ac\ud56d\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4. \ubc84\uc804 2023.1\uc5d0\uc11c\ub294 \ub354\uc6b1 \uc720\uc5f0\ud558\uac8c CI \ud30c\uc774\ud504\ub77c\uc778\uc5d0\uc11c \uc815\uc801 \ubd84\uc11d \ub2e8\uacc4\ub97c \uc9c4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8 \uac80\uc0ac \ud655\uc778\uc744 \uad6c\uc131\ud558\uae30 \uc704\ud55c \uc2a4\ub9c8\ud2b8\ud55c \ubc29\ubc95\uc774 \ucd94\uac00\ub418\uc5c8\uc73c\uba70, Qodana \uc815\uc801 \ubd84\uc11d \uc5d4\uc9c4\uc5d0 \ud50c\ub7ec\uadf8\uc778\uc744 \ucd94\uac00\ud558\ub294 \uc190\uc26c\uc6b4 \ubc29\ubc95\ub3c4 \uad6c\ud604\ub418\uc5c8\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p><!--more--><\/p>\n<p>\uacc4\uc18d \uc77d\uc73c\uba74\uc11c \uc8fc\uc694 \uc5c5\ub370\uc774\ud2b8\uc758 \uc804\uccb4 \ubaa9\ub85d\uc744 \ud655\uc778\ud558\uac70\ub098 linter \uad00\ub828 \uac1c\uc120 \uc0ac\ud56d\uc73c\ub85c \ubc14\ub85c \uc774\ub3d9\ud558\uc138\uc694.&nbsp;<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344478\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-34.png\" alt=\"\" width=\"1600\" height=\"750\"><\/figure>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Qodana \ubb34\ub8cc\ub85c \uc0ac\uc6a9\ud574\ubcf4\uae30\" href=\"https:\/\/www.jetbrains.com\/ko-kr\/qodana\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Qodana \ubb34\ub8cc\ub85c \uc0ac\uc6a9\ud574\ubcf4\uae30<\/a><\/p>\n<h2 class=\"wp-block-heading\">\uc8fc\uc694 \uc5c5\ub370\uc774\ud2b8&nbsp;<\/h2>\n<h3 class=\"wp-block-heading\">\uc2e0\uaddc YAML \uc591\uc2dd\uc73c\ub85c \uc720\uc5f0\ud558\uac8c \ud504\ub85c\ud30c\uc77c \uad6c\uc131<\/h3>\n<p>\uac80\uc0ac \ud504\ub85c\ud30c\uc77c\uc740 Qodana \uad6c\uc131\uc758 \ub9e4\uc6b0 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. \ud504\ub85c\ud30c\uc77c\uc740 Qodana\uac00 \ubd84\uc11d \uc911\uc5d0 \ucf54\ub4dc\uc5d0 \uc801\uc6a9\ud560 \uac80\uc0ac \uc138\ud2b8\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/p>\n<p>Qodana 2023.1 \ubc84\uc804\ubd80\ud130 \uc720\uc5f0\ud55c \ud504\ub85c\ud30c\uc77c \uad6c\uc131\uc774 \uc0ac\ub78c\uc774 \uc77d\uae30 \ud3b8\ud55c YAML \uc11c\uc2dd\uc73c\ub85c \uc81c\uacf5\ub418\uc5b4, \ud6e8\uc52c \ub354 \uac04\ud3b8\ud558\uac8c \uac80\uc0ac \ud504\ub85c\ud30c\uc77c\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud558\uace0 \ud504\ub85c\uc81d\ud2b8 \uc9c4\ud589\uc5d0 \ub530\ub77c \uc870\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ubd84\uc11d\uc744 \uc138\ubc00\ud558\uac8c \uc124\uc815\ud560 \uc218 \uc788\ub294 \uc635\uc158\uc785\ub2c8\ub2e4.<\/p>\n<ul>\n<li>[\uc2e0\uaddc] <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/custom-profiles.html#groups\" target=\"_blank\" rel=\"noopener\">\uac80\uc0ac\ub97c \uadf8\ub8f9\ud654<\/a>\ud558\uace0 \uadf8\ub8f9\uc744 \uad00\ub9ac.&nbsp;<\/li>\n<li>[\uc2e0\uaddc] \uae30\uc874 \ud504\ub85c\ud30c\uc77c\uc744 \ud3ec\ud568\ud558\uace0 \uc0c8\ub85c\uc6b4 \ud504\ub85c\ud30c\uc77c \uad6c\uc131.&nbsp;<\/li>\n<li>\uac80\uc0ac \ud65c\uc131\ud654 \ubc0f \ube44\ud65c\uc131\ud654.<\/li>\n<li>\uac80\uc0ac \ub9e4\uac1c\ubcc0\uc218 \uc124\uc815.&nbsp;<\/li>\n<li>\uac80\uc0ac \ubc94\uc704 \uad6c\uc131.&nbsp;<\/li>\n<\/ul>\n<p>\uc608\ub97c \ub4e4\uc5b4 Qodana for PHP linter\uc5d0\uc11c <code>PhpDeprecationInspection<\/code> \uac80\uc0ac\ub97c \uc81c\uc678\ud558\uace0 PHP\/\uc77c\ubc18 \uac80\uc0ac \uce74\ud14c\uace0\ub9ac\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucf54\ub4dc\ub97c \uac80\uc0ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">name: \"PHP\/General without PhpDeprecationInspection\"\ninspections:\n&nbsp;&nbsp;- group: \"category:PHP\/General\"\n&nbsp;&nbsp;&nbsp;&nbsp;enabled: true # Enable the 'PHP\/General' category\n&nbsp;&nbsp;- inspection: PhpDeprecationInspection\n&nbsp;&nbsp;&nbsp;&nbsp;enabled: false # Disable the PhpDeprecationInspection inspection<\/pre>\n<p>\uc0ac\uc6a9\uc790 \uc9c0\uc815 \ud504\ub85c\ud30c\uc77c\uc5d0 \uad00\ud55c \uc790\uc138\ud55c \uc815\ubcf4\ub294 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/custom-profiles.html\" target=\"_blank\" rel=\"noopener\">\ubb38\uc11c<\/a>\ub97c \ucc38\uc870\ud558\uc138\uc694.&nbsp;<\/p>\n<h3 class=\"wp-block-heading\">\ub514\ud3f4\ud2b8 \ud504\ub85c\ud30c\uc77c\uc758 \uc8fc\uc694 \ub9ac\ud329\ud130\ub9c1<\/h3>\n<p>Qodana\uc5d0\ub294 \ub450 \uc885\ub958\uc758 \ub514\ud3f4\ud2b8 \ud504\ub85c\ud30c\uc77c\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. <em>qodana.starter<\/em>\ub294 \uc911\uc694\ud55c \uac80\uc0ac\uc5d0\ub9cc \uc0ac\uc6a9\ub418\uba70 \ud504\ub85c\uc81d\ud2b8\ub97c \ucc98\uc74c\uc73c\ub85c \uac80\uc0ac\ud560 \ub54c \uc801\ud569\ud569\ub2c8\ub2e4. <em>qodana.recommended<\/em>\ub294 \uc0ac\uc804\uc5d0 \uc120\ud0dd\ub418\uace0 \ub300\ubd80\ubd84\uc758 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc801\ud569\ud55c \uac80\uc0ac \ubaa8\uc74c\uc744 \ud65c\uc131\ud654\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ub450 \ud504\ub85c\ud30c\uc77c\uc740 IDE\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 <em>\ub514\ud3f4\ud2b8<\/em> \ud504\ub85c\ud30c\uc77c\uc5d0 \ub9de\ucdb0 \ubaa8\ub450 \uc7ac\uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubcc0\uacbd\uc740 \ud22c\uba85\uc131\uc744 \ud5a5\uc0c1\ud558\uc5ec, Qodana\uc640 IDE\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 \uac80\uc0ac\ub97c \uac70\uc758 \ub3d9\uc77c\ud558\uac8c \uc720\uc9c0\ud558\uace0 \ucf54\ub4dc \ud488\uc9c8\uc744 \ub354 \uc77c\uad00\ub418\uac8c \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p>\uc5c5\ub370\uc774\ud2b8\ub41c <em>qodana.recommended<\/em> \ud504\ub85c\ud30c\uc77c\uc740 <a href=\"https:\/\/github.com\/JetBrains\/qodana-profiles\/blob\/master\/.idea\/inspectionProfiles\/qodana.recommended.yaml\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud504\ub85c\ud30c\uc77c\uc740 \ub2e4\uc74c \uba87 \uac00\uc9c0 \uc608\uc678\ub97c \uc81c\uc678\ud558\uace0 <em>\ub514\ud3f4\ud2b8<\/em> IDE \ud504\ub85c\ud30c\uc77c\uacfc \uc77c\uce58\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\uac00\ubcbc\uc6b4 \ubd84\uc11d \uc2dc\uc5d0\ub294 \uc2dc\uac04\uc774 \ub9ce\uc774 \uac78\ub9ac\ub294 <em>\uc804\uc5ed<\/em> \uac80\uc0ac\uac00 \ube44\ud65c\uc131\ub429\ub2c8\ub2e4.&nbsp;&nbsp;<\/li>\n<li>\ube4c\ub4dc \ub514\ub809\ud130\ub9ac \ubc0f \ud14c\uc2a4\ud2b8 \uc18c\uc2a4\uc640 \uac19\uc740 \uc77c\ubd80 \ud504\ub85c\uc81d\ud2b8 \ub514\ub809\ud130\ub9ac\uac00 \ubd84\uc11d\uc5d0\uc11c \uae30\ubcf8\uc801\uc73c\ub85c \uc81c\uc678\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc5c5\ub370\uc774\ud2b8\ub41c <em>qodana.starter<\/em> \ud504\ub85c\ud30c\uc77c\uc740 <a href=\"https:\/\/github.com\/JetBrains\/qodana-profiles\/blob\/master\/.idea\/inspectionProfiles\/qodana.starter.yaml\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud504\ub85c\ud30c\uc77c\uc740 <em>qodana.recommended<\/em> \ud504\ub85c\ud30c\uc77c\uc5d0\uc11c \ud30c\uc0dd\ub418\uc5c8\uc73c\uba70 \uc911\uc694\ud55c \uac80\uc0ac\ub9cc \uc2e4\ud589\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \uc8fc\uc694 \ubcc0\uacbd \ub0b4\uc6a9\uc785\ub2c8\ub2e4.<\/p>\n<ul>\n<li><em>\ucf54\ub4dc \uc2a4\ud0c0\uc77c<\/em> \ubc0f <em>\ucf54\ub4dc \uaddc\uce59<\/em> \uc758\ubbf8 \uad00\ub828 \uac80\uc0ac\uac00 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4.&nbsp;<\/li>\n<li>\ucf54\ub4dc\ubca0\uc774\uc2a4\uc758 \uc2e4\ud589\ud560 \uc218 \uc5c6\ub294 \ubd80\ubd84(\uc608: Javadoc)\uc5d0 \ub300\ud574 \uac80\uc0ac\uac00 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\">Qodana\uc5d0 \ud50c\ub7ec\uadf8\uc778\uc744 \ucd94\uac00\ud558\ub294 \uc190\uc26c\uc6b4 \ubc29\ubc95<\/h3>\n<p>Qodana\ub97c \ud655\uc7a5\ud558\uace0 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/qodana-yaml.html#Manage+plugins\" target=\"_blank\" rel=\"noopener\">JetBrains Marketplace\uc758 \uac80\uc0ac \ud50c\ub7ec\uadf8\uc778<\/a>\uc744 \uc0ac\uc6a9\ud558\ub824\uba74, \uba3c\uc800 \ud50c\ub7ec\uadf8\uc778 ID\ub97c <code>qodana.yaml<\/code> \ud30c\uc77c\uc5d0 \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4.&nbsp;<\/p>\n<p>\ucd5c\uadfc\uc5d0 Marketplace\uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uc5b4 \ud50c\ub7ec\uadf8\uc778\uc758 ID\ub97c \ud398\uc774\uc9c0\uc5d0\uc11c \uc9c1\uc811 \ubcf5\uc0ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344489\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-35.png\" alt=\"\" width=\"1600\" height=\"748\"><\/figure>\n<p>\ud50c\ub7ec\uadf8\uc778\uc5d0 \ud544\uc694\ud55c \ud0c0\uc0ac \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub97c \uc124\uce58\ud558\ub294 \ubc29\ubc95\uc740 \ub450 \uac00\uc9c0\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>bootstrap<\/code> \uc635\uc158\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/li>\n<li><code>FROM jetbrains\/qodana...<\/code>\ub85c \uc2dc\uc791\ud558\ub294 \uc0ac\uc6a9\uc790 \uc9c0\uc815 <code>Dockerfile<\/code>\uc744 \uac1c\ubc1c\ud569\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/jetbrains\/qodana-docker\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>\uc5d0 \uc788\ub294 Qodana <code>Dockerfile<\/code> \uc608\uc2dc\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\ub2e4\uc74c\uc740 \ud655\uc778\ud560 \uac00\uce58\uac00 \uc788\ub294 \uc778\uae30 \ud50c\ub7ec\uadf8\uc778 \uc911 \uc77c\ubd80\uc785\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16136-grazie-professional\" target=\"_blank\" rel=\"noopener\">Grazie Professional<\/a>: \uace0\uae09 \uc790\uc5f0\uc5b4 \uc791\uc131 \uc9c0\uc6d0, \ucca0\uc790 \uac80\uc0ac, \ubb38\ubc95 \uc218\uc815, \uc790\uc5f0\uc5b4 \uc644\uc131 \ubc0f \uae30\ud0c0 \ud14d\uc2a4\ud2b8 \uc791\uc131 \ubc0f \ud3b8\uc9d1\uc5d0 \uc720\uc6a9\ud55c \ub3c4\uad6c\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.&nbsp;<\/li>\n<li><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/1065-checkstyle-idea\" target=\"_blank\" rel=\"noopener\">CheckStyle<\/a>: IntelliJ IDEA \ub0b4\uc758 CheckStyle\uc744 \uae30\ubc18\uc73c\ub85c Java \ud30c\uc77c\uc744 \uc2e4\uc2dc\uac04 \ud639\uc740 \uc694\uccad \uc2dc\uc5d0 \uac80\uc0ac\ud569\ub2c8\ub2e4.<\/li>\n<li><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/7448-zero-width-characters-locator\" target=\"_blank\" rel=\"noopener\">Zero Width Characters Locator<\/a>: \uac80\uc0ac\ub97c \ucd94\uac00\ud558\uc5ec \uc18c\uc2a4 \ucf54\ub4dc \ubc0f \ub9ac\uc18c\uc2a4\uc5d0\uc11c \ub108\ube44\uac00 0\uc778 \ubb38\uc790\uc640 \uad00\ub828\ub41c \ucc3e\uae30 \ud798\ub4e0 \uc77c\ubd80 \ubc84\uadf8\ub97c \ubc29\uc9c0\ud569\ub2c8\ub2e4.&nbsp;<\/li>\n<\/ul>\n<p>JetBrains Marketplace\uc5d0\uc11c <a href=\"https:\/\/plugins.jetbrains.com\/search?orderBy=downloads&amp;tags=Inspection\" target=\"_blank\" rel=\"noopener\">\uc774 \uac80\uc0c9<\/a>\uc744 \uc774\uc6a9\ud558\uba74 \ub354 \ub9ce\uc740 \ud50c\ub7ec\uadf8\uc778\uc744 \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p>Qodana\ub294 \ud604\uc7ac \uc720\ub8cc \ud50c\ub7ec\uadf8\uc778\uc740 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc73c\uba70, \ud604\uc7ac \ubc84\uc804\uacfc \ud638\ud658\ub418\uc9c0 \uc54a\ub294 \ud50c\ub7ec\uadf8\uc778\uc774 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc62c\ud574 JetBrains Marketplace\uc5d0 Qodana \ud50c\ub7ec\uadf8\uc778\uc758 \ud638\ud658\uc131\uc744 \uac80\uc0ac\ud558\ub294 \uae30\ub2a5\uc744 \ucd94\uac00\ud558\uae30 \uc704\ud574 \uc791\uc5c5 \uc911\uc785\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Linter \uad00\ub828 \uc5c5\ub370\uc774\ud2b8<\/h2>\n<h3 class=\"wp-block-heading\">Qodana \ub0b4\uc758 \uc2e0\uaddc JVM \uac80\uc0ac&nbsp;<\/h3>\n<h4 class=\"wp-block-heading\"><strong>Kotlin\/JS IR \ucef4\ud30c\uc77c\ub7ec\uc6a9 \uac80\uc0ac<\/strong><\/h4>\n<p>Kotlin \ud300\uc740 Kotlin \uc18c\uc2a4 \ucf54\ub4dc\ub97c JavaScript\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud560 \uc218 \uc788\ub3c4\ub85d \uc9c0\uc6d0\ud558\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/js-ir-compiler.html\" target=\"_blank\" rel=\"noopener\">\uc0c8\ub85c\uc6b4 IR \ucef4\ud30c\uc77c\ub7ec<\/a>\ub97c \ub3c4\uc785\ud588\uc2b5\ub2c8\ub2e4. \ub9c8\uc774\uadf8\ub808\uc774\uc158 \ud504\ub85c\uc138\uc2a4\ub97c \uac00\uc18d\ud654\ud558\uace0 \uc7a0\uc7ac\uc801\uc778 \uc624\ub958\ub97c \ucc3e\uc544\ub0b4\uae30 \uc704\ud574 Qodana\uc5d0\uc11c \uc774\uc81c \ub2e4\uc74c\uc758 \uac80\uc0ac\uac00 \uc9c0\uc6d0\ub429\ub2c8\ub2e4.<\/p>\n<p><em>NonExternalClassifierExtendingStateOrProps<\/em><\/p>\n<p>React\uc758 <code>State<\/code> \ubc0f <code>Props<\/code>\uc640 \uac19\uc774 \uc21c\uc218 JS \ud074\ub798\uc2a4\uc5d0\uc11c \ud30c\uc0dd\ub41c Kotlin \uc778\ud130\ud398\uc774\uc2a4 \ubc0f \ud074\ub798\uc2a4(\ub370\uc774\ud130 \ud074\ub798\uc2a4 \ud3ec\ud568)\ub97c \uc0ac\uc6a9\ud558\uba74 <code>ClassCastExceptions<\/code>\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc608\uc678\ub294 \uc774\ub7ec\ud55c \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc2e4\uc81c\ub85c\ub294 JS\uc784\uc5d0\ub3c4 \ubd88\uad6c\ud558\uace0 Kotlin \uac1d\uccb4\uc778 \uac83\ucc98\ub7fc \ucef4\ud30c\uc77c\ub7ec\uac00 \ucde8\uae09\ud558\ub824 \ud558\uae30 \ub54c\ubb38\uc5d0 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub97c \ud574\uacb0\ud558\ub294 \ubc29\ubc95\uc740 \uc21c\uc218 JS \ud074\ub798\uc2a4\uc5d0\uc11c \ud30c\uc0dd\ub418\ub294 \ubaa8\ub4e0 \ud074\ub798\uc2a4\uc640 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc678\ubd80 \uc778\ud130\ud398\uc774\uc2a4\ub85c \ubcc0\ud658\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. Qodana\ub294 \uc678\ubd80 \ubd84\ub958\uc790\uac00 \uc544\ub2cc <code>State<\/code> \ud639\uc740 <code>Props<\/code>\uc758 \ud655\uc7a5 \uc0ac\uc6a9\uc744 \ubcf4\uace0\ud569\ub2c8\ub2e4.&nbsp;<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344580\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-40.png\" alt=\"\" width=\"1564\" height=\"390\"><\/figure>\n<p><em>NonVarPropertyInExternalInterface<\/em><\/p>\n<p>Kotlin\/JS \ucf54\ub4dc\uc5d0\uc11c \uc678\ubd80 \uc778\ud130\ud398\uc774\uc2a4\uc758 \ud504\ub85c\ud37c\ud2f0\ub294 \uac1d\uccb4\uac00 <code>js()<\/code> \ud639\uc740 <code>jso()<\/code>\ub85c \uc0dd\uc131\ub41c \ud6c4\uc5d0\ub9cc \uac12\uc774 \ub300\uc785\ub420 \uc218 \uc788\uc73c\ubbc0\ub85c \uc77d\uae30 \uc804\uc6a9(<code>val<\/code>) \ud504\ub85c\ud37c\ud2f0\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud574\uacb0 \ubc29\ubc95\uc740 \uc678\ubd80 \uc778\ud130\ud398\uc774\uc2a4\uc758 \ubaa8\ub4e0 \ud504\ub85c\ud37c\ud2f0\ub97c <code>var<\/code>\ub85c \ubcc0\ud658\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>Qodana\ub294 <code>var<\/code>\uac00 \uc544\ub2cc \ud504\ub85c\ud37c\ud2f0\ub97c \ubcc0\ud658\ud560 \uc218 \uc788\ub3c4\ub85d \ubaa8\ub450 \uac15\uc870 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344500\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-36.png\" alt=\"\" width=\"1566\" height=\"382\"><\/figure>\n<h4 class=\"wp-block-heading\"><strong>SpringTransactionalMethodCallsInspection<\/strong><\/h4>\n<p>Spring \ud504\ub808\uc784\uc6cc\ud06c\ub85c \ucf54\ub4dc \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ud65c\uc6a9\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud2b8\ub79c\uc7ad\uc158\uc744 \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>'@Transaction'<\/code>\uc73c\ub85c \ud45c\uc2dc\ub41c \uba54\uc11c\ub4dc\uc758 \uc678\ubd80 \ud638\ucd9c\ub9cc \ud2b8\ub79c\uc7ad\uc158\ud558\uc5d0\uc11c \uc2e4\ud589\ub418\uace0, \uc790\uae30 \ud638\ucd9c\uc740 \uc0c8 \ud2b8\ub79c\uc7ad\uc158\uc744 \uc2dc\uc791\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub85c \uc778\ud574 \ud2b8\ub79c\uc7ad\uc158 \uad00\ub9ac \uc2dc \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c Qodana\ub294 \uc774 \uc0c8\ub85c\uc6b4 \uac80\uc0ac\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud574\ub2f9 \uacbd\uc6b0\ub97c \uac15\uc870 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344511\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-37.png\" alt=\"\" width=\"1564\" height=\"446\"><\/figure>\n<h4 class=\"wp-block-heading\"><strong>JUnitMixedFramework<\/strong><\/h4>\n<p>\ud504\ub85c\uc81d\ud2b8 \ub0b4\uc5d0\uc11c \uc5ec\ub7ec \ubc84\uc804\uc758 JUnit\uc744 \uc0ac\uc6a9\ud558\uba74 \uac1c\ubc1c\uc790\uac00 \ud558\ub098\uc758 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \ub0b4\uc5d0\uc11c \uc5ec\ub7ec \ubc84\uc804\uc744 \uc2e4\uc218\ub85c \ud63c\uc6a9\ud558\uc5ec \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc608\ub85c \ub4e4\uc5b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344522\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-38.png\" alt=\"\" width=\"1600\" height=\"357\"><\/figure>\n<p>\ud14c\uc2a4\ud2b8\ub294 JUnit4\ub85c \uc2e4\ud589\ub418\ubbc0\ub85c JUnit5\uc758 <code>BeforeEach<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc740 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc73c\uba70 \ud14c\uc2a4\ud2b8\uac00 NullPointerException\uc744 \uc77c\uc73c\ud0a4\uba70 \uc2e4\ud328\ud569\ub2c8\ub2e4.&nbsp;<\/p>\n<p>Qodana\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud14c\uc2a4\ud2b8 \uc18c\uc2a4\ub97c \ud655\uc778\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774 \uac80\uc0ac\ub97c \ud3ec\ud568\ud558\ub824\uba74 \ub2e4\uc74c\uc758 \uad6c\uc131\uc744 <code>qodana.yaml<\/code>\uc5d0 \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">include:\n  - name: JUnitMixedFramework\n    paths:\n    - &lt;path-to-tests-directory&gt;<\/pre>\n<h4 class=\"wp-block-heading\"><strong>MathRoundingWithIntArgument<\/strong><\/h4>\n<p>\uc774 \uac80\uc0ac\ub294 <code>Math<\/code> \ubc0f <code>StrictMath<\/code>\uc758 <code>round()<\/code>, <code>ceil()<\/code>, <code>floor()<\/code> \ubc0f <code>rint()<\/code> \uba54\uc11c\ub4dc\uc5d0 \ub300\ud55c \ud638\ucd9c\uc744 \ubcf4\uace0\ud569\ub2c8\ub2e4. \uc815\uc218\uc5d0\uc11c \uc774\ub7ec\ud55c \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\ub294 \uac83\uc740 \ubd88\ud544\uc694\ud558\uba70 \uc815\uc218 \ub098\ub204\uae30\uc640 \uac19\uc740 \uc2e4\uc218\uac00 \ubc1c\uc0dd\ud588\ub2e4\ub294 \uc758\ubbf8\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344533\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-39.png\" alt=\"\" width=\"1568\" height=\"384\"><\/figure>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Qodana for JVM \uc0ac\uc6a9\ud574\ubcf4\uae30\" href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-jvm.html\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Qodana for JVM \uc0ac\uc6a9\ud574\ubcf4\uae30<\/a><\/p>\n<h3 class=\"wp-block-heading\">Go\uc6a9 \ud0c0\uc0ac \ub77c\uc774\uc120\uc2a4 \uac10\uc0ac<\/h3>\n<p>\uc624\ud508 \uc18c\uc2a4 \uad6c\uc131 \uc694\uc18c\uc5d0 \uc758\uc874\ud558\uac70\ub098, \uac1c\ubc1c\uc744 \uc544\uc6c3\uc18c\uc2f1\ud558\uac70\ub098, GitHub\uacfc \uac19\uc740 \uc11c\ube44\uc2a4\uc758 \ucf54\ub4dc\ub97c \uc7ac\uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uc801\uc808\ud55c \ub77c\uc774\uc120\uc2a4\ub97c \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc2e4\uc218\ub85c \ub77c\uc774\uc120\uc2a4 \uc81c\ud55c\uc774 \uc788\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ucf54\ub4dc\ubca0\uc774\uc2a4\ub85c \uac00\uc838\uc624\uac70\ub098 \ub9cc\ub8cc\ub41c \ub77c\uc774\uc120\uc2a4\ub97c \uae5c\ubc15\ud558\uace0 \uc5c5\ub370\uc774\ud2b8\ud558\uc9c0 \uc54a\uc558\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uacbd\uc6b0 \uc870\uc9c1\uc740 \ud3c9\ud310\uc5d0 \ud0c0\uaca9\uc744 \uc785\uac70\ub098 \ubc95\uc801\uc778 \uc704\ud5d8\uc5d0 \ucc98\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p>\uc774\ub7ec\ud55c \uc704\ud5d8\uc744 \ucd5c\uc18c\ud654\ud558\uae30 \uc704\ud574 \uc791\ub144\uc5d0\ub294 Java, Kotlin, PHP \ubc0f JavaScript\uc6a9 <a href=\"https:\/\/blog.jetbrains.com\/qodana\/2022\/05\/keep-your-dependency-licenses-in-check\/\"><em>\ub77c\uc774\uc120\uc2a4 \uac10\uc0ac<\/em> \uae30\ub2a5\uc774 \ucd94\uac00<\/a>\ub418\uc5c8\uace0, \uc774\ubc88 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 Go \uc9c0\uc6d0\uc774 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc544\ub798 \uc608\uc2dc\ucc98\ub7fc Qodana\ub294 \ubd84\uc11d\ub41c \uc800\uc7a5\uc18c \ub0b4\uc758 \uc885\uc18d\uc131 \ub77c\uc774\uc120\uc2a4\ub97c \ub098\uc5f4\ud558\uba70, \ud574\ub2f9 \ub77c\uc774\uc120\uc2a4\uac00 \ud504\ub85c\uc81d\ud2b8 \ub77c\uc774\uc120\uc2a4\uc640 \ud638\ud658\uc131 \ubb38\uc81c\uac00 \uc788\uc73c\uba74 \uacbd\uace0\ud569\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344746\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-42.png\" alt=\"\" width=\"1524\" height=\"382\"><\/figure>\n<p>\uc885\uc18d\uc131 \ub77c\uc774\uc120\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344735\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-41.png\" alt=\"\" width=\"1600\" height=\"1113\"><\/figure>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Qodana for Go \uc0ac\uc6a9\ud574\ubcf4\uae30\" href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-go.html\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Qodana for Go \uc0ac\uc6a9\ud574\ubcf4\uae30<\/a><\/p>\n<h3 class=\"wp-block-heading\">.NET \uc5c5\ub370\uc774\ud2b8<\/h3>\n<h4 class=\"wp-block-heading\"><strong>\uac80\uc0ac \ud504\ub85c\ud30c\uc77c\uc774 \uc774\uc81c \uc800\uc7a5\uc18c \uc124\uc815\uc744 \uace0\ub824<\/strong><\/h4>\n<p>\uc774\uc804\uc5d0 .NET linter\uc6a9 \uac80\uc0ac \ud504\ub85c\ud30c\uc77c\uc758 \uac80\uc0ac \uc2ec\uac01\ub3c4 \uc124\uc815\uc740 ReSharper\uc5d0\uc11c \uac00\uc838\uc628 \ub514\ud3f4\ud2b8 \uac12\uc744 \uae30\ubc18\uc73c\ub85c \ud558\uc600\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc774\ub807\uac8c \ud558\uba74 ReSharper, Rider \ubc0f <code>.editorconfig<\/code> \ud30c\uc77c(\uc800\uc7a5\uc18c\uc5d0 \uc788\ub294 \uacbd\uc6b0)\uc758 \uc194\ub8e8\uc158 \ubc0f \ud504\ub85c\uc81d\ud2b8 \uad6c\uc131 \ub808\uc774\uc5b4\ub97c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc778 \uacbd\uc6b0 \uc124\uc815\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4. \uc989, \uc774\ub7ec\ud55c \ub808\uc774\uc5b4 \uc911 \ud558\ub098\ub77c\ub3c4 \ubcc0\uacbd\ub418\uba74, Qodana YAML \ud504\ub85c\ud30c\uc77c\uc5d0\ub3c4 \uac19\uc740 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc801\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.&nbsp;<\/p>\n<p>\uc774\uc81c \uac80\uc0ac \ud504\ub85c\ud30c\uc77c\uc740 ReSharper \ubc0f <code>.editorconfig<\/code> \ud30c\uc77c(\uc800\uc7a5\uc18c\uc5d0 \uc788\ub294 \uacbd\uc6b0)\uc758 \uc124\uc815\uc744 \uc790\ub3d9\uc73c\ub85c \uc0c1\uc18d\ubc1b\uc73c\ubbc0\ub85c, \uc9c1\uc811 \uc791\uc5c5\ud560 \ud544\uc694\uac00 \ub354 \uc774\uc0c1 \uc5c6\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<h4 class=\"wp-block-heading\"><strong>Qodana YAML \uad6c\uc131 \uc124\uc815 \uc139\uc158\uc758 \uc774\ub984 \ubcc0\uacbd<\/strong><\/h4>\n<p>\uc774\uc804\uc5d0\ub294 <code>qodana.yaml<\/code> \uad6c\uc131 \ud30c\uc77c\uc5d0 \uc5f4 \uc194\ub8e8\uc158\uc774\ub098 \ud504\ub85c\uc81d\ud2b8\ub97c \uc9c0\uc815\ud558\uace0 \uad6c\uc131 \ubc0f \ud50c\ub7ab\ud3fc \uc635\uc158\ub3c4 \uc124\uc815\ud560 \uc218 \uc788\ub294<em>dot-net<\/em> \uc139\uc158\uc774 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uc139\uc158\uc758 \uc774\ub984\uc774 <em>dotnet<\/em>\uc73c\ub85c \ubcc0\uacbd\ub418\uc5c8\uc73c\uba70 <em>dot-net<\/em> \ud45c\uae30\ub294 Qodana 2023.2 \ubc84\uc804\ubd80\ud130 \ub354\ub294 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Qodana for .NET \uc0ac\uc6a9\ud574 \ubcf4\uae30\" href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-dotnet.html\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Qodana for .NET \uc0ac\uc6a9\ud574 \ubcf4\uae30<\/a><\/p>\n<h2 class=\"wp-block-heading\">Qodana 2023.1\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\ud558\ub294 \ubc29\ubc95<\/h2>\n<p><code>latest<\/code> Docker \ud0dc\uadf8\ub85c Qodana\ub97c \uc2e4\ud589\ud558\uba74 \uc544\ubb34\uac83\ub3c4 \ubcc0\uacbd\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4. \uadf8\ub807\uc9c0 \uc54a\uc740 \uacbd\uc6b0 Qodana\uac00 \uc0ac\uc6a9\ub418\ub294 CI \uc6cc\ud06c\ud50c\ub85c\uc5d0\uc11c 2023.1 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud558\uc138\uc694. <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/ci.html\" target=\"_blank\" rel=\"noopener\">\uc774 \ubb38\uc11c<\/a>\uc5d0\uc11c \uae30\uc874\uc758 CI\uc5d0 \ud1b5\ud569\ud558\ub294 \ubc29\ubc95\uc5d0 \uad00\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;&nbsp;&nbsp;<\/p>\n<p>\ubaa8\ub4e0 \uac80\uc0ac\uac00 \uc790\ub3d9\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4. \ubd84\uc11d \uc2dc \ud2b9\uc815 \uac80\uc0ac\ub97c \ud3ec\ud568\ud558\uac70\ub098 \uc81c\uc678\ud558\ub824\ub294 \uacbd\uc6b0 \uac80\uc0ac \ud504\ub85c\ud30c\uc77c\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud574\uc57c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/p>\n<p>\uc774\uc0c1\uc73c\ub85c Qodana 2023.1 \ubc84\uc804\uc758 \uc8fc\uc694 \ub0b4\uc6a9 \uc18c\uac1c\ub97c \ub9c8\ubb34\ub9ac\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/new-in-2023-1.html\" target=\"_blank\" rel=\"noopener\">\ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/a>\ub97c \ucc38\uc870\ud558\uc138\uc694. \uc774\ubc88 \uc0c8 \ub9b4\ub9ac\uc2a4\uac00 \uc5ec\ub7ec\ubd84\uc758 \ub9c8\uc74c\uc5d0 \ub4e4\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4. \ud5a5\ud6c4 \ube14\ub85c\uadf8\uc5d0 \uac8c\uc2dc\ud560 \uc8fc\uc81c\ub97c \uc81c\uc548\ud558\uac70\ub098 \ube44\uc988\ub2c8\uc2a4\uc5d0 Qodana\ub97c \ud65c\uc6a9\ud560 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\ub824\uba74 \uc774 \uac8c\uc2dc\ubb3c\uc5d0 \ub313\uae00\uc744 \ub0a8\uae30\uac70\ub098, <a href=\"https:\/\/twitter.com\/Qodana\" target=\"_blank\" rel=\"noopener\">Twitter<\/a> \ub610\ub294 <a href=\"mailto:qodana-support@jetbrains.com\">qodana-support@jetbrains.com<\/a>\uc73c\ub85c \ubb38\uc758\ud574 \uc8fc\uc138\uc694.<\/p>\n<p>\ucf54\ub4dc\ub97c \uae54\ub054\ud558\uac8c \uc720\uc9c0\ud558\uba74\uc11c, \uc990\uac81\uac8c \uac1c\ubc1c\ud558\uc138\uc694!<\/p>\n<p>Qodana \ud300 \ub4dc\ub9bc<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"\uc790\ubd80\uc2ec\uc744 \ub290\ub084 \uc218 \uc788\ub294 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uc138\uc694\" href=\"https:\/\/www.jetbrains.com\/ko-kr\/qodana\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>\uc790\ubd80\uc2ec\uc744 \ub290\ub084 \uc218 \uc788\ub294 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uc138\uc694<\/a><\/p>\n<p><em>\uac8c\uc2dc\ubb3c \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":964,"featured_media":344563,"comment_status":"closed","ping_status":"closed","template":"","categories":[4089,947,286,89,907],"tags":[158,600,4197,5701,40,155,21,76,477,1978],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/352787"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/qodana"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=352787"}],"version-history":[{"count":8,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/352787\/revisions"}],"predecessor-version":[{"id":352795,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/352787\/revisions\/352795"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/344563"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=352787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=352787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=352787"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=352787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}