Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Memformat dan Melinting Kod Python Anda dengan Tindakan GitHub

Memformat dan Melinting Kod Python Anda dengan Tindakan GitHub

王林
王林asal
2024-09-10 10:52:17370semak imbas

Formatting and Linting Your Python Codes with GitHub Actions

Dalam landskap pembangunan perisian yang sentiasa berkembang, mengekalkan kualiti dan ketekalan kod adalah penting. Salah satu cara paling berkesan untuk memastikan pangkalan kod anda kekal bersih dan mematuhi amalan terbaik ialah dengan mengautomasikan proses pemformatan dan linting. Dalam catatan blog ini, kami akan meneruskan penyediaan aliran kerja Tindakan GitHub yang direka untuk mengautomasikan pemformatan dan linting kod untuk projek Python. Kami akan meneroka konfigurasi dan langkah yang terlibat serta cara ia boleh menjimatkan masa anda dan mengurangkan ralat dalam kod anda.

Pengenalan kepada Tindakan GitHub

Tindakan GitHub ialah alat berkuasa yang membolehkan anda mengautomasikan aliran kerja terus dalam repositori GitHub anda. Daripada menjalankan ujian hingga menggunakan aplikasi, Tindakan GitHub boleh mengendalikan pelbagai tugas berdasarkan peristiwa seperti tolakan, permintaan tarik dan banyak lagi. Dalam contoh ini, kami akan menumpukan pada mengautomasikan pemformatan dan linting kod menggunakan Tindakan GitHub.

Pecahan Aliran Kerja

Berikut ialah pandangan terperinci pada aliran kerja Tindakan GitHub untuk pemformatan dan linting kod Python:

name: Format and Lint

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  format-and-lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.9'  # Specify the Python version to use

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install black isort autopep8

      - name: Run Black
        run: black .

      - name: Run isort
        run: isort .

      - name: Run autopep8
        run: autopep8 --in-place --recursive .

      - name: Commit changes if any
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          # Check for changes
          git diff --exit-code || {
            echo "Changes detected. Committing changes..."

            # Configure Git user
            git config --global user.name "github-actions"
            git config --global user.email "actions@github.com"

            # Stage all changes
            git add .

            # Commit changes
            git commit -m "Apply code formatting and linting fixes"

            # Push changes
            git push origin HEAD
          }

Komponen Aliran Kerja Diterangkan

  1. Peristiwa Pencetus:
   on:
     push:
       branches:
         - master
     pull_request:
       branches:
         - master

Aliran kerja dicetuskan pada permintaan tolak dan tarik ke cawangan induk. Ini memastikan bahawa setiap perubahan pada cawangan utama atau permintaan tarik diformat dan digariskan secara automatik.

  1. Konfigurasi Kerja:
   jobs:
     format-and-lint:
       runs-on: ubuntu-latest

Tugas dijalankan pada versi terkini Ubuntu. Ini ialah persekitaran di mana pemformatan dan linting anda akan berlaku.

  1. Kod Daftar Keluar:
   - name: Checkout code
     uses: actions/checkout@v3

Langkah ini menyemak kod repositori anda, membenarkan langkah seterusnya untuk mengakses dan mengubah suainya.

  1. Sediakan Python:
   - name: Set up Python
     uses: actions/setup-python@v4
     with:
       python-version: '3.9'

Langkah ini menyediakan Python 3.9 dalam persekitaran aliran kerja. Laraskan ini agar sepadan dengan versi Python yang digunakan dalam projek anda.

  1. Pasang Ketergantungan:
   - name: Install dependencies
     run: |
       python -m pip install --upgrade pip
       pip install black isort autopep8

Di sini, pakej Python penting untuk pemformatan dan linting—hitam, isort dan autopep8—dipasang.

  1. Jalankan Pemformat:
   - name: Run Black
     run: black .

   - name: Run isort
     run: isort .

   - name: Run autopep8
     run: autopep8 --in-place --recursive .

Langkah ini menggunakan pemformatan kod menggunakan hitam, isort untuk pengisihan import dan autopep8 untuk pelarasan pemformatan tambahan.

  1. Lakukan Perubahan:
   - name: Commit changes if any
     env:
       GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     run: |
       git diff --exit-code || {
         echo "Changes detected. Committing changes..."

         git config --global user.name "github-actions"
         git config --global user.email "actions@github.com"

         git add .
         git commit -m "Apply code formatting and linting fixes"
         git push origin HEAD
       }

Jika pemformatan atau perubahan linting dibuat, langkah ini dilakukan dan menolaknya kembali ke repositori. Ia menggunakan token GitHub untuk pengesahan dan mengkonfigurasi Git dengan pengguna generik untuk komitmen.

Faedah Aliran Kerja Ini

  1. Ketekalan: Memastikan kod mengikut peraturan pemformatan yang konsisten, meningkatkan kebolehbacaan dan kebolehselenggaraan.
  2. Automasi: Mengautomasikan proses pemformatan dan linting, mengurangkan campur tangan manual dan kemungkinan ralat.
  3. Integrasi: Berintegrasi dengan lancar dengan repositori GitHub anda, menjalankan semakan secara automatik pada perubahan kod.

Kesimpulan

Melaksanakan aliran kerja Tindakan GitHub untuk pemformatan dan linting ialah cara pintar untuk mengekalkan kualiti dan ketekalan kod merentas projek anda. Dengan mengautomasikan proses ini, anda boleh lebih memfokuskan pada menulis kod dan kurang pada isu pemformatan. Aliran kerja yang disediakan di sini berfungsi sebagai asas yang kukuh, tetapi anda boleh menyesuaikannya dengan lebih lanjut berdasarkan keperluan khusus projek anda. Mula menyepadukan aliran kerja ini ke dalam repositori anda hari ini dan rasai manfaat pengurusan kualiti kod automatik!

Atas ialah kandungan terperinci Memformat dan Melinting Kod Python Anda dengan Tindakan GitHub. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn