Как проверить программный код на ошибки

Чистота и качество кода — важные критерии оценки работы программиста. Если код работает — это уже хорошо, но нельзя забывать о том, что он должен быть очищен от «мусора», быть логичным и понятным для других разработчиков.

Выполняет статический анализ кода C / C ++ с использованием инструментов с открытым исходным кодом, таких как cppcheck и clang-tidy, и автоматически создает документацию по коду для пользователей, использующих doxygen. Этот инструмент можно использовать бесплатно.

Полный рабочий процесс для написания, проверки и развертывания кода, бесплатная учетная запись для 1 пользователя и 1 репозитория со 100 МБ хранилища.

Кроссбраузерное онлайн-тестирование. Предоставляет в ваше распоряжение любой IE от 5.5 до 9, а также последние версии Explorer, Opera, Chrome, Safari и Firefox.

Автоматическая проверка кода для PHP, Python, Ruby, Java, JavaScript, Scala, CSS и CoffeeScript, бесплатно для неограниченного количества общедоступных и частных репозиториев.

Автоматизированная инфраструктура как инструмент проверки кода для DevOps, интегрируется с GitHub, Bitbucket и GitLab (даже самостоятельно). Помимо стандартных языков, он анализирует также Ansible, Terraform, CloudFormation, Kubernetes и другие. Бесплатно с открытым исходным кодом.

Автоматическая проверка кода, бесплатная для Open Source и неограниченное количество частных репозиториев, принадлежащих организации (до 4 соавторов). Также бесплатно для студентов и учреждений.

Инструмент покрытия кода (SaaS), бесплатно с открытым исходным кодом и 1 частного репозитория.

Автоматическая проверка кода для Git. Бесплатная версия включает неограниченное количество пользователей, неограниченное количество публичных репозиториев и 1 частный репозиторий.

Отдает приоритет техническому долгу в зависимости от того, как разработчики работают с кодом, и визуализирует такие организационные факторы, как объединение команд и системное мастерство. Бесплатно с открытым исходным кодом.

Показывает какие части вашего кода не охватываются вашим набором тестов. Бесплатно для репозиториев с открытым исходным кодом. Версия Pro для частных репозиториев.

5 бесплатных отчетов по анализу веб-производительности, доступности и безопасности каждый месяц.

Находит ошибки уязвимости, безопасности, проблемы с производительностью и API на основе ИИ. Скорость анализа DeepCode позволяет анализировать ваш код в режиме реального времени и предоставлять результаты, когда вы нажимаете кнопку сохранения в своей среде IDE. Поддерживаемые языки: Java, C / C ++, JavaScript, Python и TypeScript. Бесплатно для открытых исходных кодов и частных репозиториев, бесплатно до 30 разработчиков.

Расширенный статический анализ для автоматического поиска ошибок времени выполнения в коде JavaScript, бесплатно для Open Source.

Анализирует изменения исходного кода, находит и исправляет проблемы, классифицируемые по следующим категориям: безопасность, производительность, анти-шаблоны, риски ошибок, документация и стиль.

Платформа № 1 для оптимизации баз данных. Получайте критически важную информацию о своей базе данных и SQL-запросах с помощью автоматической магии.

Оценка покрытия кода тестами для всех пакетов Go.

Отчеты и подробные рекомендации по оптимизации веб-сайтов.

Статический анализатор кода для оптимизации PostgreSQL. Служба автоматического обнаружения проблем с производительностью, безопасностью и архитектурой базы данных.

Комментирует проблемы качества и стиля кода, что позволяет вам и вашей команде лучше проверять и поддерживать чистую кодовую базу.

Дружелюбный робот, который оптимизирует ваши изображения и экономит ваше время. Оптимизированные изображения означают меньшие размеры файлов без ущерба для качества.

Бесплатный API, обеспечивающий оптимизацию изображений.

Непрерывный анализ безопасности для Java, Python, JavaScript, TypeScript, C #, C и C ++, бесплатно для Open Source.

Обзор кода для репозиториев GitHub, бесплатно для публичных или личных репозиториев.

Статический анализ кода для Java, C / C ++, C #, JavaScript, Ruby или Python, бесплатно для Open Source.

Лучший набор инструментов: от непрерывной интеграции и непрерывного анализа до расширения возможностей анализа человеческого кода с помощью интеллектуального кода.

Помогает командам инженеров максимизировать продуктивность, автоматически анализируя каждый запрос в соответствии с индивидуальными наборами правил для каждого проекта, а также с общими передовыми практиками.

Автоматический анализ исходного кода для Java, JavaScript, C / C ++, C #, VB.NET, PHP, Objective-C, Swift, Python, Groovy и других языков, бесплатно для Open Source.

Предоставляет метрики и аналитические данные на основе данных, собранных с GitHub и GitLab. Обеспечивает видимость на каждом этапе конвейера доставки в решении для данных и аналитики для инженерных команд.

Анализирует изменения, внесенные в каждый запрос на вытягивание, и улучшает опыт разработчиков при проверке кода. Бесплатно для открытого исходного кода и бесплатно для личного использования.

Спасибо за прочтение. Надеемся будет полезно. Если мы забыли упомянуть что-то важное или новое — пишите в комментарии.

https://gbcdn.mrgcdn.ru/uploads/post/2285/og_image/46ef2329aadf2e8160dc305ecb6d11af.png

Чистота и качество кода — важные критерии оценки работы программиста. Если код работает — это уже хорошо, но нельзя забывать о том, что он должен быть очищен от «мусора», быть логичным и понятным для других разработчиков. Ведь нередко работа одного программиста — это лишь часть кода крупной программной платформы, которую придется обслуживать в будущем. Скорее всего, другим людям. 

