pattern-detection

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Pattern Detection

模式检测

When to use this skill

何时使用此技能

  • 코드 리뷰: 문제 패턴 사전 감지
  • 보안 검토: 취약점 패턴 스캔
  • 리팩토링: 중복 코드 식별
  • 모니터링: 이상 징후 알림
  • 代码审查:提前检测问题模式
  • 安全审查:扫描漏洞模式
  • 重构:识别重复代码
  • 监控:异常迹象告警

Instructions

操作步骤

Step 1: 코드 스멜 패턴 감지

步骤1:代码坏味道模式检测

긴 함수 감지:
bash
undefined
检测长函数:
bash
undefined

50줄 이상 함수 찾기

50줄 이상 함수 찾기

grep -n "function|def|func " **/*.{js,ts,py,go} |
while read line; do file=$(echo $line | cut -d: -f1) linenum=$(echo $line | cut -d: -f2) # 함수 길이 계산 로직 done

**중복 코드 패턴**:
```bash
grep -n "function|def|func " **/*.{js,ts,py,go} |
while read line; do file=$(echo $line | cut -d: -f1) linenum=$(echo $line | cut -d: -f2) # 함수 길이 계산 로직 done

**重复代码模式**:
```bash

유사한 코드 블록 검색

유사한 코드 블록 검색

grep -rn "if.==.null" --include=".ts" . grep -rn "try\s{" --include="*.java" . | wc -l

**매직 넘버**:
```bash
grep -rn "if.==.null" --include=".ts" . grep -rn "try\s{" --include="*.java" . | wc -l

**魔法数字**:
```bash

하드코딩된 숫자 검색

하드코딩된 숫자 검색

grep -rn "[^a-zA-Z][0-9]{2,}[^a-zA-Z]" --include="*.{js,ts}" .
undefined
grep -rn "[^a-zA-Z][0-9]{2,}[^a-zA-Z]" --include="*.{js,ts}" .
undefined

Step 2: 보안 취약점 패턴

步骤2:安全漏洞模式

SQL Injection 위험:
bash
undefined
SQL注入风险:
bash
undefined

문자열 연결로 SQL 쿼리 생성

문자열 연결로 SQL 쿼리 생성

grep -rn "query.+.$|execute.%s|query.f"" --include=".py" . grep -rn "SELECT.+.||" --include=".{js,ts}" .

**하드코딩된 시크릿**:
```bash
grep -rn "query.+.$|execute.%s|query.f"" --include=".py" . grep -rn "SELECT.+.||" --include=".{js,ts}" .

**硬编码密钥**:
```bash

비밀번호, API 키 패턴

비밀번호, API 키 패턴

grep -riE "(password|secret|api_key|apikey)\s*=\s*['"][^'"]+['"]" --include="*.{js,ts,py,java}" .
grep -riE "(password|secret|api_key|apikey)\s*=\s*['"][^'"]+['"]" --include="*.{js,ts,py,java}" .

AWS 키 패턴

AWS 키 패턴

grep -rE "AKIA[0-9A-Z]{16}" .

**위험한 함수 사용**:
```bash
grep -rE "AKIA[0-9A-Z]{16}" .

**危险函数使用**:
```bash

eval, exec 사용

eval, exec 사용

grep -rn "eval(.)|exec(.)" --include="*.{py,js}" .
grep -rn "eval(.)|exec(.)" --include="*.{py,js}" .

innerHTML 사용

innerHTML 사용

grep -rn "innerHTML\s*=" --include="*.{js,ts}" .
undefined
grep -rn "innerHTML\s*=" --include="*.{js,ts}" .
undefined

Step 3: 코드 구조 패턴

步骤3:代码结构模式

임포트 분석:
bash
undefined
导入分析:
bash
undefined

사용되지 않는 임포트 후보

사용되지 않는 임포트 후보

grep -rn "^import|^from.import" --include=".py" . |
awk -F: '{print $3}' | sort | uniq -c | sort -rn

**TODO/FIXME 패턴**:
```bash
grep -rn "^import|^from.import" --include=".py" . |
awk -F: '{print $3}' | sort | uniq -c | sort -rn

**TODO/FIXME模式**:
```bash

미완성 코드 찾기

미완성 코드 찾기

grep -rn "TODO|FIXME|HACK|XXX" --include="*.{js,ts,py}" .

**에러 핸들링 패턴**:
```bash
grep -rn "TODO|FIXME|HACK|XXX" --include="*.{js,ts,py}" .

