ANDROID.UF.MEDIARECORDER

UF (Use Freed) 指摘は、リソースが解放された後にリソースを使用する試みがある場合に報告されます。ANDROID.UF.MEDIARECORDER 警告は、MediaRecorder が解放された後に MediaRecorder の使用を試みていることを示します。

例 1

コピー
     public boolean onKeyDown(final int keyCode, final KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
             MediaRecorder mRecorder = new MediaRecorder();
 
             mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
             mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
             mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
 
             final File file = new File("test.raw");
             if (file.exists()) {
                 mRecorder.release();
             } else {
                 mRecorder.setOutputFile(file.getPath());
             }
 
             mRecorder.start();
             mRecorder.release();
             return true;
         }
         return super.onKeyDown(keyCode, event);
     }

出力ファイルが存在する場合に解放 (25 行目) される「mRecorder」を使用する試みがあるため、ANDROID.UF.MEDIARECORDER が 30 行目のスニペットに対して報告されます。

拡張機能

このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。