Qodana 2026.2 беше пусната с нови инспекции за сигурност, публикувани резултати от бенчмаркове, проверки за постквантова криптография и отчитане на покритието на тестовете, което вече не изисква ръчно посочване на отчетите.
Функциите за сигурност са интегрирани в .NET анализатора (linter) и се изпълняват по подразбиране. Qodana проследява ненадеждни данни между различни файлове в C#, JavaScript и TypeScript, което разкрива SQL инжекции, инжектиране на команди, крос-сайт скриптинг (XSS) и преминаване по пътя (path traversal) на места, които правило за единична локация би пропуснало. Резултатите се показват в средата за разработка (IDE) и в процеса на непрекъсната интеграция (CI) заедно с всичко останало, което екипът вече преглежда.
JetBrains разделя анализа на две части. Шаблонните правила улавят лош код на конкретно място, а модулът за проследяване на несигурни данни (taint engine) следи движението на данните. Екипите могат да добавят свои собствени правила във формат OpenGrep.
Всеки може да се запознае с резултатите от бенчмарковете
SABER (Static Analysis Benchmark Evaluation Runner) стартира Qodana срещу публични бенчмаркове за сигурност и сравнява резултатите с очакваните. Пакетът обхваща бенчмаркове на CodeQL за C# и JavaScript, уязвимото уеб приложение WebGoat.NET, оценено спрямо публикуваните от Sonar данни, и демо проект за постквантова криптография.
Изпълненията и обобщените резултати са достъпни на TeamCity сървър с отворен достъп за гости. Сравнението с реалните данни (ground-truth) отчита какво засича скенерът и какво пропуска. И двете колони са публични.
Криптографските проверки са разделени в пет нива
Qodana за JVM маркира криптография, която квантов компютър би могъл да разбие. Групите за инспекция следват препоръките на NIST за постквантова криптография, като варират от най-ниското ниво, което маркира предквантови и остарели алгоритми, до най-високото, което маркира всичко, което не отговаря на максимална сигурност. Всяко ниво включва в себе си и по-ниските нива.
Причината да се започне по-рано е съхранението на данни. Атакуващ, който копира криптиран трафик, може да го пази, докато се появи хардуерът за неговото декриптиране – подход, известен като „събирай сега, декриптирай по-късно“ (harvest now, decrypt later).
Лицензионни ограничения, Laravel, покритие на тестовете
Процесът на компилация може да спре при наличие на забранени лицензи на зависимостите. Две настройки управляват лицензите, които екипът забранява, и тези, които Qodana не може да идентифицира, като при инкременталния анализ само новите нарушения спират изпълнението. Проверките за Laravel са включени по подразбиране в Qodana за PHP.
Отчитането на покритието на тестовете вече не изисква копиране на отчетите в директорията на Qodana, тъй като инструментът ги търси в местоположенията по подразбиране за проекти на JVM, Android, JavaScript, PHP, Python, Go и .NET. Анализът на заявки за сливане (pull requests) отчита покритието за новодобавения код, а средата за разработка (IDE) подчертава променените линии, които не са покрити от тестове.
Кодът на Kotlin и Java ще получи същите шаблонни правила и междуфайлов taint анализ в бъдеща версия. В момента .NET анализаторът разполага и с двете възможности.