AI کوڈ ریویو پائپ لائن کا آرکیٹیکچر
ایک پروڈکشن گریڈ AI کوڈ ریویو پائپ لائن آپ کے CI/CD ورک فلو پر جڑے ہوئے ایک ٹول سے زیادہ ہے۔ یہ ایک تہہ دار نظام ہے جہاں ہر پرت ایک مختلف قسم کے تجزیے کا اضافہ کرتی ہے، تیز نحوی جانچ سے لے کر گہری معنوی استدلال تک۔ اس آرکیٹیکچر کو صحیح طریقے سے ڈیزائن کرنا اس بات کو یقینی بناتا ہے کہ جائزے جامع اور تیز دونوں ہیں تاکہ وائب کوڈنگ کی تیز رفتاری کو سپورٹ کر سکیں۔
پائپ لائن آرکیٹیکچر کا جائزہ
مثالی پائپ لائن پانچ ترتیب وار تہوں کے ذریعے کوڈ کی تبدیلیوں پر عمل کرتی ہے، ہر ایک میں گہرائی کا اضافہ ہوتا ہے:
- پری کمٹ ہکس:فوری مقامی چیک (فارمیٹنگ، XTAG3 ورژن کو کنٹرول کرنے سے پہلے کیٹ کو کنٹرول کرنے سے پہلے)
- فاسٹ CI چیکس:آٹومیٹڈ لنٹنگ، ٹائپ چیکنگ، اور بنیادی جامد تجزیہ جو سیکنڈوں میں چلتا ہے
- گہرا جامد تجزیہ:سونار کیوب، سیمگریپ، یا CodeQL، پیٹرن اور سیکیورٹی کے پیچیدہ اصولوں کا تجزیہ
- AI سیمنٹک جائزہ:LLM سے چلنے والی منطق، فن تعمیر، اور سیکورٹی کا تجزیہ پل کی درخواست کی سطح پر
- خودکار جانچ:یونٹ، انضمام، اور اینڈ ٹو اینڈ ٹیسٹ کوڈ درست ثابت کرتے ہیں۔
ہر پرت فلٹر کے طور پر کام کرتی ہے۔ تیز، سستے چیک زیادہ تر معمولی مسائل کو پکڑ لیتے ہیں، جس سے مہنگا AI تجزیہ چھوڑ کر ان پیچیدہ مسائل پر توجہ مرکوز کی جاتی ہے جن کے لیے معنوی تفہیم کی ضرورت ہوتی ہے۔
GitHub اور GitLab PR ورک فلوز کے ساتھ انٹیگریشن
گٹ ہب پل ریکوئسٹ انٹیگریشن
سب سے زیادہ موثر AI ریویو انٹیگریشن پوسٹس کے اندر براہ راست کوڈ انٹیگریشن کی درخواست پر سب سے زیادہ موثر AI ریویو انٹیگریشن پر کام کرتا ہے۔ مسائل کا پتہ چلا ہے. یہ تاثرات کو متعلقہ اور قابل عمل رکھتا ہے۔
# .github/workflows/review-pipeline.yml name: Code Review Pipeline on: pull_request: types: [opened, synchronize, reopened] jobs: lint-and-format: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' - run: npm ci - run: npm run lint - run: npm run format:check static-analysis: runs-on: ubuntu-latest needs: lint-and-format steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: SonarQube Scan uses: sonarqube-quality-gate-action@master env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} ai-review: runs-on: ubuntu-latest needs: lint-and-format permissions: contents: read pull-requests: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: AI Semantic Review env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | # Get the diff git diff origin/${{ github.base_ref }}...HEAD > changes.diff # Run AI review script python scripts/ai_review.py \ --diff changes.diff \ --pr-number ${{ github.event.pull_request.number }} security-scan: runs-on: ubuntu-latest needs: lint-and-format steps: - uses: actions/checkout@v4 - name: Run Semgrep uses: semgrep/semgrep-action@v1 with: config: auto tests: runs-on: ubuntu-latest needs: [lint-and-format] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' - run: npm ci - run: npm test -- --coverageGitLab انضمام کی درخواست
GitLab CI/CD اپنی پائپ لائن کنفیگریشن کے ذریعے اسی طرح کی صلاحیتیں فراہم کرتا ہے:
# .gitlab-ci.yml stages: - lint - analysis - review - test lint: stage: lint script: - npm ci - npm run lint - npm run format:check static-analysis: stage: analysis script: - sonar-scanner allow_failure: true ai-review: stage: review script: - git diff origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME...HEAD > changes.diff - python scripts/ai_review.py --diff changes.diff --mr-id $CI_MERGE_REQUEST_IID only: - merge_requests security-scan: stage: analysis script: - semgrep --config auto . test: stage: test script: - npm ci - npm test -- --coverageملٹی لیئر کا جائزہ: ہر مرحلے پر گہرائی اور فارمیٹنگ
تیز ترین اور سستی پرت طرز کی خلاف ورزیوں، غیر استعمال شدہ درآمدات، اور فارمیٹنگ کے مسائل کو پکڑتی ہے۔ ESLint، Prettier، Black، یا Ruff جیسے ٹولز کو پری کمٹ ہکس اور CI چیک کے طور پر ترتیب دیں۔ ان کو بلاک کرنا چاہیے: کوڈ جو لنٹنگ میں ناکام ہو جاتا ہے اسے زیادہ مہنگے جائزے کے مراحل تک نہیں جانا چاہیے۔
پرت 2: جامد تجزیہ
جامد تجزیہ ٹولز بغیر کسی عمل کے کوڈ کی ساخت اور نمونوں کی جانچ کرتے ہیں۔ اپنے اسٹیک کے لیے موزوں ٹولز کو ترتیب دیں:
- JavaScript/TypeScript:ESLint سیکیورٹی پلگ انز کے ساتھ، SonarQube
- Python:، بینڈیٹ (بینڈیٹ) چیک کریں
- Go:staticcheck, gosec
- Java:SpotBugs, PMD, Checkstyle