Codacy backlog: 443 issues, mostly Prospector/Pyflakes findings
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- python
- Lĩnh vực
- testing-qa, tooling
Hướng nghiên cứu
Bắt đầu với ruff check --select F src/machinevisiontoolbox tests và kiểm tra 29 vị trí F821 được liệt kê, phân biệt các vấn đề thực sự khi chạy với mã chết hoặc không thể truy cập và các vấn đề trong test. Trước tiên hãy phân loại hoặc sửa các phát hiện đó, sau đó chạy các test liên quan; hoàn thành giai đoạn này có nghĩa là mọi phát hiện F821 đều đã được xử lý, trong khi các danh mục lint rộng hơn vẫn là công việc tiếp theo riêng biệt.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Raised 2026-07-29 when the user pointed at the repo's Codacy dashboard
(443 issues total) and asked how much overlaps with the mixin/hygiene
work happening the same day. Verified: only the bare-except finding
(see git history, since fixed) genuinely overlapped. Everything else is
a distinct, much larger body of work, deliberately not tackled in that
pass — logging the real numbers here instead of re-deriving them from
scratch next time.
Codacy's Python analysis engine is Prospector (bundles Pylint +
Pyflakes + Bandit + pycodestyle + pydocstyle + mccabe) — confirmed via
the dashboard's own "Prospector's documentation" tab, and pattern names
like Avoid Dangerous Mutable Default Arguments / Audit Dangerous Subprocess Usage that are textbook Pylint/Bandit rule names. Codacy's
298-count "Detect Python Source Code..." bucket is all Pyflakes
findings grouped under one umbrella pattern, not broken out by code the
way ruff/raw pyflakes do.
Reproduced locally with ruff check --select F src/machinevisiontoolbox tests against clean origin/main, 2026-07-30: 883 hits (not
directly comparable to Codacy's 298 — different default
exclusions/config, and this sweep includes tests/, which Codacy's
dashboard count may not). By code:
| Code | Count | What it means |
|---|---|---|
F405 |
469 | name may be undefined, or defined from star imports (ambiguous from X import *) |
F401 |
240 | imported but unused |
F841 |
49 | local variable assigned but never used |
F403 |
47 | from X import * used (can't verify no undefined names) |
F811 |
43 | redefinition of unused name from a prior import/def |
F821 |
29 | undefined name — see below, this is the one worth triaging first |
F541 |
6 | f-string missing placeholders |
F405/F403 (star-import ambiguity) dominate the count but are mostly
a style/tooling-friction issue, not bugs — this codebase leans on
from machinevisiontoolbox.base import *-style re-exports
deliberately (see the mypy wildcard-re-export issue for the
concrete downside of that pattern). F401/F841/F811 are typical
accumulated-cruft categories, individually low-risk to clean up but
numerous.
F821 (undefined name) is different — this is a real-bug class, not
style: a name that doesn't exist would raise NameError at runtime
if that code path is ever actually executed. All 29 instances, by
location:
BundleAdjust.py:382,590,592— undefinedc,retain,g2ImageSpatial.py:116,121,328,330-332,340-342,1106— undefined
_border_opt,border_value,value,a,kv(kvappears 4
times),connVisualServo.py:186,412,444,1351-1353,1403— undefinedAnimate,
plot,history,camera,SphericalCamera,kwargs,ptblocks/camera.py:287,288— undefinedstate(x2)tests/test_camera.py:191,192,194,195,198,200— undefinedx,y
(likely a real bug in the test, not production code — check
whether these lines actually run or are dead/unreachable test code)
Codacy's Pylint/Bandit-derived counts (the non-Pyflakes ~145 of the
443) weren't independently reproduced locally — the dashboard is the
source of truth for those categories (mutable default arguments,
assert usage, subprocess/exec/urlopen auditing, etc.).
Fix
Not a single pass. Suggested order: (1) triage the 29 F821 hits first
— for each, determine real bug vs. genuinely dead/unreachable code, fix
or delete accordingly; (2) F401/F811 next, mechanical and
ruff --fix-automatable for most cases; (3) F841 case-by-case (some
may be intentional, e.g. unpacking for side effects); (4) F405/F403
last and only if the codebase-wide star-import convention itself is
ever reconsidered — otherwise these will just regenerate.
Two more concrete instances, PRs #32/#33, 2026-07-30: Codacy
flagged type shadowing the builtin at ImageWholeFeatures.py:1213
(Histogram.plot's signature, PR #32) and again at :1570
(_compute_plot_series, the extraction in PR #33 that copied plot's
type parameter into a new method). Deliberately not renamed in
either PR — type= is public API (hist.plot(type="pdf")), a rename
needs a proper deprecation cycle. If picked up: this method
already has a precedent for exactly this — bar= is kept as a
deprecated alias for filled= with a DeprecationWarning
(ImageWholeFeatures.py, same method) — mirror that pattern: add
kind= as the real parameter, deprecate type= as an alias. Do this
as its own PR after #32 and #33 are both merged, not before —
branching the rename off pre-#32 main would conflict with both of
those on the same lines.
PR #33 also surfaced 3 more Codacy findings while extracting
Image.__getitem__'s nested closures (ImageCore.py): max as a
parameter name (:2792, _lenkey — carried over verbatim from the
original nested lenkey(key, max), not introduced by the extraction)
and two F405 star-import-ambiguity hits (:352 Dtype, :2812
Any, both from machinevisiontoolbox.mvtb_types's star-import) —
already covered by the F405 finding above, not a new pattern.
- Ngôn ngữ chính
- Python
- Star
- 220
- Fork
- 30
- Merge trung bình
- 12 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 5
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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 petercorke/machinevision-toolbox-python
-
tech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
tech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
-
tech-debt
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
-
tech-debt
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 72/100
-
tech-debt
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 76/100
Tất cả issue của petercorke/machinevision-toolbox-python
Issue tương tự
-
[Bug] reef-hermes tells me to resume with hermes --resume, which does not work from my shell Đang mởarea: harness bug status: needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Human-Agent-Society/reef#625 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
learningequality/kolibri#15351 · 2 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Name consistency Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
eellak/triplestore#65 · 1 bình luận ·