pattern-detection
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePattern Detection
模式检测
When to use this skill
何时使用此技能
- 코드 리뷰: 문제 패턴 사전 감지
- 보안 검토: 취약점 패턴 스캔
- 리팩토링: 중복 코드 식별
- 모니터링: 이상 징후 알림
- 代码审查:提前检测问题模式
- 安全审查:扫描漏洞模式
- 重构:识别重复代码
- 监控:异常迹象告警
Instructions
操作步骤
Step 1: 코드 스멜 패턴 감지
步骤1:代码坏味道模式检测
긴 함수 감지:
bash
undefined检测长函数:
bash
undefined50줄 이상 함수 찾기
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
while read line; do file=$(echo $line | cut -d: -f1) linenum=$(echo $line | cut -d: -f2) # 함수 길이 계산 로직 done
**중복 코드 패턴**:
```bashgrep -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
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
**매직 넘버**:
```bashgrep -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}" .
undefinedgrep -rn "[^a-zA-Z][0-9]{2,}[^a-zA-Z]" --include="*.{js,ts}" .
undefinedStep 2: 보안 취약점 패턴
步骤2:安全漏洞模式
SQL Injection 위험:
bash
undefinedSQL注入风险:
bash
undefined문자열 연결로 SQL 쿼리 생성
문자열 연결로 SQL 쿼리 생성
grep -rn "query.+.$|execute.%s|query.f"" --include=".py" .
grep -rn "SELECT.+.||" --include=".{js,ts}" .
**하드코딩된 시크릿**:
```bashgrep -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}" .
**위험한 함수 사용**:
```bashgrep -rE "AKIA[0-9A-Z]{16}" .
**危险函数使用**:
```basheval, 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}" .
undefinedgrep -rn "innerHTML\s*=" --include="*.{js,ts}" .
undefinedStep 3: 코드 구조 패턴
步骤3:代码结构模式
임포트 분석:
bash
undefined导入分析:
bash
undefined사용되지 않는 임포트 후보
사용되지 않는 임포트 후보
grep -rn "^import|^from.import" --include=".py" . |
awk -F: '{print $3}' | sort | uniq -c | sort -rn
awk -F: '{print $3}' | sort | uniq -c | sort -rn
**TODO/FIXME 패턴**:
```bashgrep -rn "^import|^from.import" --include=".py" . |
awk -F: '{print $3}' | sort | uniq -c | sort -rn
awk -F: '{print $3}' | sort | uniq -c | sort -rn
**TODO/FIXME模式**:
```bash미완성 코드 찾기
미완성 코드 찾기
grep -rn "TODO|FIXME|HACK|XXX" --include="*.{js,ts,py}" .
**에러 핸들링 패턴**:
```bashgrep -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" .
undefinedgrep -rn "except:\spass" --include=".py" .
undefinedStep 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
undefinedmarkdown
undefined패턴 감지 리포트
패턴 감지 리포트
요약
요약
- 스캔 파일 수: XXX
- 감지된 패턴: XX
- 심각도 높음: X
- 심각도 중간: X
- 심각도 낮음: X
- 스캔 파일 수: XXX
- 감지된 패턴: XX
- 심각도 높음: X
- 심각도 중간: X
- 심각도 낮음: X
감지된 패턴
감지된 패턴
보안 취약점 (HIGH)
보안 취약점 (HIGH)
| 파일 | 라인 | 패턴 | 설명 |
|---|---|---|---|
| file.js | 42 | hardcoded-secret | API 키 하드코딩 |
| 파일 | 라인 | 패턴 | 설명 |
|---|---|---|---|
| file.js | 42 | hardcoded-secret | API 키 하드코딩 |
코드 스멜 (MEDIUM)
코드 스멜 (MEDIUM)
| 파일 | 라인 | 패턴 | 설명 |
|---|---|---|---|
| util.py | 100 | long-function | 함수 길이 150줄 |
| 파일 | 라인 | 패턴 | 설명 |
|---|---|---|---|
| util.py | 100 | long-function | 함수 길이 150줄 |
권장 조치
권장 조치
- [조치 1]
- [조치 2]
undefined- [조치 1]
- [조치 2]
undefinedBest practices
最佳实践
- 점진적 분석: 간단한 패턴부터 시작
- 오탐 최소화: 정확한 정규식 사용
- 컨텍스트 확인: 패턴의 맥락 파악
- 우선순위 지정: 심각도별 정렬
- 渐进式分析:从简单模式开始
- 最小化误报:使用精准的正则表达式
- 确认上下文:理解模式的背景
- 优先级排序:按严重性排序
Constraints
约束条件
필수 규칙 (MUST)
必须遵守的规则(MUST)
- 읽기 전용 작업
- 결과 검증 수행
- 오탐 가능성 명시
- 仅执行只读操作
- 验证结果
- 说明误报可能性
금지 사항 (MUST NOT)
禁止事项(MUST NOT)
- 코드 자동 수정 금지
- 민감 정보 로깅 금지
- 禁止自动修改代码
- 禁止记录敏感信息
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 -->