Dostępny jest ShellCheck 0.9, statyczny analizator dla skryptów shellowych

Opublikowano wydanie projektu ShellCheck 0.9, rozwijającego system analizy statycznej skryptów powłoki, który wspiera wykrywanie błędów w skryptach z uwzględnieniem szczególności bash, sh, ksh i dash. Kod projektu napisany jest w Haskellu i rozpowszechniany na licencji GPLv3. Oferowane są komponenty do integracji z Vim, Emacs, VSCode, Sublime, Atom i różnymi zintegrowanymi środowiskami, które wspierają wyjściowe informacje o błędach zgodne z GCC.

Dostępny jest ShellCheck 0.9, statyczny analizator dla skryptów shellowych

Wsparcie obejmuje wykrywanie zarówno błędów składniowych w kodzie, które mogą prowadzić do błędów wykonywania przez interpreter, jak i problemów semantycznych, które nie przerywają wykonywania, ale powodują anomalia w działaniu skryptu. Analizator może również identyfikować wąskie gardła, niedostrzegalne problemy oraz pułapki, które mogą prowadzić do awarii w określonych okolicznościach.

Wśród klas wykrywanych błędów można wyróżnić problemy z eskalowaniem znaków specjalnych i opakowywaniem w cudzysłowy, błędy w wyrażeniach warunkowych, niewłaściwe użycie poleceń, problemy z obsługą czasu i dat oraz typowe błędy składniowe popełniane przez nowicjuszy. Na przykład, brak spacji przy porównaniu '[[ $foo==0 ]]', obecność spacji 'var = 42' lub wskazanie znaku $ podczas przypisania '$foo=42', użycie zmiennych bez cudzysłowów 'echo $1', dodanie zbędnych nawiasów kwadratowych w 'tr -cd '[a-zA-Z0-9]'.

Dodatkowo, wspierane jest prezentowanie zaleceń dotyczących poprawy stylu kodu, eliminacji problemów z przenośnością oraz zwiększenia niezawodności działania skryptów. Na przykład, zamiast 'echo $[1+2]' sugerowane jest użycie składni '$((..))', konstrukcja 'rm -rf "$STEAMROOT/"*' zostanie oznaczona jako niebezpieczna i może usunąć katalog główny w przypadku pustej zmiennej $STEAMROOT, a użycie 'echo {1..10}' zostanie podkreślone jako niezgodne z dash i sh.

W nowej wersji:

  • Dodano ostrzeżenie dla wyrażeń typu 'local readonly foo'.
  • Dodano ostrzeżenie dotyczące niedostępności poleceń.
  • Dodano ostrzeżenie o odniesieniach zwrotnych w 'declare x=1 y=$x'.
  • Dodano ostrzeżenie, jeśli $? jest używane do zwracania kodu wyjścia z echo, printf, [ ], [[ ]] i test.
  • Dodano zalecenie dotyczące usunięcia ((..))inarray[((idx))]=val.
  • Dodano zalecenie dotyczące łączenia podwójnych nawiasów w kontekście arytmetycznym.
  • Dodano zalecenie dotyczące usunięcia nawiasów okrągłych w wyrażeniu a[(x+1)]=val.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster