Проблемы с FindBugs исключают фильтр

Для краткого сохранения иерархии папок в родительском каталоге для архивации:

import glob
import zipfile

with zipfile.ZipFile(fp_zip, "w", zipfile.ZIP_DEFLATED) as zipf:
    for fp in glob(os.path.join(parent, "**/*")):
        base = os.path.commonpath([parent, fp])
        zipf.write(fp, arcname=fp.replace(base, ""))

Если вы хотите, вы можете изменить это, чтобы использовать pathlib для перемещения по файлу .

7
задан boyd4715 2 July 2009 в 11:51
поделиться

1 ответ

Относительно FindBugFilter ,

(на всякий случай) Вы уверены, что рассматриваете каталоги скомпилированных файлов классов, а не sourcePath? (как указано в этом ответе SO ).

Из раздела Соответствие имени элемента Java :

Если атрибут имени класса, метода или поля начинается с символа ~ остальное содержимое атрибута интерпретируется как регулярное выражение Java , которое сопоставляется с именами рассматриваемого элемента Java.

Будет ли следующее регулярное выражение более точным?

    <Class name="~.*\._.*"/>
    <Class name="~.*?EJS.*"/>
  • «. * \ ._. * » вместо «. * \. ^ _ * » поскольку предполагается, что привязка будет соответствовать началу строки, к которой применяется шаблон регулярного выражения.

  • ". *? EJS. * " вместо ". * EJS * "потому что квантор ? делает сопоставление ленивым, избегая" съедать "EJS. (Плюс « S * » означает «0 или n S», что здесь не помогает)

7
ответ дан 7 December 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: