ソースコードの安全性の向上
github-actions opened this issue · comments
本プロジェクトには安全性の低いがコードたくさんあります。下記のリストを参考に、安全性の低いコードを撲滅し、安全性を高めましょう。
- 非 null 表明演算子
- 強制ダウンキャスト
- 不必要な lateinit 修飾子
- 想定外の null の握り潰し
API のレスポンスについて
そもそも読んでる API は Search repositories である。
JSONObject
JSONObject#optJSONArray は JSONArray
もしくは null
を返す。
実際に、JSONArray! が返り値なので、No Information: Platform Type(ニュートラル)である。
optString, optLong などは、値が存在しないときは "" や 0 を返すみたい。
レスポンス情報の取得について
現状取得してるのは以下の情報。
val jsonItem = jsonItems.optJSONObject(i)!!
val name = jsonItem.optString("full_name")
val ownerIconUrl = jsonItem.optJSONObject("owner")!!.optString("avatar_url")
val language = jsonItem.optString("language")
val stargazersCount = jsonItem.optLong("stargazers_count")
val watchersCount = jsonItem.optLong("watchers_count")
val forksCount = jsonItem.optLong("forks_conut")
val openIssuesCount = jsonItem.optLong("open_issues_count")
forks_conut
に typo がありそうで、API のレスポンス情報を見てみた。
forks
or forks_count
が求めるものっぽい。
API の call について
今回使用している io.ktor.client.request
パッケージの HttpClient.get
について、以下の記載がある。
Executes a HttpClient GET request, with the specified url as URL and an optional block receiving an
HttpRequestBuilder for further configuring the request.
Tries to receive a specific type T, if fails, an exception is thrown.
例えばホスト名が間違ってる時などは java.net.UnknownHostException
などが返ってきてアプリがクラッシュする。
今呼んでいる API のレスポンスコードとして考えられるものはこちらに記載がある。
特に現状、エラーを補足してユーザーに表示するとかもないので、とりあえずキャッチだけしてクラッシュしないようにする。