2013-12-19 3 views
1

Как создать модуль ImportControl, который запрещает импорт некоторых определенных классов в нескольких src-папках? - Классы определены в собственном проекте, в то время как они не могут использоваться в продуктивном коде, а также в других модульных тестах.Checkstyle - правило импорта-контроля для src-папки

Возможно ли это? Сначала я определил модуль:

<module name="ImportControl"> 
    <property name="severity" value="error"/> 
    <property name="file" value="${config_loc}/import_control.xml"/> 
</module> 

Теперь мне нужен контроль импортера, как это:

<!DOCTYPE import-control PUBLIC "-//Puppy Crawl//DTD Import Control 1.1//EN" 
    "http://www.puppycrawl.com/dtds/import_control_1_1.dtd"> 
<import-control pkg=toset> 
    ... 
</import-control> 

Мой первый подход был установить запрещенную тег с помощью регулярных выражений, так что выбран файлы не могут быть импортированы. Проблема в том, что я не могу определить pkg как «src».

Есть ли способ справиться с этой проблемой только с import-control.xml?

ответ

0

Я боюсь, что это невозможно с помощью ImportControl.

Причина в том, что все, что вы можете указать в import-control.xml, относится к пакетам, но не к исходным папкам или проектам. Checkstyle не знает исходные папки или проекты, потому что это IDE агностик, а это конструкции Eclipse. import-control.xml также не может ссылаться на абсолютные имена файлов, поскольку Checkstyle не знает абсолютных имен файлов ссылочных классов.

Одним из путей решения этой проблемы является выбор запрещенных пакетов, чтобы все они содержали общий компонент (например, com.foo.FORBIDDEN.pkg). Затем вы можете запретить использование пакетов с тегами.

Кроме того, вы можете написать собственную проверку Checkstyle, поддерживающую Eclipse. Я сделал это один раз и преуспел, но могу сказать, что это будет несколько дней работы, чтобы сделать это правильно, даже если вы знаете, что делаете.

Смежные вопросы