В компаниях ревью кода обычно проводят сеньоры. Но их время — дорогое. Если хотя бы частично избавить сеньора от этой нагрузки, он может стать гораздо эффективней для компании. Чтобы при этом сохранять качество кода на высоком уровне, стоит использовать онлайн-сервисы оценки готового кода. Эта статья поможет вам выбрать один или несколько таких инструментов. 

Reshift

Сервис, который помогает разработчикам ПО искать и ликвидировать уязвимости перед тем, как отправить результат своей работы в продакшн. У Reshift много положительных отзывов и, помимо поиска проблем в коде, он помогает соответствовать требованиям регуляторов в отношении разработки ПО.

Основные функции:

  • Интеграция с Github и Bitbucket.
  • Пул-реквесты без переключения на другие дашборды во избежание путаницы.
  • Умная маркировка проблемных мест.
  • Отслеживание уязвимостей в каждой ветке.
  • Показ критических уязвимостей перед мерджем с главной веткой.

Collaborator

Один из наиболее продвинутых инструментов ревью кода. Подойдёт как для работы команд, так и для отдельных разработчиков.

Основные функции:

  • Контроль за изменениями кода, определение проблем, создание комментариев.
  • Создание правил и уведомлений на их основе.
  • Кастомные поля, чеклисты, группы участников.
  • Интеграция с 11 разными SCM и IDE, в том числе Eclipse и Visual Studio.
  • Персонализированные ревью-отчеты.

Gerrit

Бесплатный онлайн-сервис проверки качества кода, который позволяет работать прямо в браузере, отклоняя или одобряя изменения. Сочетает в одной платформе багтрекер и инструмент ревью кода.

Основные функции:

  • Интеграция с Git — возможность управления репозиториями Git через Gerrit.
  • Настраиваемая иерархия кода.
  • Добавление комментариев при внесении изменений.
  • Система голосований по вносимым изменениям

Codestriker

Ещё один неплохой open-source инструмент для ревью кода. Онлайн-сервис Codestriker позволяет быстро найти проблемы в коде и улучшить общее его качество.

Основные функции:

  • Фиксирование всех проблем, решений и комментариев в базе данных. Впоследствии к ней можно вернуться и посмотреть, что было сделано, какие изменения внесены.
  • Интеграция с ClearCase, Bugzilla, CVS и не только

Crucible

Онлайн-приложение для ревью кода, поиска проблем, обсуждения изменений в отдельных ветках, шеринга данных и т.п. Crucible не бесплатный сервис. Есть две версии — для небольших команд и для корпораций. В первом случае нужно один раз заплатить $10, после чего становятся доступными безлимитные репозитории для 5 пользователей. Корпоративная версия стоит $1100, покупатель получает возможность открыть безлимитный репозиторий для 10 пользователей. Есть демо-доступ на 30 дней.

Основные функции:

  • Совместная работа как 2-3 программистов, так и больших групп разработчиков.
  • Возможность ревью кода как до, так и после внесения изменений.
  • Совместимость с SVN, Perforce и CVS.

Review Board

Ещё один бесплатный open-source инструмент, который применяется для ревью кода и отдельных документов. Можно попробовать демо-версию на сайте разработчика или же установить инструмент его на своём сервере. Хорош он тем, что даёт возможность лоб в лоб сравнить две версии кода — с изменениями и без — через простой интерфейс.

Существует сервис уже около десяти лет, и всё это время его создатели продолжают совершенствовать Review Board, добавляя новые функции и улучшая существующие.

Основные функции:

  • Простая интеграция в ClearCase, CVS, Perforce, Plastic.
  • Выделение участков кода с проблемами или заданными параметрами.
  • Возможность использовать инструмент для ревью кода как до, так и после внесения изменений.

GitHub

Наверное, нет разработчика, который бы не слышал о GitHub, но как автоматический ревьюер кода он известен гораздо меньше. Здесь у него есть две версии — бесплатная, с ограничением по количеству пользователей, и платная, от $7 в месяц.

В дополнение к обычным инструментам запроса на изменения, есть возможность проверят историю изменений, комментировать участки кода, разрешать простые конфликты при помощи веб-интерфейса. Кроме того, GitHub даёт возможность использовать и сторонние инструменты ревью кода.

Основные функции:

  • Сравнение фрагментов кода лоб в лоб.
  • Просмотр истории отдельных фрагментов кода без просмотра всего документа — так называемый blame view.
  • Создание white-листов по отдельным веткам. 

Phabricator

Это целый набор open-source инструментов от Phacility, облегчающих работу по оценке кода. Можно использовать облачную версию, а можно загрузить всё на свой сервер. Если использовать второй вариант — ограничений нет. В случае же облачной версии нужно будет платить от $20 за пользователя в месяц. Верхняя планка  — $1000 в месяц. Все платные предложения включают техническую поддержку, плюс 30-дневный пробный режим.

Основные функции:

  • Поддержка Git, Mercurial и SVN
  • Встроенные чаты, канбан-доски и другие инструменты
  • API для создания скриптов, взаимодействующих с Phabricator через HTTP JSON API

Rhodecode

Онлайн-инструмент, который поддерживает три версии систем контроля: Mercurial, Git и Subversion. Сервис не бесплатен. Цены начинаются с $8 в месяц за пользователя. Есть возможность заплатить сразу $75 за пользователя в год, что позволяет сэкономить пару десятков долларов. Если не хочется платить, можно загрузить community-edition, установив на своём сервере.

Основные функции:

  • Визуальный лог изменений.
  • Онлайн-редактор кода.
  • Интеграция с существующими проектами.
  • Возможность совместной работы как нескольких разработчиков, так и больших команд.

