[Proposal] Add Cognitive Complexity as new option
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Bắt đầu bằng việc xem lại định nghĩa Cognitive Complexity được yêu cầu trong tài liệu Sonar được liên kết, sau đó kiểm tra các điểm vào CLI và hooks được đề cập trong issue. Xác định metric phải xử lý việc lồng nhau và đệ quy như thế nào, đồng thời xác minh rằng metric có thể được chọn và báo cáo thông qua cả hai giao diện.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Introduction
I would like to request to add "Cognitive Complexity" to this library as an option to select in the CLI and through hooks. This is a common quality check in the SonarQube application, used by many for static code checking.
Please see this document written by Sonar: https://www.sonarsource.com/docs/CognitiveComplexity.pdf. Importantly: "Unlike Cyclomatic Complexity, Cognitive Complexity adds a fundamental increment for each method in a recursion cycle, whether direct or indirect".
I am curious as to the opinions of others :)
Example 1
I like the example in the PDF, where the Cyclomatic Complexity is the same, but the Cognitive Complexity is vastly different:
Example 2
Consider the following code:
for _ in [i for i in range(5)]:
for _ in [i for i in range(5)]:
for _ in [i for i in range(5)]:
for j in [i for i in range(5)]:
if j == 2:
...
else:
if j > 3:
...
The Cyclomatic Complexity, also the one currently reported bymccabe, is 7:
The Cognitive Complexity, as reported by Sonar, is 22 due to all of the nesting.
- Ngôn ngữ chính
- Python
- Star
- 682
- Fork
- 69
- Merge trung bình
- 5 giờ 56 phút
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
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 PyCQA/mccabe
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
-
Test failure on 3.14Có thể đã có người làm @alexchen-sys đã nhận 97 ngày trước. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
[Proposal] Add a check for none/multiple positional argumentsCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 48/100
-
RecursionError on long elifCó thể đã có người làm @worksbyfriday đã nhận 246 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Issue tương tự
-
Uninstall guide omits the CloudWatch log groups AWS CodeBuild creates for useCodeBuild pipelinesĐang mởbug documentation
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 88/100
awslabs/visual-asset-management-system#552 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
netbox status: needs triage type: documentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 76/100
netbox-community/netbox#23460 ·
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 75/100
awslabs/threat-composer#362 ·
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 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
ansys/pyansys-common-mcp#213 ·
Maintainer thường phản hồi trong vòng 3 ngày