kokoichi206 / android-engineer-codecheck

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ソースコードの安全性の向上

github-actions opened this issue · comments

本プロジェクトには安全性の低いがコードたくさんあります。下記のリストを参考に、安全性の低いコードを撲滅し、安全性を高めましょう。

  • 非 null 表明演算子
  • 強制ダウンキャスト
  • 不必要な lateinit 修飾子
  • 想定外の null の握り潰し

API のレスポンスについて

そもそも読んでる API は Search repositories である。

JSONObject

JSONObject#optJSONArrayJSONArray もしくは 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 のレスポンスコードとして考えられるものはこちらに記載がある

特に現状、エラーを補足してユーザーに表示するとかもないので、とりあえずキャッチだけしてクラッシュしないようにする。