JiwonDev

Intellij 100% ํ™œ์šฉํ•˜๊ธฐ (ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€, ์ฝ”๋“œ ์ •๋ ฌ)

by JiwonDev

๐Ÿ’ญ EffectiveJava ๋ฟŒ์‹œ๊ธฐ - Sonarlint ํ”Œ๋Ÿฌ๊ทธ์ธ

SonarQube๋Š” ์•„๋Š”์‚ฌ๋žŒ์ด ์€๊ทผ ๋งŽ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œํ’ˆ์งˆ์„ ๊ฒ€์‚ฌํ•ด์ฃผ๋Š” ์•ฑ์ด๋‹ค.

 

IntelliJ์—๋Š” SonarQube์‚ฌ์—์„œ ๋งŒ๋“  SonarLint ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์กด์žฌํ•œ๋‹ค.

๊ตณ์ด ์†Œ๋‚˜ํ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„, IntelliJ ์ž์ฒด์—์„œ ์ฝ”๋“œํ’ˆ์งˆ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๋งค๋ฒˆ Sonarlint ํƒญ์„ ๋ˆŒ๋Ÿฌ์„œ ํ™•์ธํ•˜์ง€ ์•Š๋”๋ผ๋„, Git Commit ์‹œ ์ž๋™ํ™•์ธํ•ด์ฃผ๋Š” ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค..

๋ƒ„์ƒˆ๋‚˜๋Š” ์ฝ”๋“œ๋ฅผ ์žก์•„์ค€๋‹ค. SonarQube๋Š” ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•ด์•ผํ•ด์„œ ๊ท€์ฐฎ์€๋ฐ, SonarLint๋Š” ์‰ฝ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๋‹ค.

 

๐Ÿ’ญ ์ž๋™์ •๋ ฌ & 2๋ฒˆ ๋ˆŒ๋ €์„ ๋•Œ ์ค„๋ฐ”๊ฟˆ ์‚ฌ๋ผ์ง ์ทจ์†Œ

Ctrl+ Alt+ L์„ ๋ˆ„๋ฅด๋ฉด ์ž๋™์ •๋ ฌ์ด ๋œ๋‹ค, (๊ฐœ์ธ์ ์œผ๋กœ Ctrl + Shift + S์ฒ˜๋Ÿผ ํ•œ์†์œผ๋กœ ๋ˆ„๋ฅผ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€๊ฒฝ)

๋‹ค๋งŒ ์—ฐ๋‹ฌ์•„ ๋ˆ„๋ฅด๋ฉด ๋ณด๊ธฐ์ข‹๊ฒŒ ๋‚˜๋ˆ ๋‘”๊ฑธ ๊ฐ•์ œ๋กœ ํ•œ์ค„๋กœ ๋งŒ๋“ค์–ด๋ฒ„๋ ค์„œ ์งœ์ฆ๋‚œ๋‹ค. ์ด๋Š” ์„ค์ •์—์„œ ๋Œ ์ˆ˜ ์žˆ๋‹ค.

Reformat again to remove custom line breaks๋ฅผ ๋ˆ„๋ฅด๋ฉด, ์ค„๋ฐ”๊ฟˆ์ด ์œ ์ง€๋œ๋‹ค.

์ฐธ๊ณ ๋กœ Code Style ํƒญ์—์„œ๋Š” Intellij์˜ ๊ธฐ๋ณธ ์ฝ”๋“œํฌ๋งทํŒ…์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ GoogleStyle ์‚ฌ์šฉ์ค‘.

์ฐธ๊ณ ๋กœ ์ธํ…”๋ฆฌ์ œ์ด๋Š” .editorConfig ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ํ”„๋กœ์ ํŠธ์—์„œ ํŠน์ • ์ฝ”๋“œํฌ๋งทํŒ…์„ ๊ณ ์ •ํ•ด์„œ ์“ฐ๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ์ „์— ๊ฐ•์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ž๋ฐ”์˜ CheckStyle ์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ธดํ•˜๋‹ค.(+IntelliJ Plugin Checkstyle ๋„ ์žˆ์Œ)   

 

 

