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