Завершая подборку, повторим: описанные инструменты для ревью кода не призваны полностью заменить человека. Но они позволяют ускорить проверку во много раз, что даёт возможность значительно экономить время и ресурсы.

А какими инструментами пользуетесь вы? Ждём комментариев, поделитесь с коллегами :)

From Wikipedia, the free encyclopedia

This is a list of notable tools for static program analysis (program analysis is a synonym for code analysis).

Static code analysis tools[edit]

Tool Latest release Free software Supported languages Notes
Ada C / C++ / C# / Objective‑C JVM JavaScript / TypeScript .NET / VB.NET Python Other languages
AdaControl 2021-09-21 (1.22r15) Yes; GPLv2 Ada A tool to control occurrences of various entities or programming patterns in Ada code, used for checking coding standards, enforcement of safety related rules, and support for various manual inspections. Features automatic fixing of violations.
Apache Yetus 2020-12-17 (0.13.0) Yes; ASL 2 C, C++ Java Python Perl, Ruby, Shell, XML A collection of build and release tools. Included is the ‘precommit’ module that is used to execute full and partial/patch CI builds that provides static analysis of code via other tools as part of a configurable report. Built-in support may be extended with plug-ins.
Astrée 2021-10 (21.10) No; proprietary C Finds all potential runtime errors and data races by abstract interpretation, can prove their absence, and can prove functional assertions; tailored towards safety-critical C code (e.g. avionics and automotive). Includes MISRA checker.
Axivion Bauhaus Suite No; proprietary Ada C, C++, C# Java A static code analysis tool suite that performs various analyses such as architecture checking, interface analyses, MISRA checking, and clone detection.
BLAST (retired) 2015-10-30 (2.7.3) Yes; ASL 2 C An open-source software model checker for C programs based on lazy abstraction (follow-on project is CPAchecker.[1]).
Clang 2023-06-02 (16.0.5) Yes; ASL 2 with LLVM Exceptions C, C++, Objective‑C An open-source compiler that includes a static analyzer. As of version 3.2, this analyzer is included in Xcode.[2][3]
Coccinelle 2021-09-06 (1.1.1) Yes; GPLv2 C An open-source source code pattern matching and transformation.
Code Dx No; proprietary C, C++, C# Java, JSP, Scala JavaScript VB.NET Python PHP, Rails, Ruby, XML[4] Software application vulnerability correlation and management system that uses multiple SAST and DAST tools, as well as the results of manual code reviews. Can calculate cyclomatic complexity.
CodePeer 2021-05-07 (21) No; proprietary Ada An advanced static analysis tool that detects potential run-time logic errors in Ada programs.
CodeRush 2021-05-04 (20.2.11) No; proprietary C# JavaScript VB.NET ASP, HTML, XML, XAML A plugin for Visual Studio which alerts users to violations of best practices.
CodeScene 2021-01-01 No; proprietary C, C++, C#, Objective‑C Java, Groovy, Scala JavaScript, TypeScript VB.NET Python Swift, Go, PHP, Ruby Behavioral analysis of code. Helps identify, prioritize, and manage technical debt. Measures organizational aspects of developer teams. Automated pull request integrations.
CodeQL 2023-02-07 (CLI: 2.12.2) No; proprietary C, C++, C# Java, Kotlin JavaScript, TypeScript .NET Python Go, Ruby A code searching tool with an emphasis on finding software bugs. Search patterns are written in a query language which can search the AST and graphs (CFG, DFG, etc.) of supported languages. A plugin is available for Visual Studio.
ConQAT (retired) 2015-02-01 Yes; ASL 2 Ada C#, C++ Java JavaScript ABAP Continuous quality assessment toolkit that allows flexible configuration of quality analyses (architecture conformance, clone detection, quality metrics, etc.) and dashboards.
Coverity 2021-01-23 (2020.09)[5] No; proprietary C, C++, C#, Objective‑C Java JavaScript Python Ruby, PHP Multi-language tool for security and quality issues. Supports compliance standards (MISRA, ISO 26262 and others). Free to use for open-source projects.
ECLAIR 2021-07-15 (3.11)[6] No; proprietary C, C++ Multi-language tool for software verification. Applications range from coding rule validation, to automatic generation of testcases, to the proof of absence of run-time errors or generation of counterexamples, and to the specification of code matchers and rewriters based both syntactic and semantic conditions. Supports compliance standards (MISRA, Embedded C Coding Standard and others).
CPAchecker 2022-01-24 (2.1.1) Yes; ASL 2 C A configurable software verification tool for execution path checking of C.
Cppcheck 2022-05-21 (2.8) Yes; GPLv3 C, C++ Open-source tool that checks for several types of errors, including use of STL. MISRA support is being added.
Cppdepend 2021-01-17 (2021.1) No; proprietary C, C++ Simplifies managing a complex C/C++ code base by analyzing and visualizing code dependencies, by defining design rules, by doing impact analysis, and comparing different versions of the code.
Cpplint 2020-07-29 Yes; CC-BY-3.0[7] C++ An open-source tool that checks for compliance with Google’s style guide for C++ coding.
Fluctuat 2001 No; proprietary Ada95 C Abstract interpreter for the validation of numerical properties of programs.
Frama-C 2022-06-21 Yes; LGPL v2.1, BSD, QPL C An open-source extensible analysis framework for C with several analyzers and a specification language common to all of them. Includes analyses based on abstract interpretation, deductive verification and runtime monitoring.
GrammaTech CodeSonar 2020-06-01 (5.3) No; proprietary C, C++, Objective‑C Java Defect detection (buffer overruns, memory leaks, etc.), concurrency and security checks, architecture visualization and software metrics.
GCC 2023-4-26 (13.1) Yes; GPLv3+ with GCC Runtime Library Exception C Compiling with -fanalyzer flag (available from GCC 10) enables the static analyzer functionality[8]
HCL Security AppScan Source 2020-12-01 (10.0.3) No; proprietary C, C++ Java, JSP JavaScript .NET Python ColdFusion, ASP, PHP, Perl, Visual Basic 6, PL/SQL, T-SQL, COBOL Analyzes source code to identify security vulnerabilities while integrating security testing with software development processes and systems.
Helix QAC 2023-04 (2023.1) No; proprietary C, C++ Formerly PRQA QA·C and QA·C++, deep static analysis of C/C++ for quality assurance and guideline/coding standard enforcement with MISRA support.
Infer Static Analyzer 2021-03-26 (1.1.0) Yes; MIT C, C++, Objective‑C Java Targets null pointer problems, leaks, concurrency issues and API usage for Facebook’s mobile apps. Available as open source on GitHub. Sometimes referred as Facebook Infer.
Imagix 4D 2020-10-01 (10.1.0) No; proprietary C, C++ Java Windows and Linux versions.
Kiuwan 2020-07-22 No; proprietary C, C++, C#, Objective‑C Java, JSP JavaScript VB.NET ABAP, COBOL, PHP, PL/SQL, T-SQL, SQL, Visual Basic, Android Software Analytics end-to-end platform for static code analysis and automated code review. It covers defect detection, application security & IT Risk Management, with enhanced life cycle and application governance features. Support for over 20 languages.
Klocwork 2023-04-04 (2023.1) No; proprietary C, C++, C# Java JavaScript Python Kotlin Provides security vulnerability, standards compliance (MISRA, ISO 26262 and others), defect detection and build-over-build trend analysis
LDRA Testbed 2021-05-07 (v9.8.6) No; proprietary Ada83, Ada95 C, C++ Assembler (Intel, Freescale, Texas Instruments) A software analysis and testing tool suite, that performs static analysis, standards enforcement (eg. MISRA C/C++), dynamic analysis, unit testing and requirements traceability.
Lint 1978-07-26 Yes; permissive BSD-like[9] C The original, from 1978, static code analyzer for C.
MALPAS No; proprietary Ada C Pascal, Assembler (Intel, PowerPC and Motorola) A software static analysis toolset for a variety of languages. Used primarily for safety critical applications in Nuclear and Aerospace industries.
Moose 2021-01-21 (7.0.3) Yes; MIT C, C++ Java .NET Smalltalk Moose started as a software analysis platform with many tools to manipulate, assess or visualize software. It can evolve to a more generic data analysis platform.
NDepend 2022-03-16 (2022.1)[10] No; proprietary C# VB.NET .NET Simplifies managing a complex .NET code base by analyzing and visualizing code dependencies, by defining design rules, by doing impact analysis, and by comparing different versions. Integrates into Visual Studio.
.NET Compiler Platform (Roslyn) 2020-12-08 (3.8.0) Yes; MIT C# VB.NET Open-source compiler framework for C# and Visual Basic .NET developed by Microsoft .NET. Provides an API for analyzing and manipulating syntax. FxCop rules were implemented into Roslyn.
Parasoft C/C++test 2020-11-12 (2020.2) No; proprietary C, C++ A C/C++ tool that does static analysis, unit testing, code review, and runtime error detection; plugins available for Visual Studio and Eclipse-based IDEs.
PC-lint Plus 2022-08-02 (2.0 Beta 2) No; proprietary C, C++ A static analysis tool used to detect a wide range of defects, identify suspicious code, enforce various coding standards (MISRA/AUTOSAR/etc), calculate and report complex metrics, and implement user-defined checks.
PMD 2023-2-25 (6.55.0) Yes; BSD-like C, C++ Java, JSP JavaScript ColdFusion, PHP duplicate code detection (e.g.)[11] code.
Polyspace No; proprietary Ada C, C++ Uses abstract interpretation to detect and prove the absence of certain run time errors and dead code in source code as well as used to check all MISRA (2004, 2012) rules (directives, non directives).
Pretty Diff 2019-04-21 (101.0.0) Yes; CC0 JavaScript, TypeScript Markup, script and style languages (like XML, CSS) A language-specific code comparison tool that features language-specific analysis reporting in addition to language-specific minification and beautification algorithms.
PVS-Studio 2021-10-07 (7.15) No; proprietary C, C++, C++/CLI, C++/CX, C# Java A software analysis tool.
RIPS 2020-02-17 (3.4) No; proprietary Java PHP A static code analysis solution with many integration options for the automated detection of complex security vulnerabilities.
Semgrep 2023-05-24 (1.23.0) Yes; LGPL v2.1 Java JavaScript, TypeScript Python Go, JSON, Ruby, language-agnostic mode A static analysis tool that helps expressing code standards and surfacing bugs early. It also has experimental support for eleven other languages. A CI service and a rule library is also available.
Sider 2021-02-02 No; proprietary JavaScript, CoffeeScript Python Ruby, PHP, Go Static code analysis based automated code review tool working on GitHub and GitLab. Checks style, quality, dependencies, security and bugs. It integrates a number of open source static analysis tools.
SLAM project 2010-07-14 No; proprietary C A project of Microsoft Research for checking that software (drivers) satisfies critical behavioral properties of the interfaces it uses.
SofCheck Inspector / Codepeer 2020-08-24 (21.x) No; proprietary Ada Java Static detection of logic errors, race conditions, and redundant code. automatically extracts pre-postconditions from code.
SonarQube 2022-08-15 (9.6) Partly; framework is LGPL v3.0, but some features can be proprietary C, C#, C++, Objective‑C Java, Kotlin, Scala JavaScript, TypeScript VB.NET Python ABAP, Apex, CSS, COBOL, Flex, Go, HTML, PHP, PLI, PL/SQL, Ruby, Swift, TSQL, Visual Basic 6, XML A continuous inspection engine that finds vulnerabilities, bugs and code smells. Also tracks code complexity, unit test coverage and duplication. Offers branch analysis and C/C++/Objective-C support via commercial licenses.
Sotoarc-Sotograph 2018-12-03 (5.0) No; proprietary C, C++, C# Java ABAP Architecture and quality in-depth analysis and monitoring.
SourceMeter 2016-12-16 (8.2) No; proprietary C, C++ Java Python RPG IV (AS/400) A platform-independent, command-line static source code analyzer. Integrates with PMD and SpotBugs.
Sourcetrail (retired) 2021-04 (2021.4.19) Yes; GPL C, C++ Java Python Perl An open-source source code explorer that provides interactive dependency graphs and supports multiple programming languages.
Sparse 2021-09-06 (0.6.4) Yes; MIT C GCC extensions An open-source tool designed to find faults in the Linux kernel.
Splint 2007-07-12 (3.1.2) Yes; GPLv2 C An open-source tool statically checking C programs for security vulnerabilities and coding mistakes.
StyleCop 2016-05-02 (2016.1.0) Yes; Ms-PL C# .NET Analyzes C# source code to enforce a set of style and consistency rules. It can be run from inside of Microsoft Visual Studio or integrated into an MSBuild project.
Squore 2020-11-27 (20.1) No; proprietary Ada C, C++, C#, Objective‑C Java JavaScript, TypeScript VB.NET Python Fortran, PHP, PL/SQL, Swift, T-SQL, XAML A multi-purpose and multi-language monitoring tool for software projects. It integrates with other scanners.
Svace 2023-04-06 (3.3.2) No; proprietary C, C++, C# Java, Kotlin Go A multi-purpose multi-language inter-procedural inter-modular and scalable static analysis tool for software projects developed by ISP RAS, the main static analyzer that is used in Samsung Corp,[12] detects more than 50 critical error types as well as hundreds of coding issues. [13]
Understand 2023-01-19 (6.3) No; proprietary Ada C, C++, C#, Objective‑C Java JavaScript Python FORTRAN, Jovial, Pascal, VHDL, HTML, PHP, XML A multi-platform tool for code analysis and comprehension of large code bases. Can recognize multiple dialects of C, C++ and C# like ANSI, K&R and Objective C++.
Visual Expert 2021-09-10 No; proprietary PowerBuilder, Oracle PL/SQL, SQL Server Transact-SQL (T-SQL) Continuous Code inspection, reports on quality and security issues, helps understand complex code (cross-references, source code documentation, code comparison, code performance analysis).
Visual Studio 2021-10-12 (16.11) No; proprietary C, C++, C# VB.NET An IDE that provides static code analysis for C/C++ both in the editor environment and from the compiler command line. Also includes the .NET Compiler Platform (Roslyn) which provides C# and VB.NET analysis.
Yasca (retired) 2010-11-01 (2.21) Yes; multiple licenses C, C++ Java JavaScript ASP, PHP, HTML, CSS, ColdFusion, COBOL Yet Another Source Code Analyzer, a plugin-based framework to scan arbitrary file types, with plugins. It integrates with other scanners, including FindBugs, PMD, and Pixy.
IntraJ 2023-05-10 (0.0.9) Yes — BSD3 Java An on-demand static analyser for Java. It provides intraprocedural dataflow analyses and code-smell detection. Available as a standalone tool and as a VSCode extension.
Tool Release Free software Supported languages Notes