๐Ÿ’ญ ์‚ฌ์šฉ์ค‘์ธ ํ•„๋“œ/ํด๋ž˜์Šค ๊ฐœ์ˆ˜ ํ‘œ์‹œ

ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค(ํ˜น์€ ํด๋ž˜์Šค๋‚˜ ํ•„๋“œ)๊ฐ€ ์–ด๋””์— ์‚ฌ์šฉ์ค‘์ธ์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, ๋ณดํ†ต Ctrl+Click์œผ๋กœ ํ™•์ธ์„ ๋งŽ์ดํ•œ๋‹ค.

๊ทผ๋ฐ ๊ทธ๋ƒฅ Code Vision ์˜ต์…˜์„ ์ผœ์ฃผ๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ˆˆ์œผ๋กœ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Code vision ๊ฒ€์ƒ‰ - Editor - Code visionํƒญ - Show hints for Usages 

 

๐Ÿ’ญ AutoImport

๋งค๋ฒˆ ์ฝ”๋“œ๋ฅผ ์ง€์šฐ๊ณ  ์‚ญ์ œํ•  ๋•Œ ๋งˆ๋‹ค Import๋ฅผ ํ•ด์ฃผ๋Š”๊ฒŒ ๊ท€์ฐฎ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

+ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋˜‘๊ฐ™์€ ์ด๋ฆ„์ด ์žˆ์–ด์„œ ๋งค๋ฒˆ ์ˆ˜๋™importํ•ด์ฃผ๋Š”๊ฒŒ ๊ท€์ฐฎ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ์ œ์™ธ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 

๋‚˜๋Š” List<...> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ž๊พธ awt.List๊ฐ€ ๊ฒ€์ƒ‰๋˜์„œ ์ด๋ฅผ ์ œ์™ธ์‹œ์ผœ์คฌ๋‹ค.

Add unambiguous imports on the fly ๋ฅผ ์„ ํƒํ•˜๋ฉด, 1๊ฐœ๋ฐ–์— ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š” ์ž๋™์œผ๋กœ import ๋œ๋‹ค.

 

์ฐธ๊ณ ๋กœ ์ด๋Š” IntelliJ Commit ์˜ต์…˜์—๋„ ์กด์žฌํ•œ๋‹ค.

Optimize imports

 

 

๐Ÿ’ญ ๋‚ด๊ฐ€๋งŒ๋“œ๋Š” ์ž๋™์™„์„ฑ- Live Template

Intellij์—์„œ๋Š” ์•ž๊ธ€์ž๋งŒ ์จ๋„ ์ž๋™์œผ๋กœ ์™„์„ฑํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด sout โžก System.out ์ด๋ผ๋˜๊ฐ€

๊ฐ€๋”์‹ ์žˆ์„๊ฑฐ๊ฐ™์€๋ฐ ์—†์–ด์„œ ๋ถˆํŽธํ•œ ์ž๋™์™„์„ฑ ์ถ•์•ฝ์–ด๋“ค์ด ์žˆ๋‹ค. ์ด๋Ÿฐ๊ฑด ์ง์ ‘ ์ถ”๊ฐ€ํ•ด์„œ ์‚ฌ์šฉํ•ด์ฃผ์ž

๋‚ด๊ฐ€ ์“ฐ๊ณ  ์žˆ๋Š” tdd ํ…œํ”Œ๋ฆฟ, ์šฐ์ธก์— ์—”ํ„ฐ๋กœ ์™„์„ฑ/ ํƒญ์œผ๋กœ ์™„์„ฑ/ ์ž๋™import๋“ฑ ์ถ”๊ฐ€์ ์ธ ์„ค์ •์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

