Codacy and code-quality follow-ups after reaching grade A (plan)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 18/100
調査の方向性
Start by reading the Codacy findings and the CI configuration referenced in the issue, especially the --ignore=tests/test_blocks.py setting and the skipped test_jtraj. The plan also points to src, tests/test_symbolic_ik*.py, blocks/spatial.py, blocks/arm.py, blocks/uav.py, and mobile/EKF.py. Choose a single mechanical item with a clear scope; for the broader test and design items, first gather evidence and comment on the issue before proposing a change.
索引モデルが issue の本文から書いたものです。
説明
The code-quality work of 23 October 2026 (#888, #890, #891, #892, #893) took Codacy from grade B (89) to A (91). This is the plan for what is left. Several items are design decisions, not cleanup, so please comment here and do not send a PR for them.
Where it stands (Codacy, main, 23 October 2026)
| Start | Now | |
|---|---|---|
| Issues | 1,183 | 318 |
| Bandit B101 (assert) | 471 | 2 |
| Complex files (goal 10%) | 38% | 28% |
| Duplicated files (goal 10%) | 33% | 26% |
The 129 narrowing asserts in src went to zero with # nosec B101: <reason>, so Codacy honors it. .codacy.yml now skips Bandit in tests/, the Dynamixel and ROS sketches, the vendored Eigen headers, and pyflakes in tests/ and examples/ (deliberate star imports).
To look again, the public API needs no token: curl https://app.codacy.com/api/v3/analysis/organizations/gh/petercorke/repositories/robotics-toolbox-python for the summary, and POST …/issues/search?limit=100 with body {} for the findings.
Plan
Small, mechanical
- Add
# nosecwith a reason to the deliberateexecand subprocess uses (55 findings): the code generatorrobot/symbolic_ik_rr.py(8) andsymbolic_ik.py, the moved teststests/test_symbolic_ik*.py(20) that compile and run generated code,blocks/spatial.pyandblocks/arm.py(4 each),docs/lite/browser_check/check_lite_in_browser.py(5). - The 34 unused local variables (F841), one by one. Some are constants in
models/and are safe to delete;blocks/uav.pyhas an unusedliandalphasthat may hide a bug; several tests build ablockthey never use. - Mutable default arguments (8, W0102): fix, as they are real bugs waiting to happen.
- The 18 "undefined name" findings in
L["rpy/xyz", …]hints are false positives caused by the aliasLiteral as L. Either importLiteralunder its own name or leave them. - Look at the remaining "used before assignment" and "unexpected keyword" findings (E0601, E1123, E1120). The three I checked were false positives; the rest in
tests/andexamples/are unchecked.
Test hygiene
-
tests/test_blocks.pyis excluded from CI (--ignore=tests/test_blocks.py), and itstest_jtrajis skipped, which is why theJTrajbug in #890 lasted. Find out why it is excluded, and run it or port its tests. - Decide on the
if __name__ == "__main__"demo blocks in 91 modules (1,203 lines, mostly plots, never tested). Remove them, or move the long ones (mobile/EKF.py193 lines,Vehicle.py102) toexamples/.
Design (comment before any PR)
- Two-phase initialization. 41 asserts only narrow a type for mypy, mostly attributes that are
Noneuntilplan(),query()or a plot call (occgrid,_goal,start,fig/ax). A planner that returns a result object fromplan()would remove theNone, in line with the stateless aim indesiderata.md. - "Arguments differ" (26):
PlannerBase.plothas 33 parameters andLatticePlanner.plothas 3;Connector.adddiffers fromPyPlot.add. Overlaps #676 and #886. - "Redefined builtin" (70): parameters named
map,id,next,format,bin. These are public names, so renaming needs a deprecation. Alternatively disable the pattern in Codacy.
Probably not worth doing
- Complexity and duplication to the 10% goals. The most complex files are
robot/symbolic_ik.py(total cyclomatic complexity 505),BaseRobot.py,tools/urdf/urdf.pyandDHRobot.py. Splittingsymbolic_ik.py(about 2,200 lines) would help but is a refactor. - Reporting coverage to Codacy as well as Codecov, which would fill its fourth measure.
Decisions already made
- Windows: the two C-kernel tests that timed out on the Windows runner are marked
slowand run only in the Linux coverage job. The analytic IK solver itself passes on Windows (tests/test_analytic_ik.py). No separate slow-test workflow, decided 23 October 2026. - Third-party GitHub Actions are pinned to commit SHAs (#892). The other repos are in petercorke/rvc-ecosystem#24.
- 主要言語
- C++
- スター
- 3.6k
- フォーク
- 645
- 平均マージ
- 1日 8時間
- マージ済み PR(30日)
- 145
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
petercorke/robotics-toolbox-python のほかの issue
-
plt.pause(0) waits for ever: PoseGraph.plot_scan(pause=0) and Vehicle animation may hang対応中かも @huxiaoyi-ovo が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
petercorke/robotics-toolbox-python#876 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
petercorke/robotics-toolbox-python#709 ·
メンテナーはふだん 1 日以内に返信
-
Isaac Sim backendオープンenhancement
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
petercorke/robotics-toolbox-python#903 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Backend registry: single name → constructor dispatch対応中かも @petercorke が今日担当しました。 オープンenhancement
petercorke/robotics-toolbox-python#902 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
tech-debt
難易度 4/5 1〜2日 初心者へのやさしさ 55/100
petercorke/robotics-toolbox-python#898 ·
メンテナーはふだん 1 日以内に返信
petercorke/robotics-toolbox-python の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
sistemicorp/scripts#62 ·
-
Vim/NeoVim pluginオープン
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
extended_stabilizer: `std::pow(2, p/2.)` in `scalar_t::to_complex()` takes ~40% of runtime on Linux対応中かも @mehmetniyazikayi が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
Qiskit/qiskit-aer#2502 ·
メンテナーはふだん 1 日以内に返信
-
Test failure on FreeBSD: #26 unexpected system_clock source対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンlow priority rt_lib tests
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
RobLoach/raylib-cpp#440 · コメント 2 件 ·