Languages[edit]

Ada[edit]

This section is a sublist. Links here will take you to the full list on the top of this article.

  • AdaControl
  • Axivion Bauhaus Suite
  • CodePeer
  • ConQAT
  • Fluctuat
  • LDRA Testbed
  • MALPAS
  • Polyspace
  • SofCheck Inspector
  • Squore
  • Understand

C, C++[edit]

This section is a sublist. Links here will take you to the full list on the top of this article.

  • Astree
  • BLAST
  • Clang
  • Coccinelle
  • Coverity
  • CPAchecker
  • Cppcheck
  • Cppdepend
  • Cpplint
  • ECLAIR
  • Eclipse
  • Fluctuat
  • Frama-C
  • GCC
  • Helix QAC
  • Facebook Infer
  • Klocwork
  • Lint
  • LDRA Testbed
  • Parasoft C/C++test
  • PC-lint Plus
  • Polyspace
  • SLAM project
  • Sparse
  • SonarQube
  • Splint
  • Understand
  • Visual Studio

C#[edit]

This section is a sublist. Links here will take you to the full list on the top of this article.

  • Axivion Bauhaus Suite
  • Code Dx
  • CodeRush
  • CodeScene
  • CodeQL
  • Coverity
  • Kiuwan
  • Klocwork
  • .NET Compiler Platform
  • PVS-Studio
  • SonarQube
  • Sotoarc
  • StyleCop
  • Squore
  • Understand
  • Visual Studio

