processing / processing/processing4

Detect `InvocationTargetException` when initializing global variables outside setup

オープン
#252 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

enhancement help wanted
主要言語
Java
スター
494
フォーク
183
平均マージ
4時間 39分
マージ済み PR(30日)
3

説明

Created by: mglst

Current Behavior

Whilst coding I ran into RuntimeException: java.lang.reflect.InvocationTargetException. It only took a google search to find another user on the Processing Foundation Forum with the same issue, and a well explained fix: https://discourse.processing.org/t/just-starting-to-code-and-code-returns-java-lang-reflect-invocationtargetexception-error/14615/2.
There are many weird exception catching things that the Processing IDE already does to mitigate the most common of these Processing-specific oddities. The post that I link to has 2.1k, so I can safely say I'm neither the first nor last person to run into this. I find that the way Java errors are thrown is quite confusing. For instance, it complains about code at a specified line, but this refers to the 'java' file rather than the 'pde' file that I'm working on - this is not obvious and can be a source for more confusion still if I go looking for a bug at the wrong place in my code ("what even are .java files? and what do you mean I have to 'export' as application to get a glimpse at it?")

Steps to Reproduce

  1. see code from https://discourse.processing.org/t/just-starting-to-code-and-code-returns-java-lang-reflect-invocationtargetexception-error/14615

Your Environment

  • Processing version: 4.0a5
  • Operating System and OS version: macOS 12.0B5

Solutions

I would like the IDE to detect when making such errors and warn me that I'm likely doing something wrong by defining initialising global variables outside of setup - especially since this seems like something which is fine for ints, booleans, bytes, ... (as I understand, all primitives - although confusingly also Strings)
The fact that this is a RunTime error makes me believe that this might be a tricky suggestion to implement, but I'd hope that it would be a useful enough feature to be worth the cost

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

リンクされている Processing Forum の再現例と、IDE に既にある例外処理の動作から始めます。setup の外部でグローバル変数を初期化すると InvocationTargetException が発生する仕組みを明らかにし、次に IDE がそれをどのように検出し、ユーザーの PDE コードを指し示す警告を表示するべきかを定義します。報告されたケースに、明確で Processing 固有の診断が示されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
developer-experience
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。