私は最近、Android アプリがクラッシュするかどうかを評価することを目的としたプロジェクトに取り組んでいます。評価プロセスは次のとおりです。
- ログ(アプリの実行過程を記録したもの)を採取します。
- 結果を予測する数式を生成します (数式は GP によって生成されます)
- 数式でログを評価する
数式を作成できるようになりましたが、ユーザーの利便性のために、数式を自然言語の形式に変換し、クラッシュが発生した理由をユーザーに伝えたいと考えています (「逆自然言語処理」のように見えると思います)。
アイデアをより明確に説明するために、次のような式が得られたと想像してください。
155 - count(onKeyDown) >= 148
count(onKeyDown) > 7 の場合、"155 - count(onKeyDown) >= 148" の結果が false であることは明らかなので、ログに 7 つを超える onKeyDown イベントが含まれていると、"Failed" と予測されます。
onKeyDown イベントが 7 回 (155-148=7) 以上発生すると、このアプリがクラッシュすることをユーザーに示したいと思います。
ただし、実際の式は次のようにはるかに複雑です。
(< !( ( SUM( {Att[17]}, Event[5]) <= MAX( {Att[7]}, Att[0] >= Att[11]) OR SUM( {Att[17]}, Event[5]) > MIN( {Att[12]}, 734 > Att[19]) ) OR count(Event[5]) != 1 ) > (< count(Att[4] = Att[3]) >= count(702 != Att[8]) + 348 / SUM( {Att[13]}, 641 < Att[12]) mod 587 - SUM( {Att[13]}, Att[10] < Att[15]) mod MAX( {Att[13]}, Event[2]) + 384 > count(Event[10]) != 1))
この関数を C++ で実装しようとしましたが、かなり難しいので、現在作業中のコードのスニペットを示します。
この機能をすばやく実装する方法を知っている人はいますか?(おそらく、いくつかのツールまたは研究結果によるものですか?)
前もって感謝します。