Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .Jules/palette.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@
## 2024-07-13 - CLI 좜λ ₯의 μ˜λ¬Έλ²•μ  λ³΅μˆ˜ν˜• 및 μ—λŸ¬ λ©”μ‹œμ§€ 힌트 κ°œμ„ 
**Learning:** CLI 좜λ ₯μ—μ„œ `file(s)`, `issue(s)`, `rule(s) excluded`와 같이 κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•œ λ³΅μˆ˜ν˜• ν‘œκΈ°λ²•μ€ 가독성을 λ–¨μ–΄λœ¨λ¦¬κ³  νˆ¬λ°•ν•œ(developer-centric) λŠλ‚Œμ„ μ€λ‹ˆλ‹€. λ˜ν•œ, μ—λŸ¬ λ°œμƒ μ‹œ λ‹¨μˆœ μ˜ˆμ™Έ λ‚΄μš©λ§Œ 좜λ ₯ν•˜λŠ” 것보닀 μ¦‰μ‹œ μ‹€ν–‰ κ°€λŠ₯ν•œ ν•΄κ²°μ±…(Hint)을 ν•¨κ»˜ μ œκ³΅ν•˜λŠ” 것이 CLI μ‚¬μš©μž κ²½ν—˜(DX) ν–₯상에 맀우 νš¨κ³Όμ μž…λ‹ˆλ‹€.
**Action:** 쑰건뢀 f-string(예: `s_suffix = "s" if count != 1 else ""`)을 ν™œμš©ν•˜μ—¬ λ™μ μœΌλ‘œ μ •ν™•ν•œ λ³΅μˆ˜ν˜• 단어(file/files)λ₯Ό 좜λ ₯ν•˜λ„λ‘ κ°œμ„ ν•˜κ³ , μ˜ˆμ™Έ λ°œμƒ λ‘œμ§μ—λŠ” 항상 `πŸ’‘ Hint:`λ₯Ό ν¬ν•¨ν•˜μ—¬ 후속 μ•‘μ…˜μ„ μ•ˆλ‚΄ν•˜λ„λ‘ ν‘œμ€€ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. (단, Python 3.12 ν™˜κ²½μ˜ `black` 포맀터 ν˜Έν™˜μ„±μ„ μœ„ν•΄ λ°±μŠ¬λž˜μ‹œκ°€ ν¬ν•¨λœ 쀑첩 f-string μ‚¬μš©μ„ ν”Όν•˜κ³  λ³€μˆ˜ μΆ”μΆœμ„ ꢌμž₯ν•©λ‹ˆλ‹€.)
## 2026-10-27 - CLI Error UX Insights
**Learning:** Users encountering missing executables (like zap-baseline.py) need actionable hints. A simple file missing error doesn't explain what to install or configure.
**Action:** Added a πŸ’‘ Hint to the RuntimeError to explicitly instruct users to install OWASP ZAP and ensure it is in their PATH, improving standard CLI DX.
4 changes: 3 additions & 1 deletion scanner/cli/appguardrail.py
Original file line number Diff line number Diff line change
Expand Up @@ -2714,7 +2714,9 @@ def _run_zap_baseline(target_url: str):
raise RuntimeError("--zap-baseline requires an http(s) URL.")
zap = shutil.which("zap-baseline.py")
if not zap:
raise RuntimeError("zap-baseline.py executable not found.")
raise RuntimeError(
"zap-baseline.py executable not found.\nπŸ’‘ Hint: Install OWASP ZAP and ensure zap-baseline.py is in your PATH."
)

with tempfile.TemporaryDirectory() as tmpdir:
report_path = Path(tmpdir) / "zap-baseline.json"
Expand Down
Loading