Inefficient regex in `extract_full_summary_from_signature`
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- python
- Lĩnh vực
- cli, performance
Hướng nghiên cứu
Bắt đầu trong knack/introspection.py, tại regex extract_full_summary_from_signature ở khoảng dòng 18. Tái hiện các input có khoảng trắng dài và các input không đúng định dạng được nêu trong issue, sau đó xác minh rằng tài liệu của tham số vẫn được trích xuất chính xác, trong khi input bất thường không còn gây ra backtracking quá mức. Regex được đề xuất và các ví dụ xác định hành vi mong đợi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
As pointed out by https://gist.github.com/prodigysml/d07cd482214c80bfb6d3240454d2f679, this regex (introduced by https://github.com/microsoft/knack/commit/430c39e657d8a424ef9b631782fe0e62a6bed203, #8) is inefficient:
It tries to match a string such as:
:param command_loader: The command loader that commands will be registered into
As shown in https://regex101.com/, a simple :param r requires 1214 steps to fail.
:param r causes catastrophic backtracking:
This is because \s+, .+? and \s* all match consecutive spaces, thus can trigger many backtrackings.
A better solution is to replace .+? with \w+ to match the parameter name so that backtrackings can be greatly reduced:
\s*(:param)\s+(\w+)\s*:(.*)
- Ngôn ngữ chính
- Python
- Star
- 359
- Fork
- 104
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/knack
-
UnicodeEncodeError fallback discards all non-ASCII output, including characters the target encoding supportsCó thể đã có người làm @kimsey0 đã nhận 85 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
python tracker closedĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
-
Request to add support for handling bytearray when outputting data in YAML formatCó thể đã có người làm @Shubham-Padkonde đã nhận 46 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 48/100
-
Broken `examples/test_exapp`: TypeError: ScenarioTest.__init__() missing 1 required positional argument: 'method_name'Có thể đã có người làm @jiasli đã nhận 843 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 48/100
Tất cả issue của microsoft/knack
Issue tương tự
-
community enhancement good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
Hochfrequenz/sapgui.mcp#1039 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
didi/helixharness#18 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
API /search : typer la réponseĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
dataforgoodfr/democracy-watch#46 · 1 reaction ·