2012-01-24 3 views
1

Я попадаю в проект, который нуждается в некоторых инструментах автоматического просмотра. На прошлой неделе мы обнаружили System.exit() в коде, который сбил серверы приложений.Как поймать код System.exit() в огромном проекте Java?

Похоже, что FindBugs не поймает System.exit(). Есть ли какие-либо другие инструменты, которые могут поймать System.exit(), и я могу работать от затмения?

+2

'grep -R System.exit src' –

+0

@Tom, который позаботится о низко висящих фруктах, но он не поймает никакого вызова через отражение. Кроме того, вам нужно также проверить на 'Runtime.getRuntime(). Exit (int)'. –

+0

Eclipse также может искать методы, хотя это тоже не поможет с отражением. – Bombe

ответ

6

Как настроить диспетчера безопасности, который предотвращает что-либо, кроме белого, от вызова System.exit()? Я полагаю, у вашего сервера приложений есть менеджер безопасности; ознакомьтесь с политикой безопасности. Если вы используете свои собственные, посмотрите на checkExit(...)

2

Вы рассматривали использование pmd в дополнение к findbugs? PMD компилирует java-код в xml и запускает к нему запросы xpath.

Например:

 
//VariableDeclarator 
[parent::FieldDeclaration] 
[../Type/ReferenceType 
    /ClassOrInterfaceType[@Image='SimpleDateFormat'] 
    and 
    ..[@Static = 'true'] ] 

является правилом, чтобы определить статически определенный объект SimpleDateFormat (что-то, что можно было бы использовать в нити небезопасным способом).