{"id":250164,"date":"2022-05-26T09:19:31","date_gmt":"2022-05-26T08:19:31","guid":{"rendered":"https:\/\/blog.jetbrains.com\/qodana\/2022\/05\/qodana-2022-1-is-available\/"},"modified":"2025-09-18T13:41:19","modified_gmt":"2025-09-18T12:41:19","slug":"qodana-2022-1-is-available","status":"publish","type":"qodana","link":"https:\/\/blog.jetbrains.com\/ko\/qodana\/2022\/05\/qodana-2022-1-is-available\/","title":{"rendered":"Qodana 2022.1 \ubc84\uc804 \ucd9c\uc2dc"},"content":{"rendered":"\n<p>JetBrains\ub294 \ucf54\ub4dc \ud488\uc9c8 \ud50c\ub7ab\ud3fc\uc778 Qodana\uc5d0 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uc9c0\uc18d\uc801\uc73c\ub85c \ucd94\uac00\ud558\uc5ec \uac1c\uc120\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uc54c\ub824\ub4dc\ub9ac\uace0\uc790 Qodana 2022.1\uc758 \uc8fc\uc694 \ub9b4\ub9ac\uc2a4\uc640 \ub354\ubd88\uc5b4 \uc815\uae30 \ub9b4\ub9ac\uc2a4 \uad00\ub828 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c \uc5f0\uc7ac\ub97c \uc2dc\uc791\ud558\ub824 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><em>\ub77c\uc774\uc120\uc2a4 \uac10\uc0ac<\/em>\ub294 \uae30\ubcf8 \ub9b0\ud130\uc640 \ubcc4\ub3c4\ub85c \uad6c\uc131\ud574\uc57c \ud558\ub294 \ucd94\uac00 \ub9b0\ud130\uc600\uc73c\ub098, \uc774\uc81c Qodana\uc5d0\uc11c \ubcc4\ub3c4 \uc124\uc815 \uc5c6\uc774 \ubc14\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c PHP \ubc0f JVM \ub9b0\ud130\ub97c \uc704\ud55c \uc0c8\ub86d\uace0 \uc720\uc6a9\ud55c \uac80\uc0ac\uac00 \uc5ec\ub7ec \uac1c \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uacc4\uc18d\ud574\uc11c \uc790\uc138\ud55c \uad00\ub828 \ub0b4\uc6a9\uc744 \uc77d\uc5b4\ubcf4\uc138\uc694.<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/XDUC2ReAqWMNoQNTNpRSK_LttAmoeg9yL5AdF_3DOdRjyxAbZ0YIvvJNCQUHgGzZ8flbAKVETOhtkZ3f2TuYMT2jSVtvPynCz-72y39MmlPvHo2vC5gC2syVvxiK1kyWm7roSH46rngJwaz0nw-1.png\" style=\"\"><\/p>\n\n\n\n<p align=\"center\"><a class=\"jb-download-button\" title=\"QODANA \uc2dc\uc791\ud558\uae30\" href=\"https:\/\/www.jetbrains.com\/ko-kr\/qodana\" target=\"_blank\" rel=\"noopener noreferrer\" data-mce-href=\"https:\/\/www.jetbrains.com\/ko-kr\/qodana\" data-mce-selected=\"inline-boundary\" data-mce-><i class=\"download-icon\"><\/i>QODANA \uc2dc\uc791\ud558\uae30<\/a><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ub77c\uc774\uc120\uc2a4 \uac10\uc0ac<\/h1>\n\n\n\n<p>\ucf54\ub4dc\uc5d0\uc11c \uc62c\ubc14\ub974\uc9c0 \uc54a\uac70\ub098 \ubd80\uc801\uc808\ud55c \ub77c\uc774\uc120\uc2a4\uac00 \uc0ac\uc6a9\ub41c \uacbd\uc6b0, \ub9c9\ub300\ud55c \ubc95\ub960 \ubc0f \ucef4\ud50c\ub77c\uc774\uc5b8\uc2a4 \ubc8c\uae08\uc744 \ubb3c\uc5b4\uc57c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Qodana\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucf54\ub4dc \uc800\uc7a5\uc18c\uc758 \uc885\uc18d\uc131\uc744 \uc2a4\uce94\ud558\uc5ec \ub77c\uc774\uc120\uc2a4\ub97c \uac80\uc0c9\ud558\uace0 \uc7a0\uc7ac\uc801 \uc774\uc288\ub97c \ud655\uc778\ud574 \ubcf4\uc138\uc694.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/05\/license_auditing_qodana.png\" alt=\"Qodana \ub77c\uc774\uc120\uc2a4 \uac10\uc0ac \ud65c\uc6a9 \uc0ac\ub840\" data-gif-src=\"https:\/\/resources.jetbrains.com\/storage\/products\/blog\/wp-content\/uploads\/license_auditing_qodana.gif\"><\/figure>\n\n\n\n<p>\uc774\ubc88 \ub9b4\ub9ac\uc2a4\ub97c \ud1b5\ud574 \ub77c\uc774\uc120\uc2a4 \uac10\uc0ac\ub97c \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc27d\uac8c \uc801\uc6a9\ud558\uace0, CI\/CD \ud30c\uc774\ud504\ub77c\uc778\uc758 \uc77c\ubd80\ub85c \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0c8\ub85c\uc6b4 <em>\ub77c\uc774\uc120\uc2a4 \uac10\uc0ac<\/em> \uae30\ub2a5\uc740 Python, Java, Kotlin, PHP \ubc0f JavaScript\ub97c \ud3ec\ud568\ud55c \ubaa8\ub4e0 \ub9b0\ud130\uc5d0\uc11c \uc9c0\uc6d0\ub429\ub2c8\ub2e4.<br> <em>\ub77c\uc774\uc120\uc2a4 \uac10\uc0ac<\/em>\ub97c \ud65c\uc131\ud654\ud558\ub824\uba74 \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\uc758 <code>qodana.yaml<\/code> \ud30c\uc77c\uc5d0 \ub2e4\uc74c \ucf54\ub4dc \uc904\uc744 \ucd94\uac00\ud558\uc138\uc694.<\/p>\n\n\n\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: CheckDependencyLicenses<\/pre>\n\n\n\n<p>\ud504\ub85c\uc81d\ud2b8\uc758 \ud2b9\uc815 \uc885\uc18d\uc131\uc744 \ubb34\uc2dc\ud558\ub824\ub294 \uacbd\uc6b0, \ub2e4\uc74c \uc904\uc744 \ucd94\uac00\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\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=\"\">dependencyIgnores:\n- name: \"dependency\/name\"<\/pre>\n\n\n\n<p><em>\ub77c\uc774\uc120\uc2a4 \uac10\uc0ac<\/em>\uc640 \uad00\ub828\ud55c \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uad6c\uc131 \ubc29\ubc95\uc744 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\ub824\uba74 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/license-audit.html\" target=\"_blank\" rel=\"noreferrer noopener\">\ubb38\uc11c<\/a> \ub610\ub294 <a href=\"https:\/\/blog.jetbrains.com\/qodana\/2022\/05\/keep-your-dependency-licenses-in-check\/\" target=\"_blank\" rel=\"noreferrer noopener\">\uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c<\/a>\uc744 \ucc38\uc870\ud558\uc5ec \uac1c\ubc1c\uc790, \uad00\ub9ac\uc790 \ubc0f \ubc95\ubb34\ud300\uc758 \uc5c5\ubb34 \ub8e8\ud2f4\uc744 \uac04\uc18c\ud654\ud560 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uc138\uc694.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">PHP \uac80\uc0ac<\/h1>\n\n\n\n<p>Qodana 2022.1 \ubc84\uc804\uc740 PhpStorm 2022.1\uc758 \ubaa8\ub4e0 \uc2e0\uaddc \uac80\uc0ac\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \ub610\ud55c PHP \ub9b0\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud30c\uc774\ud504\ub77c\uc778\uc5d0 \uac80\uc0ac\ub97c \ucd94\uac00\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. Qodana\ub294 PhpStorm\uc5d0\uc11c \ubc88\ub4e4\ub85c \uc81c\uacf5\ub418\ubbc0\ub85c Qodana\uc5d0\uc11c \ucf54\ub4dc \uc774\uc288\uc640 \uad00\ub828\ud55c \uc54c\ub9bc\uc774 \ud45c\uc2dc\ub41c \uacbd\uc6b0 IDE\uc5d0\uc11c \uc790\uc138\ud55c \ub0b4\uc6a9\uc744 \ubc14\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/GAkqNfy12zleqr2G1ctXqLpkeDu_TW_qNIhRe_K7NiXYtNxGAJ7lbgyar3_3zjHyGjmSh0ffn8f3zcBrrwsYO8cahSgZxXvXKopqPNVW2gITRuXp7kd0azAxeoc4q4g-ylRxa7M7SVVDR99Q6A-1.png\" style=\"\"><\/p>\n\n\n\n<p><strong>\ubc30\uc5f4 \ud0a4 \uc911\ubcf5<\/strong><\/p>\n\n\n\n<p>PHP\uc5d0\uc11c <code>array_merge()<\/code>\uc758 \ub3d9\uc791\uacfc <code>+<\/code> \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud55c \ubcd1\ud569\uc740 \ub3d9\uc77c\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud55c \ubcd1\ud569 \uc2dc\uc5d0\ub294 \ud0a4\uac00 \uc911\ubcf5\ub41c \uacbd\uc6b0 \uac12\uc774 \uc7ac\uc815\uc758\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c, \ud63c\ub3d9\uc774\ub098 \ubc84\uadf8\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c Qodana for PHP\ub294 \ud574\ub2f9 \uc0ac\ub840\ub97c \uac15\uc870 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>count($array)\ub97c \ubc30\uc5f4 \uc0c9\uc778\uc73c\ub85c \uc0ac\uc6a9<\/strong><\/p>\n\n\n\n<p>\ubc30\uc5f4\uc5d0 \ud56d\ubaa9\uc744 \ucd94\uac00\ud560 \ub54c \uba85\uc2dc\uc801\uc73c\ub85c \uc0c9\uc778\uc744 \uc9c0\uc815\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. Qodana for PHP\uac00 \ubd88\ud544\uc694\ud55c <code>count()<\/code> \ud638\ucd9c\uc5d0 \ub300\ud55c \uacbd\uace0\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>pow() \ud638\ucd9c\uc744 **\ub85c \ubc14\uafb8\uae30<\/strong><\/p>\n\n\n\n<p>PHP 5.6 \ubc84\uc804\ubd80\ud130 <code>**<\/code> \uc9c0\uc218 \uc5f0\uc0b0\uc790\uac00 \uc9c0\uc6d0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Qodana for PHP\ub294 PhpStorm\uc5d0\uc11c \uae30\uc874\uc758 <code>pow()<\/code> \ud638\ucd9c\uc744 ** \uc5f0\uc0b0\uc790\ub85c \ubc14\uafc0 \uc218 \uc788\ub294 \ube60\ub978 \uc218\uc815(Alt+Enter)\uc744 \uc81c\uc548\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\uc77d\uae30 \uc804\uc6a9 \ud504\ub85c\ud37c\ud2f0<\/strong><\/p>\n\n\n\n<p>\ud074\ub798\uc2a4 \ub0b4\uc758 \uc77d\uae30 \uc804\uc6a9 \uc561\uc138\uc2a4 \uad8c\ud55c\uc774 \uc788\ub294  private \ud504\ub85c\ud37c\ud2f0\ub294 <code>readonly<\/code> \ud50c\ub798\uadf8\ub85c \uc120\uc5b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Qodana for PHP\uc5d0\uc11c \ud504\ub85c\ud37c\ud2f0 \uc120\uc5b8 \uc5c5\ub370\uc774\ud2b8\ub97c \uc81c\uc548\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>final \ud074\ub798\uc2a4 \uc0c1\uc218<\/strong><\/p>\n\n\n\n<p>PHP 8.1 \ubc84\uc804\ubd80\ud130 \uc0c1\uc218\ub97c final\ub85c \uc120\uc5b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c Qodana for PHP\ub294 \uc0c1\uc18d\ubc1b\uc9c0 \uc54a\ub294 \uc0c1\uc218\uac00 \uc788\uc73c\uba74 \uacbd\uace0\ub97c \ud45c\uc2dc\ud558\uace0, <code>final<\/code> \uc81c\uc5b4\uc790\ub97c \ucd94\uac00\ud558\ub3c4\ub85d \uc81c\uc548\ud569\ub2c8\ub2e4. PhpStorm \ud1b5\ud569\uc774 \uc9c0\uc6d0\ub418\ubbc0\ub85c, \ube60\ub974\uac8c IDE\ub85c \uc774\ub3d9\ud558\uc5ec \uc774\uc288\ub97c \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\uc5ed\uc21c\uc758 rand \ud568\uc218 \uc778\uc218<\/strong><\/p>\n\n\n\n<p>\uc774 \uac80\uc0ac\ub294 max \uc778\uc218\uac00 min\ubcf4\ub2e4 \uc791\uc744 \uc218 \uc788\ub294 rand \uacc4\uc5f4\uc758 \ud568\uc218 \ud638\ucd9c\uc744 \uac15\uc870 \ud45c\uc2dc\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, <code>rand(10, 1)<\/code> \ud638\ucd9c\uc740 <code>rand(1, 10)<\/code> \ud638\ucd9c\uacfc \ub3d9\uc77c\ud558\uc9c0\ub9cc <code>mt_rand()<\/code>\uc758 \uacbd\uc6b0 \uc778\uc218\uc758 \uc21c\uc11c\uac00 \uc5c4\ubc00\ud558\uac8c \uc9c0\uc815\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>PHPUnit\uc758 \uc798\ubabb\ub41c \ubaa8\uc758 \ud14c\uc2a4\ud2b8 \ub300\uc0c1<\/strong><\/p>\n\n\n\n<p>Qodana for PHP\ub294 \ubaa8\uc758 \uac1d\uccb4\uc5d0\uc11c private \ub610\ub294 final \uba54\uc11c\ub4dc\uc5d0 \uc561\uc138\uc2a4\ud558\ub824\ub294 \uacbd\uc6b0 \uacbd\uace0\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\ubd88\ud544\uc694\ud55c \uc81c\uc5b4\uc790<\/strong><\/p>\n\n\n\n<p>\uc774 \uc0c8\ub85c\uc6b4 \uac80\uc0ac\ub294 \uc815\uaddc\uc2dd \ud328\ud134\uc5d0 \uc0ac\uc6a9\ub418\ub098, \uc77c\uce58 \ud56d\ubaa9\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\uc9c0 \uc54a\ub294 \uc81c\uc5b4\uc790\ub97c \ubcf4\uace0\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul>\n<li>\ubb38\uc790\ub97c \ud3ec\ud568\ud558\uc9c0 \uc54a\ub294 \ud328\ud134\uc758 <code>\/i<\/code>(\ub300\/\uc18c\ubb38\uc790 \uad6c\ubd84 \uc5c6\uc74c)<\/li>\n\n\n\n<li>\ub2ec\ub7ec \uae30\ud638\ub97c \ud3ec\ud568\ud558\uc9c0 \uc54a\uac70\ub098 <code>m<\/code>(PCRE_MULTILINE) \uc81c\uc5b4\uc790\ub97c \ud3ec\ud568\ud558\ub294 \ud328\ud134\uc758 <code>\/D<\/code>( <em>PCRE_DOLLAR_ENDONLY<\/em>).<\/li>\n\n\n\n<li>\ub9c8\uce68\ud45c\ub97c \ud3ec\ud568\ud558\uc9c0 \uc54a\ub294 \ud328\ud134\uc758 <code>\/s <\/code>(\ub9c8\uce68\ud45c\ub294 \uc904 \ubc14\uafc8\uacfc \uc77c\uce58)<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294 \uc81c\uc5b4\uc790<\/strong><\/p>\n\n\n\n<p>\uc774 \uac80\uc0ac\ub294 PHP \ubc84\uc804 7.0 \uc774\uc0c1\uc5d0\uc11c \uc0ac\uc6a9\ub418\uc9c0 \uc54a\ub294 <code>\/e<\/code> \uc81c\uc5b4\uc790\uc758 \uc0ac\uc6a9 \uc704\uce58\ub97c \ubcf4\uace0\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Java \ubc0f Kotlin \uac80\uc0ac<\/h1>\n\n\n\n<p>\uc774\ubc88 \ub9b4\ub9ac\uc2a4\ub294 IntelliJ IDEA 2022.1\uc758 \uc0c8\ub85c\uc6b4 \uac80\uc0ac\ub97c Qodana for JVM\uc5d0 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4. IntelliJ IDEA \ud1b5\ud569\uc774 \uc9c0\uc6d0\ub418\ubbc0\ub85c \uc774\uc288\uac00 \ubc1c\uacac\ub418\uba74 IDE\uc5d0\uc11c \ubc14\ub85c \uc624\ub958\uac00 \uc788\ub294 \ucf54\ub4dc\ub97c \uc5f4\uc5b4 \uc2e0\uc18d\ud558\uac8c \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/Gaawael6izJr4fT60bitnNJlRD_d-fMeBUep9opM92THL1utcWW057LLRJNM9YsYgE8sS0QBaLgvUG_JU5gFQ8p_E_MicVl1Y7wTmbbIrKEDuw-e4pbjvX8FPX7D0sglKqq7aWeyEawoWvChvQ-1.png\" style=\"\"><\/p>\n\n\n\n<p>\uac00\uc7a5 \uc8fc\ubaa9\ud560 \ub9cc\ud55c \uac80\uc0ac\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\uc758\uc2ec\uc2a4\ub7ec\uc6b4 \uc5ed\ucc38\uc870<\/strong><\/p>\n\n\n\n<p>Qodana for JVM\uc740 \ub7f0\ud0c0\uc784\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc5c6\ub294 \ucc38\uc870\ub97c \ucc3e\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc740 \uc5ed\ucc38\uc870\uac00 \uc5b4\ub5a4 \uac83\uacfc\ub3c4 \uc77c\uce58\ud560 \uc218 \uc5c6\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uadf8\ub8f9\uc774 \uc5ed\ucc38\uc870 \ub2e4\uc74c\uc73c\ub85c \uc815\uc758\ub418\uac70\ub098, \ub300\uccb4 \ud56d\ubaa9\uc758 \ub2e4\ub978 \ube0c\ub79c\uce58\uc5d0 \uc815\uc758\ub41c \uacbd\uc6b0 \uc5ed\ucc38\uc870\ub97c \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>&#8216;InputStream&#8217;\uacfc &#8216;OutputStream&#8217;\uc740 &#8216;Files&#8217; \uba54\uc11c\ub4dc\ub85c \uc0dd\uc131\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/strong><\/p>\n\n\n\n<p>\uc774 \uac80\uc0ac\ub294 <code>FileInputStream<\/code> \ubc0f <code>FileOutputStream<\/code> \uc0dd\uc131\uc790\ub97c \uac01\uac01 <code>Files.newInputStream()<\/code> \ubc0f <code>Files.newOutputStream()<\/code>\uc73c\ub85c \ubc14\uafc0 \uc218 \uc788\ub294 \uacbd\uc6b0 \ubcf4\uace0\ud569\ub2c8\ub2e4. <code>Files<\/code> \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0dd\uc131\ub41c \uc2a4\ud2b8\ub9bc\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \uc2a4\ud2b8\ub9bc \uc0dd\uc131\uc790\ub97c \uc0ac\uc6a9\ud574 \uc0dd\uc131\ub41c \uc2a4\ud2b8\ub9bc\ubcf4\ub2e4 \ub354 \ud6a8\uc728\uc801\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\ub300\ub7c9 &#8216;Files.readAttributes&#8217; \ud638\ucd9c\uc744 \ub2e4\uc218\uc758 \ud30c\uc77c \uc18d\uc131 \ud638\ucd9c \ub300\uc2e0 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/strong><\/p>\n\n\n\n<p>\uc774 \uac80\uc0ac\ub294 <code>isDirectory<\/code>, <code>isFile<\/code>, <code>lastModified<\/code> \ub610\ub294 <code>length<\/code> \ub4f1 \ub2e4\uc218\uc758 java.io.File \uc18d\uc131 \uac80\uc0ac\uac00 \uc5f0\uc18d\uc73c\ub85c \uc0ac\uc6a9\ub418\ub294 \uc704\uce58\ub97c \ucc3e\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud638\ucd9c\uc740 \uc77c\uad04 <code>Files.readAttributes<\/code> \ud638\ucd9c\ub85c \ubc14\uafc0 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ub300\ub7c9 \uba54\uc11c\ub4dc\ub294 \ub2e4\uc218\uc758 \uc18d\uc131 \uac80\uc0ac\ubcf4\ub2e4 \uc131\ub2a5\uc774 \uc6b0\uc218\ud569\ub2c8\ub2e4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>\ub8e8\ud504\ub294 &#8216;List.replaceAll()&#8217;\ub85c \ub300\uccb4\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/strong><\/p>\n\n\n\n<p>\uc774 \uac80\uc0ac\ub294 <code>List.replaceAll()<\/code> \ud638\ucd9c \ud558\ub098\ub85c \ucd95\uc18c\ud560 \uc218 \uc788\ub294 \ub8e8\ud504\ub97c \ubcf4\uace0\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\uc790\ub9ac\ud45c\uc2dc\uc790\uc758 \uac1c\uc218\uac00 \ub85c\uae45 \ud638\ucd9c\uc758 \uc778\uc218 \uac1c\uc218\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4<\/strong><\/p>\n\n\n\n<p>Qodana for JVM\uc740 <code>logger.info(\"{}: {}\", key)<\/code>\uc640 \uac19\uc774 \ub85c\uac70 \uba54\uc2dc\uc9c0\uc758 <code>{}<\/code> \uc790\ub9ac\ud45c\uc2dc\uc790 \uac1c\uc218\uac00 \ub85c\uae45 \ud638\ucd9c\uc758 \ub2e4\ub978 \uc778\uc218 \uac1c\uc218\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\ub294 <code>SLF4J<\/code> \ub610\ub294 <code>Log4j 2<\/code> \ub85c\uae45 \ud638\ucd9c\uc744 \ubcf4\uace0\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\uc815\uaddc \ud45c\ud604\uc2dd\uc744 \ub2e8\uc21c\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/strong><\/p>\n\n\n\n<p>\uc774 \uac80\uc0ac\ub294 \ub2e8\uc21c\ud654 \uac00\ub2a5\ud55c \uc815\uaddc\uc2dd\uc744 \ud0d0\uc9c0\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub514\ud3f4\ud2b8 \uac80\uc0ac \ud504\ub85c\ud30c\uc77c\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud558\uac70\ub098 \uc644\uc804\ud788 \uc0c8\ub85c\uc6b4 \ud504\ub85c\ud30c\uc77c\uc744 \uc0dd\uc131\ud558\uc5ec \ubd84\uc11d \uc2dc \ud2b9\uc815 \uac80\uc0ac\ub97c \uc81c\uc678\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ucf54\ub529 \uac00\uc774\ub4dc\ub77c\uc778\uc774\ub098 \ubaa8\ubc94 \uc0ac\ub840\uc5d0 \uc911\uc694\ud55c \uac80\uc0ac\ub97c \uc801\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-yaml.html#Include+an+inspection+into+the+analysis+scope\" target=\"_blank\" rel=\"noreferrer noopener\">Qodana \ubb38\uc11c<\/a>\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694.<\/p>\n\n\n\n<p>\uc9c0\uae08\uae4c\uc9c0 Qodana 2022.1\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \uc124\uba85\ud574 \ub4dc\ub838\uc2b5\ub2c8\ub2e4! \ub9b4\ub9ac\uc2a4 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc774 \ub3c4\uc6c0\uc774 \ub418\uc5c8\uae38 \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=\"noreferrer noopener\">Twitter<\/a> \ub610\ub294 <em>qodana-support@jetbrains.com<\/em>\uc73c\ub85c \ubb38\uc758\ud574 \uc8fc\uc138\uc694.<\/p>\n\n\n\n<p><em>Qodana \ud300<\/em><\/p>\n\n\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":245690,"comment_status":"closed","ping_status":"closed","template":"","categories":[5088,4113,907],"tags":[6982,228,6976,6688,5099],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/250164"}],"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=250164"}],"version-history":[{"count":7,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/250164\/revisions"}],"predecessor-version":[{"id":632351,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/250164\/revisions\/632351"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/245690"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=250164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=250164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=250164"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=250164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}