
Поддерживается выявление в коде как синтаксических ошибок, приводящих к выводу интерпретатором ошибки в момент выполнения, так и семантических проблем, из-за которых выполнение не нарушается, но возникают аномалии в поведении скрипта. Анализатор также может определять узкие места, неочевидные проблемы и подводные камни, которые могут приводить к сбоям при определённом стечении обстоятельств.
Из классов выявляемых ошибок можно отметить проблемы с экранированием спецсимволов и обрамлением в кавычки, ошибки в условных выражениях, неверное использование команд, проблемы обработки времени и дат, и типовые синтаксические ошибки новичков. Например, отсутствие пробелов при сравнении «[[ $foo==0 ]]», наличие пробелов «var = 42» или указание символа $ при присвоении «$foo=42», использование переменных без кавычек «echo $1», указание лишних квадратных скобок в «tr -cd ‘[a-zA-Z0-9]'»,
Дополнительно поддерживается вывод рекомендаций по улучшению стиля кода, устранению проблем с переносимостью и повышению надёжности работы скриптов. Например, вместо «echo $[1+2]» будет предложено использовать синтаксис «$((..))», конструкция ‘rm -rf «$STEAMROOT/»*’ будет отмечена как небезопасная и способная удалить корневой каталог при незаполнении переменной $STEAMROOT, а использование «echo {1..10}» будет выделено как несовместимое с dash и sh.
В новой версии:
- Добавлено предупреждение для выражений вида ‘local readonly foo’.
- Добавлено предупреждение о недоступности команд.
- Добавлено предупреждение об обратных ссылках в ‘declare x=1 y=$x’.
- Добавлено предупреждение, если $? используется в echo/printf/[ ]/[[ ]]/test.
- Добавлена рекомендация по удалению ((..))inarray[((idx))]=val.
- Добавлена рекомендация по объединению двойных скобок в арифметических контекстах.
- Добавлена рекомендация по удалению круглых скобок в выражении
a[(x+1)]=val.
Источник: http://www.opennet.ru/opennews/art.shtml?num=58394