ANDROID.UF.BITMAP

UF (Use Freed) 指摘は、リソースが解放された後にリソースを使用する試みがある場合に報告されます。ANDROID.UF.BITMAP 警告は、Bitmap がリサイクルされた後に Bitmap からピクセルを取得する試みや Bitmap にピクセルを設定する試みがあることを示します。

例 1

コピー
     public void addWatermark(final byte[] data) {
         final Bitmap bmp = loadBitmap(data);
         if (bmp != null) {
             final int width = bmp.getWidth();
             for (int i = 0; i < width; i++) {
                 bmp.setPixel(i, i, Color.argb(255, 0, 0, 0));
             }
         }
     }
 
     private Bitmap loadBitmap(byte[] data) {
         final Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
         if (bmp == null) {
             Log.d(TAG, "Was not able to decode an image");
         }
 
         final int width = bmp.getWidth();
         final int height = bmp.getHeight();
         if (width <= 3 || height <= 3 ) {
             bmp.recycle();
         }
         return bmp;
     }

ビットマップのサイズのいずれかが「3」未満の場合に 'loadBitmap()' メソッドでビットマップがリサイクルされる (38 行目) ため、ANDROID.UF.BITMAP が 24 行目のスニペットに対して報告されます。

拡張機能

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