**错误处理模式**:
```bash

빈 catch 블록

빈 catch 블록

grep -rn "catch.{[\s]}" --include="*.{js,ts,java}" .
grep -rn "catch.{[\s]}" --include="*.{js,ts,java}" .

무시되는 에러

무시되는 에러

grep -rn "except:\spass" --include=".py" .
undefined
grep -rn "except:\spass" --include=".py" .
undefined

Step 4: 데이터 이상 패턴

步骤4:数据异常模式

정규식 패턴:
python
import re

patterns = {
    'email': r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',
    'phone': r'\d{3}[-.\s]?\d{4}[-.\s]?\d{4}',
    'ip_address': r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',
    'credit_card': r'\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}',
    'ssn': r'\d{3}-\d{2}-\d{4}',
}

def detect_sensitive_data(text):
    found = {}
    for name, pattern in patterns.items():
        matches = re.findall(pattern, text)
        if matches:
            found[name] = len(matches)
    return found
통계적 이상 탐지:
python
import numpy as np
from scipy import stats

def detect_anomalies_zscore(data, threshold=3):
    """Z-score 기반 이상치 탐지"""
    z_scores = np.abs(stats.zscore(data))
    return np.where(z_scores > threshold)[0]

def detect_anomalies_iqr(data, k=1.5):
    """IQR 기반 이상치 탐지"""
    q1, q3 = np.percentile(data, [25, 75])
    iqr = q3 - q1
    lower = q1 - k * iqr
    upper = q3 + k * iqr
    return np.where((data < lower) | (data > upper))[0]
正则表达式模式:
python
import re

patterns = {
    'email': r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',
    'phone': r'\d{3}[-.\s]?\d{4}[-.\s]?\d{4}',
    'ip_address': r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',
    'credit_card': r'\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}',
    'ssn': r'\d{3}-\d{2}-\d{4}',
}

def detect_sensitive_data(text):
    found = {}
    for name, pattern in patterns.items():
        matches = re.findall(pattern, text)
        if matches:
            found[name] = len(matches)
    return found
统计异常检测:
python
import numpy as np
from scipy import stats

def detect_anomalies_zscore(data, threshold=3):
    """Z-score 기반 이상치 탐지"""
    z_scores = np.abs(stats.zscore(data))
    return np.where(z_scores > threshold)[0]

def detect_anomalies_iqr(data, k=1.5):
    """IQR 기반 이상치 탐지"""
    q1, q3 = np.percentile(data, [25, 75])
    iqr = q3 - q1
    lower = q1 - k * iqr
    upper = q3 + k * iqr
    return np.where((data < lower) | (data > upper))[0]

Step 5: 트렌드 분석

步骤5:趋势分析

python
import pandas as pd

def analyze_trend(df, date_col, value_col):
    """시계열 트렌드 분석"""
    df[date_col] = pd.to_datetime(df[date_col])
    df = df.sort_values(date_col)

    # 이동 평균
    df['ma_7'] = df[value_col].rolling(window=7).mean()
    df['ma_30'] = df[value_col].rolling(window=30).mean()

    # 성장률
    df['growth'] = df[value_col].pct_change() * 100

    # 트렌드 방향
    recent_trend = df['ma_7'].iloc[-1] > df['ma_30'].iloc[-1]

    return {
        'trend_direction': 'up' if recent_trend else 'down',
        'avg_growth': df['growth'].mean(),
        'volatility': df[value_col].std()
    }
python
import pandas as pd

def analyze_trend(df, date_col, value_col):
    """시계열 트렌드 분석"""
    df[date_col] = pd.to_datetime(df[date_col])
    df = df.sort_values(date_col)

    # 이동 평균
    df['ma_7'] = df[value_col].rolling(window=7).mean()
    df['ma_30'] = df[value_col].rolling(window=30).mean()

    # 성장률
    df['growth'] = df[value_col].pct_change() * 100

    # 트렌드 방향
    recent_trend = df['ma_7'].iloc[-1] > df['ma_30'].iloc[-1]

    return {
        'trend_direction': 'up' if recent_trend else 'down',
        'avg_growth': df['growth'].mean(),
        'volatility': df[value_col].std()
    }

Output format

输出格式

패턴 감지 리포트

模式检测报告

markdown
undefined
markdown
undefined

패턴 감지 리포트

패턴 감지 리포트

요약

요약

  • 스캔 파일 수: XXX
  • 감지된 패턴: XX
  • 심각도 높음: X
  • 심각도 중간: X
  • 심각도 낮음: X
  • 스캔 파일 수: XXX
  • 감지된 패턴: XX
  • 심각도 높음: X
  • 심각도 중간: X
  • 심각도 낮음: X

감지된 패턴

감지된 패턴

보안 취약점 (HIGH)

보안 취약점 (HIGH)

파일라인패턴설명
file.js42hardcoded-secretAPI 키 하드코딩
파일라인패턴설명
file.js42hardcoded-secretAPI 키 하드코딩

코드 스멜 (MEDIUM)

코드 스멜 (MEDIUM)

파일라인패턴설명
util.py100long-function함수 길이 150줄
파일라인패턴설명
util.py100long-function함수 길이 150줄

권장 조치

권장 조치

  1. [조치 1]
  2. [조치 2]
undefined
  1. [조치 1]
  2. [조치 2]
undefined

Best practices

最佳实践

  1. 점진적 분석: 간단한 패턴부터 시작
  2. 오탐 최소화: 정확한 정규식 사용
  3. 컨텍스트 확인: 패턴의 맥락 파악
  4. 우선순위 지정: 심각도별 정렬
  1. 渐进式分析:从简单模式开始
  2. 最小化误报:使用精准的正则表达式
  3. 确认上下文:理解模式的背景
  4. 优先级排序:按严重性排序

Constraints

约束条件

필수 규칙 (MUST)

必须遵守的规则(MUST)

  1. 읽기 전용 작업
  2. 결과 검증 수행
  3. 오탐 가능성 명시
  1. 仅执行只读操作
  2. 验证结果
  3. 说明误报可能性

금지 사항 (MUST NOT)

禁止事项(MUST NOT)

  1. 코드 자동 수정 금지
  2. 민감 정보 로깅 금지
  1. 禁止自动修改代码
  2. 禁止记录敏感信息

References

参考资料

Examples

示例

Example 1: Basic usage

示例1:基础用法

<!-- Add example content here -->
<!-- Add example content here -->

Example 2: Advanced usage

示例2:高级用法

<!-- Add advanced example content here -->
<!-- Add advanced example content here -->