๋‚˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ถ•์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค ์„ค์ •ํ•˜์ง€๋Š”์•Š๊ณ  ์žˆ์„๋ฒ•ํ•œ๋ฐ ์—†์œผ๋ฉด ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๊ณ ์žˆ๋‹ค.

  • tdd -> Junit ํ…Œ์ŠคํŠธ ํ…œํ”Œ๋ฆฟ
  • pf -> private final
  • pv -> public void method
  • psvm -> public static void main (๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ)

 

๐Ÿ’ญ ์ฝ”๋“œ์— ์ž๋™์œผ๋กœ final ๋ถ™์ด๊ธฐ (์ปค์Šคํ…€)

ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ๋ฐฐ์šฐ๊ณ , ์ฝ”ํ‹€๋ฆฐ ๊ฐ™์€ ๊ฑธ ๋ณด๋‹ค๋ณด๋‹ˆ ์ƒ์†ํ• ์ผ์ด ์—†๋Š” ๊ฐ์ฒด์—๋Š” final์„ ์ด์šฉํ•ด์„œ ๋ง‰์•„๋‘๊ณ ๋Š” ํ•œ๋‹ค.

๊ทผ๋ฐ ๋งค๋ฒˆ final์„ ์ž…๋ ฅํ•˜๋Š”๊ฒŒ ๋ฒˆ๊ฑฐ๋กญ๊ธฐ๋„ํ•˜๊ณ , ๊ท€์ฐฎ์€๋ฐ ์ด๋Š” Code Templates์—์„œ ์ปค์Šคํ…€ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

์ƒˆ๋กœ์šด Class ์ƒ์„ฑ์‹œ ํ…œํ”Œ๋ฆฟ

GenrPreferences/Settings > Editor > Inspections > Java > Code style issues > Local variable or parameter can be final

 

 

 

 

 

๋งŒ์•ฝ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ํŒŒ์ผ๋ง๊ณ , ํ•„๋“œ๋‚˜ ์ง€์—ญ๋ณ€์ˆ˜์—๋„ ์ž๋™์œผ๋กœ final์„ ๋ถ™์ด๊ณ  ์‹ถ๋‹ค๋ฉด

Editor - CodeStyle ->  Java -> ์šฐ์ธก ๋ฒ„ํŠผํ™•์žฅํƒญ -> Code Generationํƒญ ์„ค์ •์— ๋“ค์–ด๊ฐ€์ž.

Make generated Local final.. ์ด์ œ ๋ณ€์ˆ˜์— final์ด ์ž๋™์œผ๋กœ ๋ถ™๋Š”๋‹ค. ๋‚˜๋Š” ์‚ฌ์šฉ์•ˆํ•˜๋Š”ํŽธ

 

๐Ÿ’ญ Intellij ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์‹œ๊ฐํ™”ํ•˜๊ธฐ

IntelliJ ์ž์ฒด์— ์ฝ”๋“œ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ฒดํฌํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๊ฑด, ์˜์™ธ๋กœ ๋งŽ์ด ์•Œ๊ณ ์žˆ๋‹ค.

๊ทผ๋ฐ ๋งค๋ฒˆ ํ•˜๊ธฐ ๊ท€์ฐฎ์•„์„œ ์‚ฌ์šฉ์„ ์•ˆํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์ž๋™์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋ฅธ์ชฝ Junit ์„ค์ •์ฐฝ์€ ์šฐ์ธก ์‹คํ–‰๋ฒ„ํŠผ์˜†์— Edit Configurations๋ฅผ ๋ˆ„๋ฅด๋ฉด ์žˆ๋‹ค.
use tracing์œผ๋กœ ์ฝ”๋“œ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ธก์ •ํ•˜๋ฉด, ์กฐ๊ฑด๋ถ„๊ธฐ๋ฅผ ๋” ์ž์„ธํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฌด์กฐ๊ฑด true์ธ ์กฐ๊ฑด ๋“ฑ)

 

 

 

 

+ ์šฐ์ธก์˜ Code Coverage Options๋Š” ์šฐ์ธก ์ƒ๋‹จ์‹คํ–‰๋ฒ„ํŠผ์— Edit Configurations - Modify Optoins์— ์žˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ณ„๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