Fortran[edit]

  • Fortran-Lint[14] (Information Processing Techniques, Inc)

IEC 61131-3[edit]

  • CODESYS Static Analysis – integrated add-on for CODESYS (application code realized e.g. in ST, FBD, LD)

Java[edit]

Tool Latest release Free software Duplicate
code
Notes
Checkstyle 2020-01-26 Yes; LGPL No Besides some static code analysis, it can be used to show violations of a configured coding standard. Duplicate code detection was removed[15] from Checkstyle.
Eclipse 2017-06-28 Yes; EPL No Cross-platform IDE with own set of several hundred code inspections available for analyzing code on-the-fly in the editor and bulk analysis of the whole project. Plugins for Checkstyle, FindBugs, and PMD.
FindBugs 2015-03-06 Yes; LGPL Based on Jakarta BCEL from the University of Maryland. SpotBugs is the spiritual successor of FindBugs, carrying on from the point where it left off with support of its community.
IntelliJ IDEA 2021-04-06 Yes; ASL 2 Yes A leading Java IDE with built-in code inspection and analysis. Plugins for Checkstyle, FindBugs, and PMD.
JArchitect 2017-06-11 No; proprietary Simplifies managing a complex code base by analyzing and visualizing code dependencies, defining design rules, doing impact analysis, and by comparing different versions of the code.
Jtest 2019-05-21 No; proprietary Yes Testing and static code analysis product by Parasoft.
Soot 2020-10-28 Yes; LGPL A language manipulation and optimization framework consisting of intermediate languages.
PMD 2021-01-30 Yes; BSD License Yes Static code analyzer with support for plugins, including CPD. PMD supports checking of several languages.
Squale 2011-05-26 Yes; LGPL A platform to manage software quality.
ThreadSafe 2014-03-28 No; proprietary A static analysis tool focused on finding concurrency bugs.

