
هذا نص Python بسيط مصمم لتصفية انتهاكات الترميز (التي يحتمل أن يكون محللًا ثابتًا) للخطوط التي تم تغييرها فقط في مستودع GIT.
تعمل هذه الأداة مع أي محلل كود أو محلل رمز ثابت ، بما في ذلك على سبيل المثال لا الحصر:
pip install ondiviتأكد من أنك في الدليل الجذر لمستودع GIT الخاص بك.
قم بتشغيل البرنامج النصي:
flake8 script.py | ondivi
# with ruff:
ruff check file.py --output-format=concise | ondiviأو:
flake8 script.py > violations.txt
ondivi --fromfile=violations.txt $ ondivi --help
Usage: ondivi [OPTIONS]
Ondivi (Only diff violations).
Python script filtering coding violations, identified by static analysis,
only for changed lines in a Git repo. Usage example:
flake8 script.py | ondivi
Options:
--baseline TEXT Commit or branch which will contain legacy code. Program
filter out violations on baseline (default: "master")
--fromfile TEXT Path to file with violations. Expected "utf-8" encoding
--format TEXT Template for parsing linter messages. The template should
include the following named parts:
{filename} The name of the file with the error/warning
{line_num} The line number with the error/warning
(integer)
Example usage:
--format "{filename}:{line_num:d}{other}"
In this example, the linter message
"src/app_types/listable.py:23:1: UP035 Import from
collections.abc instead: Sequence"
will be recognized and parsed into the following
components:
- filename: "src/app_types/listable.py"
- line_num: 23
- other: :1: "UP035 Import from collections.abc instead:
Sequence"
Ensure that the template matches the format of the
messages generated by your linter.
(default: "{filename}:{line_num:d}{other}")
--only-violations Show only violations
--help Show this message and exit.
يقوم البرنامج النصي بتوزيع إخراج GIT Diff لتحديد الخطوط التي تم تغييرها في كل ملف.
يقوم بعد ذلك بتصفية انتهاكات الترميز المحددة لتشمل فقط تلك الانتهاكات التي تتوافق مع الخطوط المتغيرة.
لا يتم دعم Flakeheaven و Flakehell لأنهم يعتمدون على واجهة برمجة تطبيقات Flake8 الداخلية ، مما قد يؤدي إلى مشاكل التوافق مع تطور Flake8. في المقابل ، لا يستخدم Ondivi سوى إخراج النص للانتهاكات وحالة مستودع GIT ، مما يجعله أكثر قوة وأسهل في الحفاظ عليه.
Flake8 في الملف:
$ flake8 file.py
file.py:3:1: E302 expected 2 blank lines, found 1
file.py:9:1: E302 expected 2 blank lines, found 1
file.py:10:121: E501 line too long (123 > 120 characters)
file.py:14:1: E305 expected 2 blank lines after class or function definition, found 1مثال على التغييرات:
from dataclasses import dataclass
@dataclass
class User(object):
name: str
age: int
def greet(user: User):
print('Long string in initial commit ################################################################################')
print(f'Hello, {user.name}!')
+ print('Long string in new commit ################################################################################')
if __name__ == '__main__':
greet(User(345, 23))
+ greet(User('Bob', '23'))بواسطة Git Diff نرى ، أنه تم إلحاق سطرين جديدين (12 و 16):
يقوم Ondivi بتصفية الانتهاكات ويظهر واحدة فقط للخط 12:
$ flake8 script.py | ondivi
file.py:12:80: E501 line too long (119 > 79 characters)هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. انظر ملف الترخيص للحصول على التفاصيل.