פרויקט זה כולל שני חלקים מרכזיים:
-
קליינט - מערכת ניהול גרסאות בסיסית בשם
wit
מערכת מבוססת CLI לניהול גרסאות פשוטה, בהשראת Git, המיושמת בפייתון עם ספריית Click ומבוססת עקרונות OOP. -
שרת - מערכת ניתוח קוד עם FastAPI כחלק מפקודת
wit push
שרת backend שמנתח קוד Python באופן אוטומטי בעת ביצועwit push, ומחזיר התרעות וגרפים ויזואליים.
פיתוח כלי CLI לניהול גרסאות, שמאפשר יצירת מאגר, הוספת קבצים למעקב, ביצוע commit, צפייה בלוג ושחזור גרסאות קודמות.
wit init- יצירת תיקיית.witלניהול הגרסאות.wit add <file>- הוספת קבצים למעקב בגרסה הבאה.wit commit -m "message"- יצירת גרסה חדשה עם הודעת commit.wit log- הצגת היסטוריית הגרסאות.wit status- בדיקת שינויים שלא הועלו לגרסה.wit checkout <commit_id>- שחזור למצב קודם לפי מזהה commit.
- Python
- ספריית Click ליצירת CLI
- עקרונות תכנות מונחה עצמים (OOP)
פיתוח שרת FastAPI שמבצע ניתוח איכות קוד אוטומטי בעת ביצוע wit push, ומחזיר התרעות וגרפים לויזואליזציה.
- Python
- FastAPI
- ast (Abstract Syntax Tree) לניתוח הקוד
- matplotlib להצגת גרפים
- ניתוח פונקציות ונתוני קוד לפי קריטריונים כמו אורך פונקציה, משתנים לא בשימוש, חוסר תיעוד, ועוד.
- יצירת גרפים: היסטוגרמה של אורך פונקציות, תרשים עוגה של סוגי בעיות, תרשים עמודות של בעיות לפי קובץ.
- API עם נקודות קצה
/analyzeו-/alertsלקבלת קבצים ותגובות.
pip install -r requirements.txt- בתוך התיקייה של הקליינט:
python wit.py <command> [options]לדוגמה:
wit init
wit add example.py
wit commit -m "Initial commit"uvicorn backend.main:app --reload(בהנחה שהקוד נמצא בתיקיית backend בקובץ main.py)
PyGuardFinal/
├── backend/ # קוד השרת
│ ├── main.py
│ ├── analysis.py
│ └── ...
├── client/ # קוד הקליינט wit
│ ├── wit.py
│ └── ...
├── README.md
└── requirements.txt