This section is a sublist. Links here will take you to the full list on the top of this article.

  • Coverity
  • Facebook Infer
  • Klocwork
  • LDRA Testbed
  • PMD
  • RIPS
  • Semgrep
  • SourceMeter
  • Understand

JavaScript[edit]

  • ESLint – JavaScript syntax checker and formatter.
  • Google’s Closure Compiler – JavaScript optimizer that rewrites code to be faster and smaller, and checks use of native JavaScript functions.
  • JSHint – A community driven fork of JSLint.
  • JSLint – JavaScript syntax checker and validator.
  • Klocwork
  • Semgrep – A static analysis tool that helps expressing code standards and surfacing bugs early. A CI service and a rule library is also available.
  • Understand

Julia[edit]

  • JET.jl
  • StaticLint.jl (a linter for Visual Studio Code, i.e. its Julia extension, already included in it)

Objective-C, Objective-C++[edit]

  • Clang – The free Clang project includes a static analyzer. As of version 3.2, this analyzer is included in Xcode.[16]
  • Infer – Developed by an engineering team at Facebook with open-source contributors. Targets null pointers, leaks, API usage and other lint checks. Available as open source on github.
  • Understand

Opa[edit]

  • Opa includes its own static analyzer. As the language is intended for web application development, the strongly statically typed compiler checks the validity of high-level types for web data, and prevents by default many vulnerabilities such as XSS attacks and database code injections.

Packaging[edit]

  • Lintian – Checks Debian software packages for common inconsistencies and errors.
  • Rpmlint – Checks for common problems in rpm packages.

Perl[edit]

  • Perl::Critic – A tool to help enforce common Perl best practices. Most best practices are based on Damian Conway’s Perl Best Practices book.
  • PerlTidy – Program that acts as a syntax checker and tester/enforcer for coding practices in Perl.
  • Padre – An IDE for Perl that also provides static code analysis to check for common beginner errors.

PL/SQL[edit]

  • TOAD – A PL/SQL development environment with a Code xPert component that reports on general code efficiency as well as specific programming issues.
  • Visual Expert – A PL/SQL code analysis tool[17] that reports on programming issues and helps understand and maintain complex code (Impact Analysis, Source Code documentation, Call trees, CRUD matrix, etc.).

PowerBuilder, PowerScript[edit]

  • Visual Expert – A tool scanning PowerBuilder libraries (PBLs) for code inspection, Impact Analysis, Source Code documentation, Call trees, CRUD matrix.

Python[edit]

  • PyCharm – Cross-platform Python IDE with code inspections available for analyzing code on-the-fly in the editor and bulk analysis of the whole project.
  • PyDev – Eclipse-based Python IDE with code analysis available on-the-fly in the editor or at save time.
  • Pylint – Static code analyzer. Quite stringent; includes many stylistic warnings as well.
  • Klocwork
  • Semgrep – Static code analyzer that helps expressing code standards and surfacing bugs early. A CI service and a rule library is also available.
  • Understand

Transact-SQL[edit]

  • Visual Expert – A SQLServer code analysis tool[18] that reports on programming issues and helps understand and maintain complex code (Impact Analysis, source code documentation, call trees, CRUD matrix, etc.).

Tools with duplicate code detection[edit]

This section is a sublist. Links here will take you to the full list on the top of this article.

  • Axivion Bauhaus Suite
  • Code Dx
  • CodeScene
  • PMD
  • SofCheck Inspector
  • SonarQube
  • SourceMeter
  • Understand

Formal methods tools[edit]

Tools that use sound, i.e. over-approximating a rigorous model, formal methods approach to static analysis (e.g., using static program assertions). Sound methods contain no false negatives for bug-free programs, at least with regards to the idealized mathematical model they are based on (there is no «unconditional» soundness). Note that there is no guarantee they will report all bugs for buggy programs, they will report at least one.

  • Astrée – finds all potential runtime errors by abstract interpretation, can prove the absence of runtime errors and can prove functional assertions; tailored towards safety-critical C code (e.g. avionics).
  • CodePeer – Statically determines and documents pre- and post-conditions for Ada subprograms; statically checks preconditions at all call sites.
  • ECLAIR – Uses formal methods-based static code analysis techniques such as abstract interpretation and model checking combined with constraint satisfaction techniques to detect or prove the absence of certain run time errors in source code.
  • ESC/Java and ESC/Java2 – Based on Java Modeling Language, an enriched version of Java
  • Frama-C – An open-source analysis framework for C, based on the ANSI/ISO C Specification Language (ACSL). Its main techniques include abstract interpretation, deductive verification and runtime monitoring.
  • KeY – analysis platform for Java based on theorem proving with specifications in the Java Modeling Language; can generate test cases as counterexamples; stand-alone GUI or Eclipse integration
  • MALPAS – A formal methods tool that uses directed graphs and regular algebra to prove that software under analysis correctly meets its mathematical specification.
  • Polyspace – Uses abstract interpretation, a formal methods based technique,[19] to detect and prove the absence of certain run time errors in source code for C/C++, and Ada
  • SPARK Toolset including the SPARK Examiner – Based on the SPARK language, a subset of Ada.

