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 解析のチューニングを参照してください。