Notice
Recent Posts
Recent Comments
Link
| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- μ€ν
- λ°μ΄ν° μ§λ ¬ν
- AIκ·Έλ¦Ό
- git μ€λ₯
- λΆν ν μ€νΈ
- JUnit5
- diary
- application.yml
- useRef
- git
- λ°±μ€
- μΌκΈ°
- λ°μ΄ν° κ±°λ²λμ€
- Live Template
- JUnit
- μ½λ©ν μ€νΈ
- μκ³ λ¦¬μ¦
- νμ΄μ¬
- Runwith
- LRS
- μ°κ³λ°©μ
- μ μ λΆμλꡬ
- extendwith
- μμ΄μΌκΈ°
- playgroundAI
- xapi
- ν μ€νΈ
- notempty
- μμ€μ½λνμ§
- serializtion
Archives
- Today
- Total
HanSol's Oak Cask
μ μ λΆμ λꡬ λ³Έλ¬Έ
π μ μ λΆμ λꡬ(Static Analysis Tool)λ?
μ μ λΆμ λꡬλ μννΈμ¨μ΄ μμ€ μ½λ, λ°μ΄νΈ μ½λ, λλ λ°μ΄λ리 μ½λλ₯Ό νλ‘κ·Έλ¨ μ€ν μμ΄ λΆμνμ¬ λ²κ·Έ, 보μ μ·¨μ½μ , μ½λ© νμ€ μλ° λ±μ μ°Ύμλ΄λ λꡬμ λλ€.
- “μ μ (Static)”: νλ‘κ·Έλ¨μ μ€ννμ§ μκ³ μ½λλ₯Ό λΆμ.
- λͺ©μ : μ½λμ νμ§ ν₯μ, 보μ κ°ν, μ μ§λ³΄μμ± κ°μ , νλ‘λμ λ¬Έμ μλ°©.
- κ°λ° μ΄κΈ° λ¨κ³μμ μ½λ λ¬Έμ λ₯Ό λ°κ²¬νμ¬ λΉμ©κ³Ό μκ°μ μ κ°.
π 1. μ μ λΆμ λꡬμ μ£Όμ κΈ°λ₯
| κΈ°λ₯ | μ€λͺ |
| π λ²κ·Έ νμ§ | NullPointerException, λ©λͺ¨λ¦¬ λμ, 무ν 루ν λ± μ μ¬μ μ€λ₯ νμ§. |
| π 보μ μ·¨μ½μ λΆμ | SQL μΈμ μ , XSS, μΈμ¦ λ¬Έμ λ± λ³΄μμ μ·¨μ½ν μ½λ μλ³. |
| π§© μ½λ© νμ€ μ€μ | μ½λ© μ€νμΌ, λ€μ΄λ° κ·μΉ, μ½λ ν¬λ§· κ²μ¬ (μ: PEP8, Google Style). |
| π λ°λ μ½λ νμ§ | μ¬μ©λμ§ μλ λ³μ, ν¨μ, μ½λ λΈλ‘ μλ³. |
| π μ±λ₯ μ΄μ νμ§ | λΉν¨μ¨μ μΈ λ£¨ν, λΆνμν λ©λͺ¨λ¦¬ μ¬μ© λ±μ μ±λ₯ λ¬Έμ μλ³. |
| π μ μ μ½λ λΆμ λ³΄κ³ μ | μ½λ νμ§, 보μ μ·¨μ½μ , 리ν©ν λ§ μ μ λ±μ ν¬ν¨ν λΆμ λ³΄κ³ μ μ 곡. |
| π― νμ κ²μ¬ | νμ λΆμΌμΉ μ€λ₯ νμ§ (μ: Pythonμ mypy, Javaμ lint). |
β‘ 2. μ μ λΆμ λꡬμ λμ λ°©μ
- ꡬ문 λΆμ(Syntax Analysis)
- μ½λλ₯Ό ν ν°ννκ³ **ꡬ문 νΈλ¦¬(AST, Abstract Syntax Tree)**λ₯Ό μμ±νμ¬ λ¬Έλ² μ€λ₯λ₯Ό νμ§.
- μ μ΄ νλ¦ λΆμ(Control Flow Analysis)
- νλ‘κ·Έλ¨μ νλ¦μ λΆμνμ¬ λΉμ μμ μΈ κ²½λ‘(μ: 무ν 루ν, 쑰건문 λ―Έμ¬μ©)λ₯Ό νμ.
- λ°μ΄ν° νλ¦ λΆμ(Data Flow Analysis)
- λ³μλ λ°μ΄ν°μ νλ¦μ μΆμ νμ¬ μ΄κΈ°νλμ§ μμ λ³μ μ¬μ©, λΆνμν λ³μ λ±μ μλ³.
- ν¨ν΄ λ§€μΉ(Pattern Matching)
- 보μ μ·¨μ½μ ν¨ν΄μ΄λ νμ€ μλ° μ¬λ‘λ₯Ό μ½λμμ κ²μ.
- νμ κ²μ¬(Type Checking)
- μ½λμ νμ μΌκ΄μ±μ κ²μ¬νμ¬ λ°νμ μ€λ₯ μλ°©.
π 3. λμ λΆμκ³Όμ μ°¨μ΄μ
νλͺ©
| μ μ λΆμ(Static Analysis) | λμ λΆμ(Dynamic Analysis) | |
| λΆμ μμ | μ»΄νμΌ μ λλ λΉλ κ³Όμ μ€ | νλ‘κ·Έλ¨ μ€ν μ€ |
| μ€ν μ¬λΆ | β νλ‘κ·Έλ¨ μ€ν μμ΄ μ½λλ§ λΆμ | β νλ‘κ·Έλ¨ μ€νμ ν΅ν΄ λ°νμ μν λΆμ |
| λͺ©μ | μ½λ νμ§ κ²μ¬, 보μ μ·¨μ½μ μ¬μ νμ§, νμ€ μ€μ νμΈ | μ±λ₯ μΈ‘μ , λ©λͺ¨λ¦¬ λμ νμ§, λμ κ²μ¦ |
| μμ λꡬ | SonarQube, ESLint, FindBugs, Pylint, PMD | JUnit, Selenium, JProfiler, Valgrind |
| μ₯μ | λΉ λ₯Έ μ€λ₯ νμ§, λΉμ© μ κ°, μ‘°κΈ° νμ§ ν보 | μ€μ μ€ν νκ²½μμμ λ¬Έμ νμ§ κ°λ₯ |
| λ¨μ | μ€ν μ€ λ°μνλ λ¬Έμ νμ§ μ΄λ €μ | μ€ν μκ°μ΄ μ€λ κ±Έλ¦¬κ³ ν μ€νΈ νκ²½ νμ |
π§° 4. μ£Όμ μ μ λΆμ λꡬ μμ
μΈμ΄ λꡬ μ΄λ¦ νΉμ§
| μΈμ΄ | λꡬ μ΄λ¦ | νΉμ§ |
| Java | SonarQube | μ½λ νμ§, 보μ λΆμ, μ§μμ ν΅ν©(CI)μ μ°κ³ κ°λ₯. |
| PMD | Java μ½λμμ λΆνμν κ°μ²΄ μμ±, λ°λ μ½λ νμ§. | |
| Python | Pylint | μ½λ μ€νμΌ κ²μ¬, λ²κ·Έ νμ§, 리ν©ν λ§ μ μ. |
| mypy | Python νμ ννΈλ₯Ό ν΅ν μ μ νμ κ²μ¬. | |
| JavaScript | ESLint | JavaScript νμ€ μ€μ κ²μ¬ λ° μ»€μ€ν°λ§μ΄μ¦ κ°λ₯. |
| C/C++ | Cppcheck | λ©λͺ¨λ¦¬ λμ, κ²½κ³ κ²μ¬, ν¬μΈν° μ€λ₯ νμ§. |
| C# | FxCop | .NET μ½λμ 보μ λ° μ±λ₯ νμ€ κ²μ¬. |
| λ€μν μΈμ΄ | Fortify | 보μ μ·¨μ½μ λΆμμ κ°μ , λν μν°νλΌμ΄μ¦μμ μ¬μ©. |
| Go | GolangCI-Lint | Go μ½λμ νΉνλ λ©ν° λΌμ΄λ κ²μ¬κΈ°. |
π 5. μ μ λΆμ λꡬμ μ₯μ κ³Ό λ¨μ
β μ₯μ
- λΉ λ₯Έ λ¬Έμ νμ§: κ°λ° μ΄κΈ° λ¨κ³μμ μ€λ₯λ₯Ό λ°κ²¬νμ¬ μμ λΉμ© μ κ°.
- 보μμ± ν₯μ: 보μ μ·¨μ½μ μ μ¬μ μ νμ§νμ¬ λ³΄μ μ¬κ³ μλ°©.
- νμ§ κ°μ : μΌκ΄λ μ½λ© νμ€ μ€μλ‘ κ°λ μ±κ³Ό μ μ§λ³΄μμ± ν₯μ.
- μλν: CI/CD νμ΄νλΌμΈμ ν΅ν©νμ¬ μ§μμ μΈ μ½λ νμ§ κ²μ¬ κ°λ₯.
β λ¨μ
- μ€ν(false positive) λ°μ κ°λ₯.
- μ€ν νκ²½ λ¬Έμ νμ§ λΆκ° (λμ λΆμ νμ).
- 볡μ‘ν μ½λλ² μ΄μ€μμλ μ±λ₯ λ³λͺ© λ°μ κ°λ₯.
π― 6. μΈμ μ μ λΆμ λꡬλ₯Ό μ¬μ©ν΄μΌ ν κΉ?
- κ°λ° μ΄κΈ° λ¨κ³: μ€κ³ ν μ½λ μμ± μ΄κΈ° λ¨κ³μμ νμ§ ν보.
- μ½λ 리뷰 νλ‘μΈμ€: PR(Pull Request) μ μ μ½λ νμ§ μ κ².
- μ§μμ ν΅ν©(CI): Jenkins, GitLab CI λ±κ³Ό μ°κ³νμ¬ μλ μ½λ κ²μ¬.
- 보μ μꡬμ¬νμ΄ λμ νλ‘μ νΈ: κΈμ΅, μλ£, κ³΅κ³΅κΈ°κ΄ λ± μμ μ± νμ νκ²½.
π 7. κ²°λ‘
μ μ λΆμ λꡬλ νλ‘κ·Έλ¨ μ€ν μμ΄ μ½λλ₯Ό λΆμνμ¬ μ μ¬μ λ¬Έμ λ₯Ό μ‘°κΈ°μ μλ³νλ λ° ν΅μ¬μ μΈ μν μ ν©λλ€.
- β λΉ λ₯Έ λ¬Έμ μλ³
- β 보μ μ·¨μ½μ μλ°©
- β μ½λ μΌκ΄μ± λ° νμ§ ν₯μ
π‘ ν μ€ μμ½:
“μ μ λΆμ λꡬλ μ½λκ° λ°°ν¬λκΈ°λ μ μ λ²κ·Έμ 보μ μ·¨μ½μ μ μ°Ύμλ΄μ΄, κ°λ°μμ μ€μλ₯Ό 미리 λ°©μ§νλ μ΅μ μ λ°©ν¨μ λλ€.” π‘β¨
'μ©μ΄, κ°λ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| νμκ΄λ¦¬ ν΄ SVN (vs Git) (0) | 2025.02.20 |
|---|---|
| λ°μ΄ν° κ±°λ²λμ€ (1) | 2025.02.20 |
| λ°μ΄ν° νμ§ (0) | 2025.02.20 |
| ESB μ°κ³λ°©μ(vs API Gateway) (0) | 2025.02.20 |
| YAML (XML vs JSON vs YAML) (0) | 2025.02.20 |