See also[edit]

  • Automated code review
  • Best Coding Practices
  • List of software development philosophies
  • Dynamic program analysis
  • Software metrics
  • Integrated development environment (IDE) and comparison of integrated development environments. IDEs will usually come with built-in support for static program analysis, or with an option to integrate such support. Eclipse offers such integration mechanism for most different types of extensions (plug-ins).

References[edit]

  1. ^ «CPAchecker». 2015-02-08.
  2. ^ «Static Analysis in Xcode». Apple. Retrieved 2009-09-03.{{cite web}}: CS1 maint: url-status (link)
  3. ^ «Running the analyzer within Xcode». Archived from the original on 5 December 2021. Retrieved 14 January 2022.
  4. ^ «Supported Application Security Testing Tools and Languages». codedx.com. Retrieved Apr 25, 2017.
  5. ^ «Coverity Scan website». Retrieved 2021-02-02.
  6. ^ «ECLAIR website». Retrieved 2021-10-07.
  7. ^ «Readme.md of Google Style Guides». GitHub. Retrieved 8 November 2021.
  8. ^ Malcolm, David (2020-03-26). «Static analysis in GCC 10». Red Hat Developer. Retrieved 2022-04-13.
  9. ^ «UNIX is free!». lemis.com. 2002-01-24.
  10. ^ «NDepend what’s new». ndepend.com. Retrieved 15 June 2022.
  11. ^ «PMD — Browse /pmd/5.0.0 at SourceForge.net». Retrieved Dec 9, 2012.
  12. ^ https://www.ispras.ru/en/technologies/svace/
  13. ^ https://svace.pages.ispras.ru/svace-website/en/
  14. ^ Lint for FortranDenis W. Haskin (May 2, 1988). «Shaking down your FORTRAN programs». Digital Review. pp. 41–47. similar to DEC’s Source Code Analyzer, .. comes into play much earlier .. before users compile their programs
  15. ^ «Remove StrictDuplicateCodeCheck and whole package · Issue #523 · checkstyle/Checkstyle». GitHub.
  16. ^ «Static Analysis in Xcode». Apple. Retrieved 2009-09-03.
  17. ^ «Visual Expert for Oracle — PL/SQL Code Analyzer». www.visual-expert.com. 2017-08-24.
  18. ^ «Visual Expert for SQL Server — Transact SQL Code Analyzer». www.visual-expert.com. 2017-08-24.
  19. ^ Cousot, Patrick (2007). «The Role of Abstract Interpretation in Formal Methods». Fifth IEEE International Conference on Software Engineering and Formal Methods (SEFM 2007). IEEE International Conference on Software Engineering and Formal Methods. pp. 135–140. doi:10.1109/SEFM.2007.42. ISBN 978-0-7695-2884-7. S2CID 67212.

External links[edit]

  • The Web Application Security Consortium’s Static Code Analysis Tool List
  • Java Static Checkers at Curlie
  • SAMATE-Source Code Security Analyzers
  • SATE – Static Analysis Tool Exposition
  • «A Comparison of Bug Finding Tools for Java», by Nick Rutar, Christian Almazan, and Jeff Foster, University of Maryland. Compares Bandera, ESC/Java 2, FindBugs, JLint, and PMD.
  • «Mini-review of Java Bug Finders», by Rick Jelliffe, O’Reilly Media.

Работу программиста можно оценивать по многим критериям, но главные – это, наверно, чистота кода и его качество. Мы рассмотрим 9 сервисов для проверки кода.

Правильно работающий код – это уже прекрасно, но не нужно забывать, что вы должны еще чистить его от “мусора” и делать максимально понятным для тех разработчиков, которые будут задействованы в обслуживании в дальнейшем.

Обычно ревью кода в крупных компаниях делают сеньоры. Но это дорого и неэффективно. Альтернативный вариант – пользоваться онлайн-сервисами, которые дают оценку готовому коду. Если вы хотите выбрать для себя один из таких инструментов, читайте обзоры в статье.

Reshift

Этот сервис дает разработчикам ПО возможность находить и устранять уязвимости до того, как отправлять конечный вариант своего кода в продакшн. 

Reshift получил большое количество положительных отзывов. Кроме поиска проблем сервис также помогает соблюдать требования регуляторов, касающиеся разработки программного обеспечения.

Основной функционал:

  • Интеграция с крупнейшими веб-сервисами для хостинга проектов Github и Bitbucket.
  • Pull request’ы без необходимости переключаться между дашбордами для избежания путаницы.
  • Анализ каждой ветки на наличие уязвимостей.
  • Умная маркировка ошибок и проблемных мест.
  • Демонстрация критических уязвимостей до слияния веток.

Collaborator

Данная система относится к одним из самых продвинутых инструментов рецензирования кода. Подходит и отдельным разработчикам, и тем, кто работает в команде.

Основной функционал:

  • Контролирование внесенных в код изменений, обнаружение проблем и написание комментариев.
  • Разработка правил и создание уведомлений, основанных на этих правилах.
  • Наличие кастомных полей, контрольных списков и группы участников.
  • Персонализированные отчеты.
  • Интеграция с одиннадцатью различными средами, включая Visual Studio.

