Setting

์ฝ”ํ‹€๋ฆฐ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ ์ •๋ฆฌ ๋ฐ ํ™œ์šฉ

์ฝ”ํ‹€๋ฆฐ(Kotlin)์€ ๋‹ค์–‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ, ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์„ธ๋ถ€์ ์ธ ๋™์ž‘์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ต์…˜๋“ค์€ ์ฃผ๋กœ freeCompilerArgs๋ฅผ ํ†ตํ•ด ์ง€์ •๋˜๋ฉฐ, ์ฝ”๋“œ์˜ null-safety๋ฅผ ๊ฐ•ํ™”ํ•˜๊ฑฐ๋‚˜ ์‹คํ—˜์  ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”ํ‹€๋ฆฐ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ์ •๋ฆฌํ•˜๊ณ , ๊ฐ ์˜ต์…˜์˜ ์—ญํ• ๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

-Xjsr305=strict

-Xjsr305=strict ์˜ต์…˜์€ ์ฝ”ํ‹€๋ฆฐ์—์„œ ์ž๋ฐ”์˜ JSR-305 ์• ๋„ˆํ…Œ์ด์…˜์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ์„ค์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ํ†ตํ•ด ์ž๋ฐ”์˜ @Nonnull์ด๋‚˜ @Nullable ์• ๋„ˆํ…Œ์ด์…˜์„ ์ข€ ๋” ์—„๊ฒฉํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Strict ๋ชจ๋“œ์—์„œ๋Š” @Nullable๋กœ ํ‘œ์‹œ๋œ ์ž๋ฐ” ๋ฉ”์„œ๋“œ๋Š” ์ฝ”ํ‹€๋ฆฐ์—์„œ nullable ํƒ€์ž…์œผ๋กœ ์ทจ๊ธ‰๋˜๋ฉฐ, @Nonnull์€ non-nullable ํƒ€์ž…์œผ๋กœ ๊ฐ•์ œ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ NullPointerException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ๊ณผ ์ž๋ฐ”์˜ ์ƒํ˜ธ์šด์šฉ์„ฑ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ์„ค์ •์ž…๋‹ˆ๋‹ค.

-Xopt-in=kotlin.RequiresOptIn

ํŠน์ • API๊ฐ€ ์‹คํ—˜์ ์ด๊ฑฐ๋‚˜ ์„ ํƒ์ ์ธ ๊ธฐ๋Šฅ์ž„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์‹คํ—˜์  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” @OptIn ์• ๋„ˆํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์šฉ๋„: ์‹คํ—˜์  ๊ธฐ๋Šฅ์ด๋‚˜ ์ž ์žฌ์ ์œผ๋กœ ๋ถˆ์•ˆ์ •ํ•œ API๋ฅผ ํ”„๋กœ์ ํŠธ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

-Xinline-classes

์ฝ”ํ‹€๋ฆฐ์˜ **์ธ๋ผ์ธ ํด๋ž˜์Šค(Inline Class)**๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ์˜ต์…˜์œผ๋กœ, ์ฃผ๋กœ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ธ๋ผ์ธ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ๋ž˜ํ•‘ํ•˜๋Š” ๋น„์šฉ ์—†์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์–ด ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์šฉ๋„: ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ’์ฒ˜๋Ÿผ ๋ž˜ํ•‘ํ•˜์—ฌ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ํ™•๋ณดํ•˜๋ฉด์„œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

-Xjvm-default=all

-Xjvm-default=all ์˜ต์…˜์€ ์ฝ”ํ‹€๋ฆฐ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์˜ **๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ(default method)**๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ, ์ž๋ฐ”์™€์˜ ์ƒํ˜ธ์šด์šฉ์„ฑ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ํ†ตํ•ด ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์—ฌ๋Ÿฌ ๊ตฌํ˜„์ฒด์—์„œ ๊ณตํ†ต ๋กœ์ง์„ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

  • ์šฉ๋„: ์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋†’์ด๊ณ , ์—ฌ๋Ÿฌ ๊ตฌํ˜„์ฒด์— ๋™์ผํ•œ ๋กœ์ง์„ ํฌํ•จํ•˜๊ณ ์ž ํ•  ๋•Œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

-progressive

Progressive ๋ชจ๋“œ๋Š” ๋‹ค์Œ ์ฝ”ํ‹€๋ฆฐ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ๊ฒฝ๊ณ ํ•˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. Progressive ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด, ํ˜ธํ™˜์„ฑ ์ด์Šˆ๋ฅผ ๋ฏธ๋ฆฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์šฉ๋„: ์ตœ์‹  ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ ์ง„์ ์œผ๋กœ ๋„์ž…ํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

-Xexplicit-api=strict

์ด ์˜ต์…˜์€ ๋ชจ๋“ˆ ๋‚ด์˜ ๋ชจ๋“  API์— ๋Œ€ํ•ด ๋ช…์‹œ์  ๊ฐ€์‹œ์„ฑ ์„ค์ •์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. public, internal ๋“ฑ์˜ ๊ฐ€์‹œ์„ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ, ๋ชจ๋“ˆ์˜ API๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์šฉ๋„: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ ์‹œ ๋ช…์‹œ์ ์ธ API ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

-Xopt-in=kotlin.time.ExperimentalTime

์ฝ”ํ‹€๋ฆฐ์˜ ์‹œ๊ฐ„ ๊ด€๋ จ API๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ์˜ต์…˜์œผ๋กœ, Duration๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„ ๋‹จ์œ„ ์—ฐ์‚ฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๊ด€๋ จ ๊ธฐ๋Šฅ์€ ์—ฌ์ „ํžˆ ์‹คํ—˜์  ๋‹จ๊ณ„์— ์žˆ์œผ๋ฏ€๋กœ, ๋ช…์‹œ์ ์œผ๋กœ ์ด ์˜ต์…˜์„ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์šฉ๋„: Duration์„ ํ™œ์šฉํ•œ ์‹œ๊ฐ„ ๋‹จ์œ„ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

-Xno-param-assertions

์ฝ”ํ‹€๋ฆฐ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•œ null ์ฒดํฌ๋ฅผ ์œ„ํ•œ ์–ด์„ค์…˜์„ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์–ด์„ค์…˜์ด ์ถ”๊ฐ€๋˜์ง€ ์•Š์œผ๋ฉฐ, ์„ฑ๋Šฅ์„ ๋ฏธ์„ธํ•˜๊ฒŒ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์šฉ๋„: ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•œ null ๊ฒ€์‚ฌ ์–ด์„ค์…˜์ด ํ•„์š” ์—†์„ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

-Xjsr305=warn ๋˜๋Š” -Xjsr305=ignore

-Xjsr305=strict์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, warn์€ ์ž ์žฌ์  Null ์ด์Šˆ๋ฅผ ๊ฒฝ๊ณ ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ignore๋Š” nullability๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

  • ์šฉ๋„: ์ž๋ฐ” ์ฝ”๋“œ์˜ nullable ๊ฒ€์‚ฌ๋ฅผ ๋œ ์—„๊ฒฉํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋ฌด์‹œํ•˜์—ฌ ๊ฐœ๋ฐœ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ค„์ด๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Last updated