Java


JAVA.STRUCT.ARCHIVE.EJF : Empty jar File Archived (Java)

要旨

An empty jar entry is added to a jar file.

The programmatic construction of zip or jar archives might be incorrect, when for instance empty entries get added to an archive. This checker looks for inconsistent operation in the creation of such archives.

プロパティ

クラス名 Empty jar File Archived (Java)
日本語クラス名 Empty jar File Archived (Java)
クラス分類 信頼性 (reliability)
ニーモニック JAVA.STRUCT.ARCHIVE.EJF
カテゴリー
CWE CWE:909 Missing Initialization of Resource
対応言語 Java で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Empty jar File Archived (Java)"

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipCreator {
  public static void main(String[] args) {
    try (ZipOutputStream jos = new JarOutputStream(new FileOutputStream(new File("archive.jar")))) {
      ZipEntry entry = new ZipEntry("doc.txt");
      jos.putNextEntry(entry);
      jos.closeEntry();  // Empty jar File Archived (Java) warning issued here 
    }
    catch (IOException e) {
      e.printStackTrace();
    }

    try (ZipOutputStream jos = new ZipOutputStream(new FileOutputStream(new File("archive.jar")))) {
      ZipEntry entry = new ZipEntry("doc.txt");
      jos.putNextEntry(entry);
      jos.closeEntry();  // Empty zip File Archived (Java) warning issued here 
    }
    catch (IOException e) {
      e.printStackTrace();
    }

    try (JarOutputStream jos = new JarOutputStream(new FileOutputStream(new File("archive.jar")));
         FileInputStream fis = new FileInputStream(new File("test.txt"))) {

      ZipEntry entry = new ZipEntry("doc.txt");
      jos.putNextEntry(entry);

      byte[] buf = new byte[1024];
      int len;
      while((len = fis.read(buf)) > 0)
        jos.write(buf, 0, len);

      jos.closeEntry();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}

解決法

Check if, for instance, empty entries are added to a jar or zip archive.

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。