JavaScript λͺ¨λμ μν μ μ λΆμμ νμ νμ©νμΈμ. ν΅μ°°λ ₯ μλ μ½λ μΈν 리μ μ€λ‘ μ½λ νμ§μ λμ΄κ³ , μ±λ₯μ κ°μ νλ©°, κ°λ° μν¬νλ‘μ°λ₯Ό κ°μννμΈμ.
JavaScript λͺ¨λ μ μ λΆμ: μ½λ μΈν 리μ μ€ κ°ν
λμμμ΄ μ§ννλ JavaScript κ°λ° νκ²½μμ κ²¬κ³ νκ³ μ μ§λ³΄μ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆνλ €λ©΄ λ¨μν μ½λλ₯Ό μμ±νλ κ² μ΄μμ΄ νμν©λλ€. μ½λλ² μ΄μ€μ λν κΉμ μ΄ν΄, μ μ¬μ λ¬Έμ λ₯Ό μ‘°κΈ°μ μλ³νλ λ₯λ ₯, κ·Έλ¦¬κ³ μ λ°μ μΈ μ½λ νμ§μ ν₯μμν¬ λκ΅¬κ° μꡬλ©λλ€. μ¬κΈ°μ μ μ λΆμμ΄ λ±μ₯νλ©°, νλ JavaScript λͺ¨λμ λ€λ£° λ κ·Έ μ€μμ±μ λμ± μ»€μ§λλ€.
μ μ λΆμμ΄λ 무μμΈκ°?
μ μ λΆμμ μ½λλ₯Ό μ€μ λ‘ μ€ννμ§ μκ³ κ²μ¬νλ κ³Όμ μ λλ€. μμ€ μ½λ, μ μ΄ νλ¦, λ°μ΄ν° νλ¦ λ° κΈ°ν μΈ‘λ©΄μ λΆμνμ¬ μ μ¬μ μ€λ₯, μ·¨μ½μ λ° μ€νμΌ μλ°μ κ°μ§ν©λλ€. λμ λΆμ(μ: λ¨μ ν μ€νΈ μ€ν)κ³Ό λ¬λ¦¬ μ μ λΆμμ λ°νμ μ΄μ μ λ¬Έμ λ₯Ό μλ³νμ¬ λ²κ·Έλ₯Ό λ°©μ§νκ³ μ½λ μμ μ±μ ν₯μμν¬ μ μμ΅λλ€.
κ³ λλ‘ μλ ¨λκ³ μ§μΉ μ€ λͺ¨λ₯΄λ μλνλ μμ€ν μ΄ μννλ μ½λ κ²ν λΌκ³ μκ°νμμμ€. μ΄λ μ΅κ³ μ μΈκ° κ²ν μμ‘°μ°¨ λμΉ μ μλ μ€μ, νΉν ν¬κ³ 볡μ‘ν νλ‘μ νΈμμ λ°μνλ μ€μλ₯Ό μ°ΎμλΌ μ μμ΅λλ€.
JavaScript λͺ¨λμ μ μ λΆμμ΄ μ€μν μ΄μ
JavaScriptμ λͺ¨λ μμ€ν (μ£Όλ‘ ES λͺ¨λ λ° CommonJS)μ μ½λλ₯Ό ꡬμ±νκ³ μ 리νλ λ°©μμ νλͺ μ κ°μ Έμμ΅λλ€. λͺ¨λμ μ½λ μ¬μ¬μ©, μΊ‘μν λ° μ μ§λ³΄μμ±μ μ΄μ§ν©λλ€. κ·Έλ¬λ μ μ λΆμμ΄ ν΄κ²°νλ λ° λμμ΄ λ μ μλ μλ‘μ΄ κ³Όμ λ μ μν©λλ€.
- μμ‘΄μ± κ΄λ¦¬: λͺ¨λμ μμ‘΄μ±μ μ μνκΈ° μν΄ κ°μ Έμ€κΈ°(imports) λ° λ΄λ³΄λ΄κΈ°(exports)μ μμ‘΄ν©λλ€. μ μ λΆμμ λͺ¨λ μμ‘΄μ±μ΄ μ¬λ°λ₯΄κ² μ μΈλκ³ μ¬μ©λλμ§ νμΈνμ¬ λλ½λκ±°λ μλͺ»λ κ°μ Έμ€κΈ°λ‘ μΈν λ°νμ μ€λ₯λ₯Ό λ°©μ§ν μ μμ΅λλ€.
- μ½λ νμ§ λ° μ€νμΌ: λͺ¨λ μ λ°μ κ±Έμ³ μΌκ΄λ μ½λ© μ€νμΌκ³Ό λͺ¨λ² μ¬λ‘λ₯Ό μ μ©νλ κ²μ μ μ§λ³΄μμ±μ μν΄ λ§€μ° μ€μν©λλ€. μ μ λΆμ λꡬλ μ€νμΌ μλ°μ μλμΌλ‘ κ°μ§νκ³ κ°μ μ¬νμ μ μν μ μμ΅λλ€.
- 보μ μ·¨μ½μ : λͺ¨λμ μ·¨μ½ν μμ‘΄μ±μ΄λ μμ νμ§ μμ μ½λ© κ΄νμ ν¬ν¨ν κ²½μ° λ³΄μ μνμ μ΄λν μ μμ΅λλ€. μ μ λΆμμ μ΄λ¬ν μ·¨μ½μ μ μλ³νκ³ νλ‘λμ νκ²½μΌλ‘ μ μ λλ κ²μ λ°©μ§νλ λ° λμμ΄ λ μ μμ΅λλ€.
- μ±λ₯ μ΅μ ν: μ μ λΆμμ μ¬μ©λμ§ μλ μ½λ, λΉν¨μ¨μ μΈ μκ³ λ¦¬μ¦ λλ κ³Όλν λ©λͺ¨λ¦¬ μ¬μ©κ³Ό κ°μ λͺ¨λ λ΄μ μ μ¬μ μ±λ₯ λ³λͺ© νμμ μλ³ν μ μμ΅λλ€.
- νμ κ²μ¬ (TypeScript μ¬μ© μ): JavaScriptλ λμ νμ μ΄μ§λ§, TypeScriptλ μΈμ΄μ μ μ νμ μ μΆκ°ν©λλ€. TypeScript μ½λμ λν μ μ λΆμμ νμ μ€λ₯λ₯Ό μ°Ύμλ΄κ³ νμ λΆμΌμΉμ κ΄λ ¨λ λ°νμ μμΈλ₯Ό λ°©μ§ν μ μμ΅λλ€.
JavaScript λͺ¨λ μ μ λΆμμ μ΄μ
JavaScript λͺ¨λ κ°λ° μν¬νλ‘μ°μ μ μ λΆμμ ꡬννλ©΄ λ€μκ³Ό κ°μ λ€μν μ΄μ μ μ»μ μ μμ΅λλ€.
- μ‘°κΈ° μ€λ₯ κ°μ§: λ°νμ μ΄μ μ μ€λ₯λ₯Ό μλ³νκ³ μμ νμ¬ λλ²κΉ μκ°μ μ€μ΄κ³ μ½λ νμ§μ ν₯μμν΅λλ€.
- ν₯μλ μ½λ νμ§: μ½λ© νμ€ λ° λͺ¨λ² μ¬λ‘λ₯Ό μ μ©νμ¬ μ μ§λ³΄μνκΈ° μ½κ³ κ°λ μ±μ΄ λμ μ½λλ₯Ό λ§λλλ€.
- λ²κ·Έ μ κ°μ: μΌλ°μ μΈ μ€λ₯ λ° μ·¨μ½μ μ΄ νλ‘λμ νκ²½μΌλ‘ μ μ λλ κ²μ λ°©μ§ν©λλ€.
- κ°νλ 보μ: λͺ¨λ λ΄μ μ μ¬μ μΈ λ³΄μ μνμ μλ³νκ³ μνν©λλ€.
- μ±λ₯ ν₯μ: λ³λͺ© νμμ μλ³νκ³ ν΄κ²°νμ¬ μ½λ μ±λ₯μ μ΅μ νν©λλ€.
- λ λΉ λ₯Έ κ°λ° μ£ΌκΈ°: μ½λ κ²ν νλ‘μΈμ€λ₯Ό μλννκ³ λλ²κΉ μ μμλλ μκ°μ μ€μ λλ€.
- λ λμ μ½λ μ΄ν΄: μ½λλ² μ΄μ€ λ° μμ‘΄μ±μ λν ν΅μ°°λ ₯μ μ»μ΄ κ°λ°μ μμ°μ±μ ν₯μμν΅λλ€.
- ν κ° μΌκ΄μ±: λκ·λͺ¨ ν μ 체μ κ±Έμ³ μΌκ΄λ μ½λ© μ€νμΌκ³Ό κ΄νμ μ μ©νμ¬ νμ μ μ΄μ§ν©λλ€.
- κ°μνλ 리ν©ν°λ§: μ μ λΆμμ 리ν©ν°λ§ λ³κ²½ μ¬νμ΄ μλ‘μ΄ μ€λ₯λ₯Ό λ°μμν€μ§ μλλ‘ λ³΄μ₯νλ λ° λμμ΄ λ μ μμ΅λλ€.
JavaScript λͺ¨λμ μν μΈκΈ° μλ μ μ λΆμ λꡬ
JavaScript λͺ¨λμ μν νλ₯ν μ μ λΆμ λκ΅¬κ° λ§μ΄ μμ΅λλ€. λ€μμ κ°μ₯ μΈκΈ° μλ λꡬ μ€ μΌλΆμ λλ€.
- ESLint: μ½λ© μ€νμΌμ μ μ©νκ³ μ μ¬μ μ€λ₯λ₯Ό κ°μ§νλ κ³ λλ‘ κ΅¬μ± κ°λ₯νκ³ νμ₯ κ°λ₯ν λ¦°ν°μ λλ€. λ리 μ¬μ©λλ©° νλ¬κ·ΈμΈ λ° κ·μΉμ κ±°λν μνκ³λ₯Ό κ°μ§κ³ μμ΅λλ€. ESLintλ λλΆλΆμ IDE λ° λΉλ μμ€ν μ ν΅ν©λ μ μμ΅λλ€.
- TypeScript μ»΄νμΌλ¬ (tsc): TypeScriptλ₯Ό μ¬μ©ν λ μ»΄νμΌλ¬ μ체λ νμ μ€λ₯ λ° κΈ°ν λ¬Έμ λ₯Ό νμΈνκΈ° μν΄ μ μ λΆμμ μνν©λλ€.
- JSHint: μΌλ°μ μΈ JavaScript μ€λ₯ λ° μν°ν¨ν΄μ κ°μ§νλ λ° μ€μ μ λ μ€λλμμ§λ§ μ¬μ ν μ μ©ν λ¦°ν°μ λλ€.
- JSLint: Douglas Crockfordκ° λ§λ μμ‘° JavaScript λ¦°ν°μ λλ€. ESLintλ³΄λ€ μκ²¬μ΄ κ°νμ§λ§ νΉμ μ½λ© μ€νμΌμ μ μ©νλ λ° λμμ΄ λ μ μμ΅λλ€.
- SonarQube: JavaScript λ° κΈ°ν μΈμ΄λ₯Ό μ§μνλ ν¬κ΄μ μΈ μ½λ νμ§ νλ«νΌμ λλ€. μ½λ νμ§, 보μ μ·¨μ½μ λ° κΈ°ν λ¬Έμ μ λν μμΈν λ³΄κ³ μλ₯Ό μ 곡ν©λλ€.
- Code Climate: GitHub λ° κΈ°ν λ²μ κ΄λ¦¬ μμ€ν κ³Ό ν΅ν©λλ ν΄λΌμ°λ κΈ°λ° μ½λ νμ§ νλ«νΌμ λλ€. μλνλ μ½λ κ²ν λ₯Ό μ 곡νκ³ μκ° κ²½κ³Όμ λ°λ₯Έ μ½λ νμ§ λ©νΈλ¦μ μΆμ ν©λλ€.
- Snyk: μμ‘΄μ± λ΄μ 보μ μ·¨μ½μ μ μλ³νκ³ ν΄κ²°μ μν κΆμ₯ μ¬νμ μ 곡νλ λ° μ€μ μ λ‘λλ€.
- Semgrep: JavaScript λ° κΈ°ν μ¬λ¬ μΈμ΄λ₯Ό μ§μνλ λΉ λ₯΄κ³ μ€ν μμ€μΈ μ μ λΆμ λꡬμ λλ€. κ°λ°μκ° νΉμ ν¨ν΄ λ° μ·¨μ½μ μ κ°μ§νκΈ° μν μ¬μ©μ μ μ κ·μΉμ μμ±ν μ μλλ‘ ν©λλ€.
μν¬νλ‘μ°μ μ μ λΆμ ν΅ν©νκΈ°
μ μ λΆμμ μ΄μ μ κ·Ήλννλ ν΅μ¬μ μ΄λ₯Ό κ°λ° μν¬νλ‘μ°μ μννκ² ν΅ν©νλ κ²μ λλ€. λ€μμ λͺ κ°μ§ λͺ¨λ² μ¬λ‘μ λλ€.
- λꡬ ꡬμ±: νλ‘μ νΈμ μ½λ© νμ€ λ° μꡬ μ¬νμ λ§κ² μ μ λΆμ λꡬλ₯Ό ꡬμ±νλ λ° μκ°μ ν¬μνμΈμ. μ½λ μ€νμΌ, μ€λ₯ κ°μ§ λ° λ³΄μ μ·¨μ½μ μ λν κ·μΉμ μ μνμΈμ.
- νλ‘μΈμ€ μλν: λΉλ νλ‘μΈμ€ λλ CI/CD νμ΄νλΌμΈμ μ μ λΆμμ ν΅ν©νμΈμ. μ΄λ₯Ό ν΅ν΄ λ³κ²½ μ¬νμ΄ λ°μν λλ§λ€ μ½λκ° μλμΌλ‘ λΆμλλλ‘ ν μ μμ΅λλ€.
- μ¬μ μ»€λ° ν μ¬μ©: μ½λκ° λ¦¬ν¬μ§ν 리μ 컀λ°λκΈ° μ μ μ μ λΆμμ μ€ννλλ‘ μ¬μ μ»€λ° ν μ ꡬμ±νμΈμ. μ΄λ κ°λ°μκ° κ·μΉμ μλ°νλ μ½λλ₯Ό 컀λ°νλ κ²μ λ°©μ§ν©λλ€.
- IDEμ ν΅ν©: IDE νλ¬κ·ΈμΈ λλ νμ₯μ μ¬μ©νμ¬ νΈμ§κΈ°μμ μ§μ μ μ λΆμ κ²°κ³Όλ₯Ό νμνμΈμ. μ΄λ κ°λ°μκ° μ½λλ₯Ό μμ±ν λ μ¦κ°μ μΈ νΌλλ°±μ μ 곡ν©λλ€.
- λ¬Έμ μ¦μ ν΄κ²°: μ μ λΆμ κ²°κ³Όλ₯Ό μ€μν λ¬Έμ λ‘ κ°μ£Όνκ³ μ¦μ ν΄κ²°νμΈμ. κ²½κ³ λ° μ€λ₯λ₯Ό 무μνλ©΄ λμ€μ λ μ¬κ°ν λ¬Έμ λ‘ μ΄μ΄μ§ μ μμ΅λλ€.
- μ κΈ°μ μΌλ‘ κ²ν λ° μ λ°μ΄νΈ: μ μ λΆμ ꡬμ±μ΄ μ¬μ ν κ΄λ ¨μ±μ΄ μκ³ ν¨κ³Όμ μΈμ§ μ κΈ°μ μΌλ‘ κ²ν νμΈμ. μ΅μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄κ³ μ΅μ μνλ₯Ό μ μ§νκΈ° μν΄ νμμ λ°λΌ κ·μΉκ³Ό νλ¬κ·ΈμΈμ μ λ°μ΄νΈνμΈμ.
μμ: JavaScript λͺ¨λ νλ‘μ νΈλ₯Ό μν ESLint μ€μ
npmμ μ¬μ©νμ¬ JavaScript λͺ¨λ νλ‘μ νΈλ₯Ό μν ESLintλ₯Ό μ€μ νλ κΈ°λ³Έμ μΈ μμμ λλ€.
- ESLint μ€μΉ:
npm install --save-dev eslint - ESLint κ΅¬μ± μ΄κΈ°ν:
npx eslint --initESLintλ λ¦°ν κ·μΉμ ꡬμ±νκΈ° μν μ§λ¬Έμ μ μν κ²μ λλ€. Airbnb, Google λλ Standardμ κ°μ μΈκΈ° μλ μ€νμΌ κ°μ΄λλ₯Ό μ¬μ©νκ±°λ μμ λ§μ μ¬μ©μ μ μ ꡬμ±μ μμ±ν μ μμ΅λλ€.
- .eslintrc.js ꡬμ±:
`.eslintrc.js` νμΌμλ ESLint ꡬμ±μ΄ ν¬ν¨λμ΄ μμ΅λλ€. λ€μμ Airbnb μ€νμΌ κ°μ΄λλ₯Ό νμ₯νκ³ ES6 λͺ¨λμ νμ±ννλ μν ꡬμ±μ λλ€.
module.exports = { "extends": "airbnb-base", "parserOptions": { "ecmaVersion": 2020, "sourceType": "module", }, "env": { "browser": true, "node": true, "es6": true, }, "rules": { // Add or override rules here }, }; - package.jsonμ λ¦°ν
μ€ν¬λ¦½νΈ μΆκ°:
{ "scripts": { "lint": "eslint ." } } - ESLint μ€ν:
npm run lint
μ΄λ κ² νλ©΄ νλ‘μ νΈμ λͺ¨λ JavaScript νμΌμ λν΄ ESLintκ° μ€νλκ³ λͺ¨λ μλ° μ¬νμ΄ λ³΄κ³ λ©λλ€.
μ μ λΆμκ³Ό TypeScript
TypeScriptλ JavaScriptμ μμ μ§ν©μΌλ‘ μΈμ΄μ μ μ νμ μ μΆκ°ν©λλ€. μ΄λ₯Ό ν΅ν΄ TypeScript μ»΄νμΌλ¬λ μΌλ° JavaScriptμμλ κ°μ§νκΈ° μ΄λ ΅κ±°λ λΆκ°λ₯ν νμ μ€λ₯ λ° κΈ°ν λ¬Έμ λ₯Ό μ°Ύμλ΄λ ν¨μ¬ λ μ κ΅ν μ μ λΆμμ μνν μ μμ΅λλ€.
TypeScriptλ₯Ό μ¬μ©ν λ TypeScript μ»΄νμΌλ¬(tsc)κ° μ£Όλ μ μ λΆμ λκ΅¬κ° λ©λλ€. μ΄λ νμ
κ²μ¬λ₯Ό μννκ³ , μ¬μ©λμ§ μλ λ³μλ₯Ό κ°μ§νλ©°, μ½λ© νμ€μ μ μ©ν©λλ€.
TypeScriptμ ν¨κ» ESLintλ₯Ό μ¬μ©νμ¬ μ½λ μ€νμΌμ μ μ©νκ³ TypeScript μ»΄νμΌλ¬κ° κ°μ§νμ§ λͺ»νλ λ€λ₯Έ λ¬Έμ λ₯Ό κ°μ§ν μλ μμ΅λλ€. μ΄λ₯Ό μν΄μλ @typescript-eslint/parser λ° @typescript-eslint/eslint-plugin ν¨ν€μ§λ₯Ό μ€μΉν΄μΌ ν©λλ€.
npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin
κ·Έλ° λ€μ `.eslintrc.js` νμΌμ ꡬμ±νμ¬ μ΄ ν¨ν€μ§λ€μ μ¬μ©νλλ‘ μ€μ ν©λλ€.
module.exports = {
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"extends": [
"airbnb-base",
"plugin:@typescript-eslint/recommended"
],
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
},
"env": {
"browser": true,
"node": true,
"es6": true,
},
"rules": {
// Add or override rules here
},
};
λ€μν νκ²½μμμ μ μ λΆμ
μ μ λΆμμ μ¬μ©νλ νΉμ λꡬμ κΈ°μ μ κ°λ° νκ²½ λ° μμ μ€μΈ νλ‘μ νΈ μ νμ λ°λΌ λ¬λΌμ§ μ μμ΅λλ€. λ€μμ λ€μν 컨ν μ€νΈμμ μ μ λΆμμ΄ μ΄λ»κ² μ¬μ©λ μ μλμ§μ λν κ°λ΅ν κ°μμ λλ€.
- νλ‘ νΈμλ κ°λ° (λΈλΌμ°μ ): νλ‘ νΈμλ νλ‘μ νΈμμλ ESLintμ TypeScriptκ° μ μ λΆμμ μΌλ°μ μΌλ‘ μ¬μ©λ©λλ€. λν Browserify, Webpack, Rollup, Parcelκ³Ό κ°μ λꡬλ₯Ό μ¬μ©νμ¬ λͺ¨λμ λ²λ€λ§νκ³ λ²λ€λ μ½λμ λν μ μ λΆμμ μνν μ μμ΅λλ€.
- λ°±μλ κ°λ° (Node.js): ESLintμ TypeScriptλ Node.jsλ₯Ό μ΄μ©ν λ°±μλ κ°λ°μμλ λ리 μ¬μ©λ©λλ€. SonarQubeμ Code Climate κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μλ² μΈ‘ μ½λλ₯Ό λΆμν μλ μμ΅λλ€.
- λͺ¨λ°μΌ κ°λ° (React Native): ESLintμ TypeScriptλ μΉ κ°λ°κ³Ό λ§μ°¬κ°μ§λ‘ React Native νλ‘μ νΈμμλ μ¬μ©λ μ μμ΅λλ€.
- λκ·λͺ¨ μ ν리μΌμ΄μ : λκ·λͺ¨ μ ν리μΌμ΄μ μ κ²½μ° SonarQube λλ Code Climateμ κ°μ ν¬κ΄μ μΈ μ½λ νμ§ νλ«νΌμ μ¬μ©νλ κ²μ΄ μ€μν©λλ€. μ΄λ¬ν νλ«νΌμ μ½λ νμ§, 보μ μ·¨μ½μ λ° κΈ°ν λ¬Έμ μ λν μμΈν λ³΄κ³ μλ₯Ό μ 곡νλ©°, μκ° κ²½κ³Όμ λ°λ₯Έ μ§ν μν©μ μΆμ νλ λ° λμμ΄ λ μ μμ΅λλ€.
- μ€ν μμ€ νλ‘μ νΈ: λ§μ μ€ν μμ€ νλ‘μ νΈλ μ½λ νμ§ λ° μ μ§λ³΄μμ±μ 보μ₯νκΈ° μν΄ μ μ λΆμ λꡬλ₯Ό μ¬μ©ν©λλ€. νλ‘μ νΈ μ μ₯μμμ ESLint λ° κΈ°ν λꡬμ κ΅¬μ± νμΌμ μμ£Ό μ°Ύμ μ μμ΅λλ€.
κ³ κΈ μ μ λΆμ κΈ°μ
κΈ°λ³Έμ μΈ λ¦°ν λ° νμ κ²μ¬λ₯Ό λμ΄, μ μ λΆμμ λ€μκ³Ό κ°μ κ³ κΈ μμ μ μ¬μ©λ μ μμ΅λλ€.
- λ°μ΄ν° νλ¦ λΆμ: μ½λ μ 체μ λ°μ΄ν° νλ¦μ μΆμ νμ¬ null ν¬μΈν° μμ°Έμ‘° λλ λ²νΌ μ€λ²νλ‘μ κ°μ μ μ¬μ μ€λ₯λ₯Ό κ°μ§ν©λλ€.
- μ μ΄ νλ¦ λΆμ: μ½λμ μ μ΄ νλ¦μ λΆμνμ¬ λ°λ μ½λ λλ 무ν 루νμ κ°μ μ μ¬μ λ¬Έμ λ₯Ό κ°μ§ν©λλ€.
- κΈ°νΈ μ€ν: μ½λλ₯Ό κΈ°νΈμ μΌλ‘ μ€ννμ¬ λ€μν μ€ν κ²½λ‘λ₯Ό νμνκ³ μ μ¬μ μ€λ₯λ₯Ό μλ³ν©λλ€.
- 보μ λΆμ: SQL μΈμ μ λλ κ΅μ°¨ μ¬μ΄νΈ μ€ν¬λ¦½ν (XSS)κ³Ό κ°μ μ μ¬μ 보μ μ·¨μ½μ μ μλ³ν©λλ€.
μ μ λΆμμ λ―Έλ
μ μ λΆμμ λΉ λ₯΄κ² μ§ννλ λΆμΌμ λλ€. νλ‘κ·Έλλ° μΈμ΄μ κ°λ° λκ΅¬κ° λμ± μ κ΅ν΄μ§μ λ°λΌ μ μ λΆμ κΈ°μ λ λ°μ ν κ²μ λλ€. μ£Όλͺ©ν΄μΌ ν λͺ κ°μ§ νΈλ λλ λ€μκ³Ό κ°μ΅λλ€.
- λμ± μ§λ³΄λ AI κΈ°λ° λΆμ: AI λ° λ¨Έμ λ¬λμ μΈκ°μ΄ μ°ΎκΈ° μ΄λ €μΈ μ μλ λ―Έλ¬ν μ€λ₯ λ° μ·¨μ½μ μ κ°μ§ν μ μλ λμ± μ κ΅ν μ μ λΆμ λꡬλ₯Ό κ°λ°νλ λ° μ¬μ©λκ³ μμ΅λλ€.
- IDEμμ λ λμ ν΅ν©: μ μ λΆμ λꡬλ IDEμ μ μ λ ν΅ν©λμ΄ κ°λ°μκ° μ½λλ₯Ό μμ±νλ λμ μ€μκ° νΌλλ°±μ μ 곡ν©λλ€.
- 보μμ λν λ ν° μ΄μ : 보μ μνμ΄ λμ± λ§μ°ν΄μ§μ λ°λΌ μ μ λΆμ λꡬλ 보μ μ·¨μ½μ μ μλ³νκ³ μννλ λ° λ μ§μ€νκ³ μμ΅λλ€.
- ν΄λΌμ°λ κΈ°λ° μ μ λΆμ: ν΄λΌμ°λ κΈ°λ° μ μ λΆμ νλ«νΌμ μ μ λ μΈκΈ°λ₯Ό μ»κ³ μμΌλ©°, κ°λ°μκ° μννΈμ¨μ΄λ₯Ό λ‘컬μ μ€μΉνκ³ κ΅¬μ±ν νμ μμ΄ κ°λ ₯ν λΆμ λꡬμ μ κ·Όν μ μλλ‘ ν©λλ€.
νΌν΄μΌ ν μΌλ°μ μΈ ν¨μ
- κ²½κ³ λ¬΄μ: μ μ λΆμ λꡬμμ λ³΄κ³ νλ κ²½κ³ λ μ€λ₯λ₯Ό 무μνμ§ λ§μμμ€. ν΄κ²°ν΄μΌ ν μ€μν λ¬Έμ λ‘ κ°μ£Όνμμμ€.
- κ³Όλν ꡬμ±: λ무 λ§μ κ·μΉμ΄λ μ νμΌλ‘ μ μ λΆμ λꡬλ₯Ό κ³Όλνκ² κ΅¬μ±νλ κ²μ νΌνμμμ€. μ΄λ μ€ν(false positive)μΌλ‘ μ΄μ΄μ§κ³ μ½λ μμ±μ μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€.
- μλν λΆμ‘±: μ μ λΆμ νλ‘μΈμ€λ₯Ό μλννμ§ μμΌλ©΄ ν¨κ³Όκ° λ¨μ΄μ§ μ μμ΅λλ€. λ³κ²½ μ¬νμ΄ λ°μν λλ§λ€ μ½λκ° μλμΌλ‘ λΆμλλλ‘ λΉλ νλ‘μΈμ€ λλ CI/CD νμ΄νλΌμΈμ μ μ λΆμμ ν΅ν©νμμμ€.
- νμ λμ λΆμ‘±: νμ΄ μ μ λΆμμ μ€μμ±μ λ°μλ€μ΄μ§ μμΌλ©΄ ν¨κ³Όμ μΌλ‘ ꡬννκΈ° μ΄λ €μΈ κ²μ λλ€. λͺ¨λ μ¬λμ΄ μ μ λΆμμ μ΄μ μ μ΄ν΄νκ³ κ·μΉ λ° μ§μΉ¨μ μ€μνλλ‘ λ Έλ ₯ν΄μΌ ν©λλ€.
- μ λ°μ΄νΈ μν: μ μ λΆμ λꡬ λ° κ·μΉμ μ΅μ λͺ¨λ² μ¬λ‘ λ° λ³΄μ μνμ λν μ΅μ μ 보λ₯Ό μ μ§νκΈ° μν΄ μ κΈ°μ μΌλ‘ μ λ°μ΄νΈλμ΄μΌ ν©λλ€.
κ²°λ‘
JavaScript λͺ¨λ μ μ λΆμμ μ½λ νμ§μ ν₯μμν€κ³ , λ²κ·Έ μλ₯Ό μ€μ΄λ©°, 보μμ κ°ννκ³ , μ±λ₯μ λμ΄λ κ°λ ₯ν κΈ°μ μ λλ€. κ°λ° μν¬νλ‘μ°μ μ μ λΆμμ ν΅ν©ν¨μΌλ‘μ¨ λμ± κ²¬κ³ νκ³ μ μ§λ³΄μ κ°λ₯ν JavaScript μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€.
μμ κ°μΈ νλ‘μ νΈλ₯Ό μ§ννλ λκ·λͺ¨ μν°νλΌμ΄μ¦ μ ν리μΌμ΄μ μ κ°λ°νλ , μ μ λΆμμ μλΉν μ΄μ μ μ 곡ν μ μμ΅λλ€. μ μ λΆμμ νμ λ°μλ€μ΄κ³ JavaScript κ°λ°μ λ€μ λ¨κ³λ‘ λμ΄μ¬λ¦¬μΈμ!