Codestriker

Достаточно неплохой ревью-инструмент с открытым исходным кодом. Дает возможность быстро отыскивать проблемы и повышать качество кода.

Основной функционал:

  • Фиксирование обнаруженных проблем и решений (с комментариями) в БД. В дальнейшем к базе можно возвратиться и просмотреть все внесенные изменения.
  • Совместимость с системами ClearCase, Bugzilla и др.

Gerrit

С помощью онлайн-сервиса Gerrit можно бесплатно проверить код просто в браузере, в процессе отклоняя или принимая изменения. Сочетает в себе багтрекер и код-ревью инструмент.

Основной функционал:

  • Совместимость с Git.
  • Возможность настроить иерархию кода.
  • Создание комментариев для внесенных изменений.
  • Система голосований о правках.

Crucible

Приложение, которое в онлайн-режиме позволяет делать ревью кода, находить проблемы, обсуждать изменения в каждой отдельной ветке, осуществлять шеринг данных и пр. Это платный сервис с двумя версиями: для маленьких команд и крупных корпораций. Первая стоит 10 долларов и предоставляет безлимитные репозитории на пятерых пользователей. Стоимость корпоративной версии составляет 1100 долларов и включает безлимитный репозиторий на десятерых пользователей. Существует также демо-доступ – он дается на 30 суток.

Основной функционал:

  • Взаимодействие как нескольких программистов, так и многочисленных групп разработчиков.
  • Возможность ревизии кода как до правок, так и после них.
  • Интегрирование с Subversion, P4 и CVS.

GitHub

Каждый разработчик знает, что такое GitHub. Но что этот сервис может делать автоматическую проверку кода, известно далеко не всем. В данном плане имеется 2 версии: бесплатная с ограниченным числом пользователей и платная, стоимостью 7 долларов в месяц.

Помимо стандартных инструментов здесь можно просматривать историю изменений, оставлять к участкам кода комментарии и с помощью веб-интерфейса решать простые конфликты. Также GitHub позволяет применять и сторонние аналогичные ревью-инструменты.

Основной функционал:

  • Лобовое сравнение фрагментов.
  • Blame view – просмотр истории единичных фрагментов кода, не просматривая документ полностью.
  • Формирование white-листов для отдельных веток. 

Review Board

Этому сервису уже около 10 лет, тем не менее, он продолжает развиваться и совершенствоваться. Проект бесплатный, можно испытать демо на официальном сайте или установить Review Board на собственном сервере. Большой плюс инструмента в том, что он позволяет напрямую сравнивать 2 версии кода: до изменений и после. К тому же не может не радовать простой интерфейс. 

Основной функционал:

  • Совместимость с Plastic, P4, CVS и ClearCase.
  • Выделение проблемных участков кода или фрагментов по заданным параметрам.
  • Осуществление проверки кода до внесения изменений и после.

Rhodecode

Платный сервис с поддержкой Mercurial, Git, а также Subversion. Стартовая цена – 8 долларов в месяц для каждого пользователя. Можно оплатить сразу весь год, так будет экономнее, потому что цена составит 75 долларов. Те, кто не хочет тратить деньги, могут скачать community-edition и установить ее на собственном сервере.

Основной функционал:

  • Визуальный журнал изменений.
  • Online-редактор кода.
  • Возможность интеграции с уже созданными проектами.
  • Совместной работа группы разработчиков: как нескольких человек, так и многочисленных команд.

Phabricator

Очередной набор инструментов с открытым исходным кодом, которые облегчают процесс code review. Есть облачная версия, но она с ограничениями, стоит 20 долларов в месяц. Цена полной версии достигает 1000 долларов в месяц (есть несколько и более дешевых предложений). Все платные продукты включают техподдержку и 30-дневный демо-режим. 

Основной функционал:

  • Совместимость с Git, Mercurial и Subversion.
  • Наличие встроенных чатов, Kanban доска и пр.
  • API для написания скриптов, которые взаимодействуют с системой посредством JSON API.

В завершение

В статье описаны очень полезные инструменты для проверки кода, но они не способны стать полноценной заменой человека. Тем не менее, эти сервисы в несколько раз ускоряют проверку, а значит, позволяют существенно экономить ресурсы, в том числе самый главный и дорогой – время.

How to use the free code checker

Code

Copy and paste your Java code into the editor.

Language

Select your language from the dropdown.

Check

Click the Check code button.

Improve

Use the results to improve your Java code.

Get code security right from your IDE

This free code checker can find critical vulnerabilities and security issues with a click. To take your application security to the next level, we recommend using Snyk Code for free right from your IDE.

This free web based Java code checker is powered by Snyk Code. Sign up now to get access to all the features including vulnerability alerts, real time scan results, and actionable fix advice within your IDE.

Human-in-the-Loop JavaScript Code Checker

Snyk Code is an expert-curated, AI-powered JavaScript code checker that analyzes your code for security issues, providing actionable advice directly from your IDE to help you fix vulnerabilities quickly.

Real-time

Scan and fix source code in minutes.

Actionable

Fix vulns with dev friendly remediation.

Integrated in IDE

Find vulns early to save time & money.

Ecosystems

Integrates into existing workflow.

More than syntax errors

Comprehensive semantic analysis.

AI powered by people

Modern ML directed by security experts.

In-workflow testing

Automatically scan every PR and repo.

CI/CD security gate

Integrate scans into the build process.

Frequently asked questions

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Как проверить проводник на наличие ошибок
  • Как проверить принтер epson на ошибки
  • Как проверить принтер canon на наличие ошибок
  • Как проверить приложение на ошибки

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии