{"id":445657,"date":"2024-02-19T08:53:52","date_gmt":"2024-02-19T07:53:52","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=qodana&#038;p=445657"},"modified":"2025-09-17T11:43:39","modified_gmt":"2025-09-17T10:43:39","slug":"how-to-improve-code-quality-in-game-development-with-qodana-and-unity","status":"publish","type":"qodana","link":"https:\/\/blog.jetbrains.com\/ko\/qodana\/2024\/02\/how-to-improve-code-quality-in-game-development-with-qodana-and-unity\/","title":{"rendered":"\uac8c\uc784 \uac1c\ubc1c \uc2dc Qodana \ubc0f Unity\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucf54\ub4dc \ud488\uc9c8\uc744 \ud5a5\uc0c1\ud558\ub294 \ubc29\ubc95"},"content":{"rendered":"<p><a href=\"https:\/\/www.jetbrains.com\/ko-kr\/qodana\/\" target=\"_blank\" rel=\"noopener\">JetBrains Qodana<\/a>\ub294 \uc815\uc801 \ubd84\uc11d\uc744 CI\/CD \uc2dc\uc2a4\ud15c\uc758 \ud300 \uac80\ud1a0\uae4c\uc9c0 \ud655\uc7a5\ud574\uc8fc\ub294 \ucf54\ub4dc \ud488\uc9c8 \ud50c\ub7ab\ud3fc\uc785\ub2c8\ub2e4.<\/p>\n<p>\ud2b9\ud788 \ucf54\ub4dc \uac80\ud1a0 \ud45c\uc900 \ubc0f \ud488\uc9c8 \uac8c\uc774\ud2b8\ub97c \uc124\uc815\ud560 \ub54c \ud300\uc774 \ub354\uc6b1 \ud6a8\uacfc\uc801\uc73c\ub85c \ud611\uc5c5\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc774 \uc774 \ud50c\ub7ab\ud3fc\uc758 \uc7a5\uc810 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4. \ub610\ud55c \uc774 \ud504\ub85c\uc138\uc2a4\ub97c \ud1b5\ud574 \ud300\uc758 \ubaa8\ub4e0 \uad6c\uc131\uc6d0\uc774 \ud574\ub2f9 \ud45c\uc900\uc744 \ub354\uc6b1 \uc5c4\uaca9\ud558\uac8c \uc900\uc218\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>VR Unity \ud300\uc740 \ub9e4\ucd9c\uc744 \uc0b0 \ubaa8\uc591\uc73c\ub85c \uc2dc\uac01\ud654\ud558\ub294 \uac00\uc0c1 \ud604\uc2e4 \uc571\uc778 Archipelago\ub77c\ub294 \ub0b4\ubd80 Unity \ud504\ub85c\uc81d\ud2b8\uc5d0 Qodana\ub97c \ud65c\uc6a9\ud558\uae30\ub85c \ud588\uc2b5\ub2c8\ub2e4. Qodana\ub294 \uc804\uccb4 \ud300\uc774 \ucf54\ub4dc\ub97c \uac80\ud1a0\ud560 \uc218 \uc788\ub3c4\ub85d <a href=\"https:\/\/www.jetbrains.com\/help\/rider\/Analyzing_Coverage_Unity.html\" target=\"_blank\" rel=\"noopener\">Rider\uc758 \ubaa8\ub4e0 Unity \uac80\uc0ac<\/a>\ub97c CI \ubd84\uc11d\uc5d0 \ub3c4\uc785\ud569\ub2c8\ub2e4. \uc774 \uc811\uadfc \ubc29\uc2dd\uc774 \uc800\ud76c\uc758 \uc8fc\uc694 \uad00\uc2ec \ub300\uc0c1\uc774\uc5c8\uc2b5\ub2c8\ub2e4. Qodana\uac00 \ucd08\ubcf4\uc790\uac00 \uc0ac\uc6a9\ud558\uae30\uc5d0\ub3c4 \uc88b\uc740\uc9c0 \uc5ec\ubd80\ub97c \ud310\ub2e8\ud558\uae30 \uc704\ud574 \ucd08\ubcf4 \uac1c\ubc1c\uc790\uac00 \ubd84\uc11d\uc744 \ub3c4\uc654\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!--more--><\/p>\n<p>\uc800\ud76c\ub294 Qodana\uac00 \ucd08\ubcf4 \uac1c\ubc1c\uc790\uc5d0\uac8c \uc88b\uc740 \ud559\uc2b5 \uacbd\ud5d8\uc774 \ub418\uace0, \uc774\ub4e4\uc774 \ucf54\ub4dc \ud488\uc9c8\uc744 \ud5a5\uc0c1\uc2dc\ud0a4\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub294 \ub3c4\uad6c\uac00 \ub418\uae30\ub97c \ubc14\ub790\uc2b5\ub2c8\ub2e4. \ucd08\ubcf4 \uac1c\ubc1c\uc790\uac00 \ucd08\ubcf4 \uc774\uc0c1 \uc218\uc900\uc758 \ucf54\ub4dc\ub97c \uc81c\uacf5\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\uc5c8\uae30 \ub54c\ubb38\uc5d0 \uc131\uacfc\ub294 \uae30\ub300 \uc774\uc0c1\uc774\uc5c8\uc2b5\ub2c8\ub2e4. \ud300\uc774 \ubd84\uc11d\uc744 \uc2e4\ud589\ud558\uae30 \uc704\ud574 \ucde8\ud55c \ub2e8\uacc4 \ubc0f \uadf8 \uacfc\uc815\uc5d0\uc11c \uacbd\ud5d8\ud55c \ub0b4\uc6a9\uc740 \uc544\ub798\uc5d0 \uc790\uc138\ud788 \ub098\uc640 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">\uc804\uc81c \uc870\uac74: \ud30c\uc774\ud504\ub77c\uc778 \uc124\uc815<\/h2>\n<p>Qodana\ub97c \uc0ac\uc6a9\ud558\uae30 \uc804\uc5d0 \uc774\ubbf8 <a href=\"https:\/\/www.jetbrains.com\/ko-kr\/teamcity\/\" target=\"_blank\" rel=\"noopener\">TeamCity<\/a>\uc5d0 \ube4c\ub4dc \ud30c\uc774\ud504\ub77c\uc778\uc774 \uad6c\uc131\ub418\uc5b4 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \ud30c\uc774\ud504\ub77c\uc778\uc5d0\uc11c Unity Editor\uc758 Docker\ud654\ub41c \ubc84\uc804\uc774 \ud3ec\ud568\ub41c Linux Docker \uc774\ubbf8\uc9c0\uc758 \ub3c4\uc6c0\uc744 \ubc1b\uc544 Unity \ud504\ub85c\uc81d\ud2b8\ub97c \uad6c\ucd95\ud588\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uba54\uc778 \ube0c\ub79c\uce58\uc5d0\uc11c \ud480 \ub9ac\ud018\uc2a4\ud2b8\ub97c \uc0dd\uc131\ud560 \ub54c\ub9c8\ub2e4 \ud504\ub85c\uc81d\ud2b8\uc758 APK\uac00 \uad6c\ucd95\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Qodana \ubd84\uc11d \ubcf4\uace0\uc11c\ub97c \uc5bb\uae30 \uc704\ud574 \ub2e4\uc74c \ub2e8\uacc4\ub97c \uc218\ud589\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>1. <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/cloud-projects.html\" target=\"_blank\" rel=\"noopener\">Qodana Cloud\uc5d0\uc11c \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131<\/a>\ud569\ub2c8\ub2e4.<\/p>\n<p>2. \uc194\ub8e8\uc158\uc744 \uc0dd\uc131\ud558\uace0 \ud544\uc694\ud55c \ubaa8\ub4e0 \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n<p>Unity \ud504\ub85c\uc81d\ud2b8\uc5d0\ub294 \uc77c\ubc18\uc801\uc73c\ub85c C# \uc194\ub8e8\uc158\uacfc \ud504\ub85c\uc81d\ud2b8 \ud30c\uc77c\uc774 \ud3ec\ud568\ub418\uc9c0 \uc54a\uc73c\uba70, Qodana\uac00 \uc774\ub97c \ucc98\ub9ac\ud558\ub824\uba74 \uc774\ub7ec\ud55c \ud30c\uc77c\uc744 \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \ube4c\ub4dc \ud658\uacbd\uc5d0 \ud574\ub2f9 .NET SDK\ub97c \uc124\uce58\ud558\uace0 \uac01 \ube4c\ub4dc\uc5d0\uc11c \ub2e4\uc74c \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc2e4\ud589\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\">#!\/usr\/bin\/env bash\n\n${UNITY_EXECUTABLE:-xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' unity-editor} \n\n\u00a0-batchmode -quit -projectPath $UNITY_DIR -executeMethod Packages.Rider.Editor.RiderScriptEditor.SyncSolution<\/pre>\n<p>3. \ud504\ub85c\uc81d\ud2b8\uc758 \uc800\uc7a5\uc18c \ub8e8\ud2b8\uc5d0 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-yaml.html\" target=\"_blank\" rel=\"noopener\"><strong>qodana.yaml<\/strong><\/a> \ud30c\uc77c\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\">ide: QDNET\n\nversion: \"1.0\"\n\nbaseProfile: \"qodana.recommended\"<\/pre>\n<p>4. Qodana\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub3c4\ub85d \ud30c\uc774\ud504\ub77c\uc778 \uad6c\uc131\uc5d0\uc11c QODANA_TOKEN\uc774\ub77c\ub294 \ud658\uacbd \ubcc0\uc218\ub97c \uc124\uc815\ud569\ub2c8\ub2e4. \ud1a0\ud070\uc740 Qodana Cloud\uc758 \ud504\ub85c\uc81d\ud2b8 \ud398\uc774\uc9c0\uc5d0\uc11c \uac00\uc838\uc640\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>5. Qodana \ubd84\uc11d\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub9de\ucda4\ud615 \ube4c\ub4dc \ud30c\uc774\ud504\ub77c\uc778\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\uc5c8\uae30 \ub54c\ubb38\uc5d0 Qodana\ub97c \ud638\uc2a4\ud305\ud558\uae30 \uc704\ud574 \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud558\ub294 \ub300\uc2e0 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/quick-start.html#quickstart-run-using-cli\" target=\"_blank\" rel=\"noopener\">Qodana CLI<\/a>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub124\uc774\ud2f0\ube0c \ubaa8\ub4dc(\ube4c\ub4dc \uc2dc\uc2a4\ud15c\uc5d0\uc11c)\ub85c Qodana\ub97c \uc2dc\uc791\ud558\uae30\ub85c \uacb0\uc815\ud588\uc2b5\ub2c8\ub2e4. Linux \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uadf8\ub807\uac8c \ud558\ub824\uba74 Qodana CLI\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud574\uc57c \ud588\uc2b5\ub2c8\ub2e4. GitHub, GitLab \ub610\ub294 Azure DevOps \ud30c\uc774\ud504\ub77c\uc778\uc5d0\uc11c\ub294 \uc774\uac83\uc774 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Qodana\uc640 \ub2e4\uc591\ud55c CI \uc2dc\uc2a4\ud15c\uc758 \ud1b5\ud569\uc5d0 \uad00\ud574\uc11c\ub294 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/ci.html\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30<\/a>\uc5d0\uc11c \uc790\uc138\ud788 \uc54c\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubd84\uc11d\uc744 \uc62c\ubc14\ub974\uac8c \uc2e4\ud589\ud558\uae30 \uc704\ud574\uc11c\ub294 \ud504\ub85c\uc81d\ud2b8\uac00 \uc704\uce58\ud55c \ud3f4\ub354\uc5d0\uc11c \uc544\ub798 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud574\uc57c \ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \ucd9c\ub825 \ubc0f \ubcf4\uace0\uc11c\uac00 \/report \ud3f4\ub354\uc5d0 \uc0dd\uc131\ub429\ub2c8\ub2e4. \ud3b8\uc758\ub97c \uc704\ud574 \ube4c\ub4dc \uc544\ud2f0\ud329\ud2b8\ub85c \ubcf4\uace0\uc11c\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub3c4\ub85d \ube4c\ub4dc \ud30c\uc774\ud504\ub77c\uc778 \uad6c\uc131\uc744 \uc218\uc815\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\">curl -fsSL https:\/\/jb.gg\/qodana-cli\/install | bash\n\nqodana scan -i $(pwd) -o \/report<\/pre>\n<p>\uacb0\uacfc\uc801\uc73c\ub85c, \uba54\uc778 \ube0c\ub79c\uce58\uac00 \ubcc0\uacbd\ub420 \ub54c\ub9c8\ub2e4 APK \ud30c\uc77c\ubfd0\ub9cc \uc544\ub2c8\ub77c \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \ubcf4\uac70\ub098 Rider\uc5d0\uc11c \uc5f4 \uc218 \uc788\ub294 Qodana Cloud\uc758 \ubcf4\uace0\uc11c\ub3c4 \uc5bb\uc744 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Qodana \ubcf4\uace0\uc11c \uc124\uc815<\/h2>\n<p>\ucc98\uc74c \ubc1b\uc558\ub358 \ubcf4\uace0\uc11c\uc5d0\ub294 \uac70\uc758 33,000\uac1c\ub098 \ub418\ub294 \ubb38\uc81c\uc810\uc774 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uad00\ub828\uc774 \uc5c6\ub294 \uac83\ub4e4\ub3c4 \uc788\uc73c\ub2c8 \ub108\ubb34 \ub180\ub77c\uc9c0 \ub9c8\uc138\uc694! \uae30\ubcf8 \ud504\ub85c\ud30c\uc77c\ub85c \ubd84\uc11d\uc744 \uc2dc\uc791\ud588\uc744 \ub54c <a href=\"https:\/\/assetstore.unity.com\/\" target=\"_blank\" rel=\"noopener\">Asset Store<\/a>\uc758 \ubaa8\ub4e0 Unity \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \uc560\uc14b\uc5d0\uc11c \uc2e4\uc218\ub85c \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/CJOLULSrg8pKVQzZ4GpMPdzw-TubXwhR4XnmcK2PpcweHEsNhDk0ig2GWIXGu_HJUIwym8OTFJ79RLASe7HCayLeft0n6ZzjqZV9O4AgUp1QQxw005qbYNCBwb131IiRFRxJ7fggUPSbzwy9Ci-c-A-2.png\" alt=\"\ucd08\uae30 Qodana \ubd84\uc11d \" \/><figcaption class=\"wp-element-caption\">\uccab \ubcf4\uace0\uc11c\uc785\ub2c8\ub2e4.<\/figcaption><\/figure>\n<p>UI \ub0b4\uc5d0\uc11c Scripts \ud3f4\ub354\ub97c \uc120\ud0dd\ud588\uc744 \ub54c \uc57d 400\uac1c\uc758 \ubb38\uc81c\uac00 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc5ec\uc804\ud788 \ub9ce\uc544 \ubcf4\uc600\uc9c0\ub9cc \uc870\uae08 \ub354 \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uae30\ub85c \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/Rh9dBg9k93HH9R9DjZKK8jth7phFLoIXVffAcx72aAgTOeOiQFH9wW88NBO8qI55kHh5oCG__Du7ytNob-Yt3jNcXfirxJPJs7WXZoCL1wUmGrtQ6c8jVfayUWY8Xz0-I9_RN-4jbto4_0ma9AwTCw-2.png\" alt=\"\" \/><\/p>\n<figcaption class=\"wp-element-caption\">\ud3f4\ub354 \ud544\ud130\uac00 \uc801\uc6a9\ub41c \uccab \ubc88\uc9f8 \ubcf4\uace0\uc11c\uc785\ub2c8\ub2e4.<\/figcaption>\n<\/figure>\n<p>\uc774 \ubcf4\uace0\uc11c\ub85c \uc791\uc5c5\ud560 \uc218 \uc788\uc5c8\uc9c0\ub9cc IDE\uc5d0\uc11c \uc5f4\ub824\uace0 \ud558\uba74 \uc5ec\uc804\ud788 32,856\uac1c\uc758 \ubb38\uc81c\uac00 \uc788\ub294 \uc804\uccb4 \ubcf4\uace0\uc11c\uac00 \uc81c\uacf5\ub418\ubbc0\ub85c \ubcc4 \ub3c4\uc6c0\uc774 \ub418\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \uc804\uccb4 \ud504\ub85c\uc81d\ud2b8\uac00 \uc544\ub2cc \ucf54\ub4dc \ubca0\uc774\uc2a4\uc5d0 \ub300\ud574\uc11c\ub9cc \ubd84\uc11d\uc744 \uc218\ud589\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ud504\ub85c\ud30c\uc77c\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c, \ud504\ub85c\ud30c\uc77c\uc5d0 \ub300\ud55c \ub9c1\ud06c\ub9cc \ud3ec\ud568\ud558\ub3c4\ub85d <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-yaml.html\" target=\"_blank\" rel=\"noopener\">qodana.yaml<\/a> \ud30c\uc77c\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\uc5ec \uc791\uc5c5\ud558\uae30\uac00 \ud6e8\uc52c \uc27d\uac8c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\">ide: QDNET\n\nversion: 1.0\n\nprofile:\n\n\u00a0\u00a0\u00a0path: profile.yaml\n\nqodana.yaml<\/pre>\n<p><a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/custom-profiles.html\" target=\"_blank\" rel=\"noopener\">profile.yaml<\/a> \ud30c\uc77c\uc5d0\ub294 \uc804\uccb4 \ubd84\uc11d\uc744 \uc704\ud55c \uac80\uc0ac\uac00 \ud3ec\ud568\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Scripts \ud3f4\ub354\ub9cc \ubcf4\ub824\uace0 \ud588\uc73c\ubbc0\ub85c \uc774\ub97c \uc704\ud574 <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/scope-language-syntax-reference.html\" target=\"_blank\" rel=\"noopener\">\ubc94\uc704<\/a>\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\">baseProfile: \"qodana.recommended\"\n\ninspections:\n\n\u00a0\u00a0- group: ALL\n\n\u00a0\u00a0\u00a0\u00a0ignore:\n\n- \"scope#!file:Assets\/Scripts\/\/*\"\n\nprofile.yaml<\/pre>\n<h2 class=\"wp-block-heading\">\ubcf4\uace0\uc11c \uc791\uc5c5<\/h2>\n<p>\uc62c\ubc14\ub978 \ud504\ub85c\ud30c\uc77c\uc744 \uc120\ud0dd\ud558\uace0 \uc62c\ubc14\ub978 \ubcf4\uace0\uc11c\ub97c \ubc1b\uc740 \ud6c4\uc5d0 \uacbd\uace0\ub97c \ub354 \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.jetbrains.com\/help\/rider\/Inspecting_Code_in_Specific_Scope.html#run-inspections-with-qodana\" target=\"_blank\" rel=\"noopener\">Qodana \ubcf4\uace0\uc11c\ub97c Rider\uc640 \uc5f0\uacb0\ud558\ub294 \ubc29\ubc95<\/a>\uc5d0 \uad00\ud574\uc11c\ub294 \ubb38\uc11c\uc5d0\uc11c \uc790\uc138\ud788 \uc54c\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc758 \uacbd\uace0\ub294 <em>Redundant using directive(\ubd88\ud544\uc694\ud55c using \uc9c0\uc2dc\ubb38)<\/em> \ub610\ub294 <em>Namespace does not correspond to file location(\ub124\uc784\uc2a4\ud398\uc774\uc2a4\uac00 \ud30c\uc77c \uc704\uce58\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc74c)<\/em>\uacfc \uac19\uc740 \uad70\ub354\ub354\uae30 \ubc0f \uc81c\uc57d \uc870\uac74 \uc704\ubc18\uc744 \uc54c\ub824\uc8fc\ub294 \uac83\ub4e4\uc774\uc5c8\uc2b5\ub2c8\ub2e4.<br \/>\uc774\ub7ec\ud55c \ubb38\uc81c\ub294 IDE\uc758 <em>Context Actions(\ucee8\ud14d\uc2a4\ud2b8 \uc561\uc158)<\/em>\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba87 \ubc88\uc758 \ud074\ub9ad\ub9cc\uc73c\ub85c \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/QjnHp5jwklg0h8VG2_ajx8lXopcjRtsGa8lEXXfbfL1rgh_a5udaecbbz6gmtgBZl24e2cKVJONjWAPcJN6M7b-bJKAh-UgQlu4sNophkwqqE9Su1qjrGXyMnn-hDONWUnV0oS0j9wteyTTwl4PTg-2.png\" alt=\"\" \/><\/p>\n<figcaption class=\"wp-element-caption\"><em>&#8220;Using directive is not required by code and can be safely removed&#8221;(\ucf54\ub4dc\uc5d0 using \uc9c0\uc2dc\ubb38\uc774 \ud544\uc694\ud558\uc9c0 \uc54a\uc73c\uba70 \uc548\uc804\ud558\uac8c \uc81c\uac70\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4)\uc640 \uac19\uc740 \ubb38\uc81c \ud574\uacb0<\/em><\/figcaption>\n<\/figure>\n<p>\uad70\ub354\ub354\uae30 \ubc0f \uc81c\uc57d \uc870\uac74 \uc704\ubc18 \uc678\uc5d0 \uc218\ub9ce\uc740 \uacbd\uace0\ub294 \uad6c\ubb38 \uc624\ub958 \ub610\ub294 \uc77c\ubc18\uc801\uc778 \uad00\ud589 \uc704\ubc18\uc5d0 \uad00\ud55c \uac83\uc774\uc5c8\uc2b5\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 private\uc73c\ub85c \uc124\uc815\ud560 \uc218 \uc788\ub294 private \uc81c\uc5b4\uc790\ub098 \uba64\ubc84\uac00 \ub204\ub77d\ub418\uc5b4 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc73c\ub85c, Unity \ubc0f Unity \uc131\ub2a5\ub9cc \uac80\uc0ac\ud558\ub294 \ubcc4\ub3c4\uc758 \uce74\ud14c\uace0\ub9ac\ub97c \uc120\ud0dd\ud588\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubb38\uc81c\ub294 <em>Context Actions(\ucee8\ud14d\uc2a4\ud2b8 \uc561\uc158)<\/em>\uc744 \uc0ac\uc6a9\ud558\ub294 IDE\uc758 \ube60\ub978 \uc218\uc815\uc744 \ud1b5\ud574 \ud574\uacb0\ud560 \uc218 \uc788\uc73c\uba70 \uac1c\uc120\uc744 \ud1b5\ud574 \ucf54\ub4dc \ud6a8\uc728\uc131\uacfc \uac00\ub3c5\uc131\uc744 \ub192\uc77c \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/nW2S4rzjQ81K9NAYWSKLRlhvstg6gWhd-Mu74Dm1eqHln8kaz-csVL0SZ5qvAlDrtXCkdX8zdEA50_UswHurtDvniserL3QKXZBGkpw6kcJ0yQIcnT5dcPP75p4reVTU_Q5kRfeYn18RRa9FDxZrRA-2.png\" alt=\"\" \/><\/p>\n<figcaption class=\"wp-element-caption\">Unity \uc131\ub2a5 \ubb38\uc81c.<\/figcaption>\n<\/figure>\n<p><em>Expensive method invocation(\ubd80\ud558\uac00 \ub192\uc740 \uba54\uc11c\ub4dc \ud638\ucd9c)<\/em>\uacfc \uac19\uc740 \ubb38\uc81c\uc758 \uacbd\uc6b0, \uc77c\ubd80 \ucf54\ub4dc\ub97c \ub2e4\uc2dc \uc791\uc131\ud574\uc57c \ud588\uc2b5\ub2c8\ub2e4. \uadf8 \uc911 \uac00\uc7a5 \uc77c\ubc18\uc801\uc778 \uac83\uc740 <a href=\"https:\/\/github.com\/JetBrains\/resharper-unity\/wiki\/Avoid-usage-of-GetComponent-methods-in-performance-critical-context\" target=\"_blank\" rel=\"noopener\">\uc5ec\uae30<\/a>\uc5d0 \uc124\uba85\ub41c \ub300\ub85c \uc77c\ubc18\uc801\uc73c\ub85c GetComponent \uba54\uc11c\ub4dc\ub97c \uc131\ub2a5\uc774 \uc911\uc694\ud55c \ucee8\ud14d\uc2a4\ud2b8\uc5d0\uc11c Awake \ub610\ub294 Start \uc774\ubca4\ud2b8 \ud568\uc218\ub85c \uc774\ub3d9\ud558\ub294 \uac83\uacfc \uad00\ub828\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">\ubca0\uc774\uc2a4\ub77c\uc778 \uc791\uc5c5<\/h2>\n<p>\uc810\uc810 \ud574\uacb0\ud558\uae30 \ub354 \ubcf5\uc7a1\ud55c \ubb38\uc81c\uc5d0 \uc9c1\uba74\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, BuildCommand.cs \ud074\ub798\uc2a4\uc640 PerformBuild \uba54\uc11c\ub4dc\uac00 \ube4c\ub4dc\ub97c \uc0dd\uc131\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\uc5c8\uc9c0\ub9cc Unity\uc5d0\uc11c\ub294 \ud638\ucd9c\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc73c\ub85c, \uc774 \uacbd\uc6b0 DateContext.cs\uc5d0 \ubd80\ud558\uac00 \ub192\uc740 \uac83\uc73c\ub85c \ud45c\uc2dc\ub41c \uba54\uc11c\ub4dc \ud638\ucd9c\uc774 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubb38\uc81c\ub294 \ud504\ub85c\uc81d\ud2b8 \ub808\uc774\uc544\uc6c3\uc5d0 \ubb38\uc81c\uac00 \ub418\uc9c0 \uc54a\ub294 \uac83\uc73c\ub85c \uac04\uc8fc\ub418\uc5c8\uae30 \ub54c\ubb38\uc5d0 \uc774\ub97c \ubca0\uc774\uc2a4\ub77c\uc778\uc5d0 \ub123\uae30\ub85c \ud588\uc2b5\ub2c8\ub2e4. \uc544\ub798 \uadf8\ub9bc\uc740 \uc218\uc815\ud558\uc9c0 \uc54a\uae30\ub85c \uacb0\uc815\ud55c \uc624\ub958 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" style=\"aspect-ratio: 1.1355571327182399; width: 840px; height: auto;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/YgMmQFZvJiVJoPaMqJ8AR0Nt0echjOQViWTYDZE9sm3DSHFQKwkzLlWAzDF0MJSpajJnYQ68-SVoEdTsEkqrh9K1lwwXxkukXh7x4JhuvT-JRMAHwylvycMTxTpYi7RW8N1Xn-VuPN_ymO9YllbQLQ-2.png\" alt=\"\" \/><\/p>\n<figcaption class=\"wp-element-caption\">\ud574\uacb0\ub418\uc9c0 \uc54a\uc740\/\uc218\uc815\ub418\uc9c0 \uc54a\uc740 \uc624\ub958.<\/figcaption>\n<\/figure>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/0UZupTm9CPoXfwDw8Ntnpt2VVmGV7OSPFtEKhKF8RtvVbvqayXFTJ-hfMBo0DK7K8tOTX7gpAp1iS0e3zW2cq_3uVRULskPI-L__FFpK6AFvWyYM-m2Dr23SBpkWvSP4zwUIkQEqNIT_w9sxRJiNg-2.png\" alt=\"\" \/><\/p>\n<figcaption class=\"wp-element-caption\">\uc218\uc815\ud560 \ud544\uc694\uac00 \uc5c6\ub294 \uae30\uc220\uc801 \ubd80\ucc44\ub098 \ubb38\uc81c\ub97c \ubca0\uc774\uc2a4\ub77c\uc778\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/figcaption>\n<\/figure>\n<p>\ud504\ub85c\uc81d\ud2b8\uc5d0 \ubca0\uc774\uc2a4\ub77c\uc778\uc744 \ucd94\uac00\ud558\uae30 \uc704\ud574 Qodana Cloud\uc5d0\uc11c <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-sarif-output.html#Report+structure\" target=\"_blank\" rel=\"noopener\">qodana.sarif.json<\/a> \ud30c\uc77c\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc5ec \ub8e8\ud2b8 \ub514\ub809\ud130\ub9ac\ub85c \uc62e\uacbc\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" style=\"aspect-ratio: 5.144694533762058; width: 840px; height: auto;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/DTU1l3t04U1Xgo-wHKsJne5ZVpzWa5j3Ramy3k-_i8xUiqJ7aO7n6mH2JadB0P-qZHz3sw-WhIxeWYZFtBIYn0zzdX2m75Gr_gwHGIvV9aw7rdnTFNnzEIGFvd4g0Og2ujdSw_ec1yIxK2eBBRrQdA-2.png\" alt=\"\" \/><\/p>\n<figcaption class=\"wp-element-caption\">\ud504\ub85c\uc81d\ud2b8\uc5d0 \ubca0\uc774\uc2a4\ub77c\uc778\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/figcaption>\n<\/figure>\n<p>\uadf8\ub7f0 \ub2e4\uc74c \ube4c\ub4dc \ub2e8\uacc4\uc5d0 \ubca0\uc774\uc2a4\ub77c\uc778 \ub9e4\uac1c\ubcc0\uc218\ub97c \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\">curl -fsSL https:\/\/jb.gg\/qodana-cli\/install | bash\n\nqodana scan -i $(pwd) -o \/report --baseline .\/qodana.sarif.json\n\nBaseline parameter.<\/pre>\n<p>\uc774\ub54c\ubd80\ud130\ub294 \uc0c8\ub85c\uc6b4 \ubb38\uc81c\uc5d0 \ub300\ud55c \ubcf4\uace0\ub9cc \ubc1b\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ub2f9\ubd84\uac04\uc740 \ubaa8\ub450 \ubb38\uc81c\uac00 \uc5c6\uc5b4 \ubcf4\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/SxfGYCLBE3IE1XeDmP0KdZde-5XdcGAxqAPX2EEiCWHHmgD1A126bAdgKKImD1tFIrGXX2lM9u3O3uqXEjEwc-a6B8uVEVc4T1dFtTHlfFTlyomGPb6wZfGeYXveEJXvRtBOYCnz5SajzwzTHTevw-2.png\" alt=\"\" \/><\/p>\n<figcaption class=\"wp-element-caption\">\uc0c8\ub85c\uc6b4 \uacb0\uacfc.<\/figcaption>\n<\/figure>\n<h2 class=\"wp-block-heading\">\uacb0\uacfc\ub97c \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uba74<\/h2>\n<p>\uc774 \uc2e4\ud5d8 \uacfc\uc815\uc5d0\uc11c \uc6b0\ub9ac\ub294 TeamCity \ud30c\uc774\ud504\ub77c\uc778\uc5d0 Qodana\ub97c \ucd94\uac00\ud558\uace0, \ud504\ub85c\ud30c\uc77c\uc744 \uad6c\uc131\ud558\uace0, \uc5ec\ub7ec \ubd84\uc11d \ubcf4\uace0\uc11c\ub97c \ubc1b\uace0, \ud504\ub85c\uc81d\ud2b8\uc758 \uac70\uc758 \ubaa8\ub4e0 \ubb38\uc81c\ub97c \ud574\uacb0\ud588\uc2b5\ub2c8\ub2e4!<\/p>\n<p>Qodana\ub97c \uc0ac\uc6a9\ud558\uba74 \ud504\ub85c\uc81d\ud2b8\uc758 \ucf54\ub4dc\ub97c \uac80\ud1a0\ud558\uace0 \uc774\ub97c \ud6e8\uc52c \ub354 \uae54\ub054\ud558\uace0 \ud6a8\uacfc\uc801\uc73c\ub85c \ub9cc\ub4dc\ub294 \ub370 \ud070 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.\u00a0 Qodana\uc758 \uc9c4\uc815\ud55c \ud798\uc740 \ud300 \ud611\uc5c5\uc5d0\uc11c \ube44\ub86f\ub418\uc9c0\ub9cc \ud300\uc774 \uc815\uc801 \ucf54\ub4dc \ubd84\uc11d\uc744 \uad6c\ud604\ud558\ub294 \ub370 \ub3c4\uc6c0\uc744 \uc8fc\ub294 \uadc0\uc911\ud55c \ub3c4\uad6c\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4. \ud2b9\ud788 JetBrains IDE(\uc774 \uacbd\uc6b0 Rider) \ub610\ub294 VS Code(Qodana VS Code \ud655\uc7a5 \ud504\ub85c\uadf8\ub7a8 \ud3ec\ud568)\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \ub354\uc6b1 \uadf8\ub807\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.jetbrains.com\/ko-kr\/qodana\/\" target=\"_blank\" rel=\"noopener\">Qodana<\/a>\ub97c \uc124\uce58\ud558\uace0 \uc774 <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/getting-started.html\" target=\"_blank\" rel=\"noopener\">\uc9c0\uce68<\/a>\uc5d0 \ub530\ub77c \uc9c1\uc811 \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694. \uc800\ud76c\uac00 \uc218\ud589\ud55c \uc791\uc5c5\uc5d0 \ub300\ud574 \ub354 \uc54c\uace0 \uc2f6\uc73c\uba74 \uc5b8\uc81c\ub4e0\uc9c0 \uc758\uacac\uc744 \ub0a8\uaca8\uc8fc\uc138\uc694.<\/p>\n<p><strong>\uac8c\uc2a4\ud2b8 \uae30\uace0\uc790:<\/strong> Ekaterina Trukhan, VR Unity \uac1c\ubc1c\uc790<\/p>\n<p><strong>Qodana \ud300\uc758 \uba54\uc2dc\uc9c0<\/strong><\/p>\n<p>Unity \ubc0f Qodana\ub97c \uc2dc\ud5d8\ud574\uc900 Ekaterina\uc640 \ud300\uc5d0\uac8c \uac10\uc0ac\ub4dc\ub9bd\ub2c8\ub2e4. Qodana\ub97c \uc2dc\uc791\ud558\ub294 \ubc29\ubc95\uc774 \uad81\uae08\ud55c \ubd84\ub4e4\uc774 \uacc4\uc2dc\ub2e4\uba74 \uc544\ub798 \ub313\uae00\uc744 \ud1b5\ud574 \uc54c\ub824\uc8fc\uc2dc\uac70\ub098 <a href=\"https:\/\/youtrack.jetbrains.com\/issues?q=project:%20Qodana%20\" target=\"_blank\" rel=\"noopener\">Qodana\uc758 YouTrack<\/a> \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc774\uc288\ub97c \uc62c\ub824\uc8fc\uc138\uc694. \ub354 \ub9ce\uc740 \uc5c5\ub370\uc774\ud2b8\ub97c \ubcf4\ub824\uba74 <a href=\"https:\/\/www.linkedin.com\/showcase\/qodana\/\" target=\"_blank\" rel=\"noopener\">LinkedIn<\/a> \ub610\ub294 <a href=\"https:\/\/twitter.com\/Qodana\" target=\"_blank\" rel=\"noopener\">X(\uc774\uc804 Twitter)<\/a>\uc5d0\uc11c \uc800\ud76c\ub97c \ud314\ub85c\uc6b0\ud558\uc138\uc694.<\/p>\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>60\uc77c \ubb34\ub8cc \ud3c9\uac00\ud310 \uc0ac\uc6a9\ud574 \ubcf4\uae30<\/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\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":432914,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992,4089,1713,890],"tags":[1433,1620,6470,1978,1941],"cross-post-tag":[6630],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/445657"}],"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=445657"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/445657\/revisions"}],"predecessor-version":[{"id":620344,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/qodana\/445657\/revisions\/620344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/432914"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=445657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=445657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=445657"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=445657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}