<!DOCTYPE html><html data-geo-country-name="France" data-geo-country-code="FR" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="generator" content="Gatsby 5.15.0"/><meta name="description" content="Find the latest license information related to SONAR Source-Available License v1.0. " data-gatsby-head="true"/><meta name="image" content="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/4ed7b130-1fe0-4a03-a30c-e82614f04635/sonar-open-graph-2x-2.png" data-gatsby-head="true"/><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview" data-gatsby-head="true"/><meta name="apple-mobile-web-app-title" content="Sonar" data-gatsby-head="true"/><meta property="og:type" content="website" data-gatsby-head="true"/><meta property="og:title" content="SONAR Source-Available License v1.0" data-gatsby-head="true"/><meta property="og:description" content="Find the latest license information related to SONAR Source-Available License v1.0. " data-gatsby-head="true"/><meta property="og:url" content="https://www.sonarsource.com/license/ssal/" data-gatsby-head="true"/><meta property="og:image" content="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e69d91e-9d71-453d-a4c7-d25797ae7e1a/sonar-open-graph%402x.png" data-gatsby-head="true"/><meta name="twitter:site" content="@SonarSource" data-gatsby-head="true"/><meta name="twitter:card" content="summary_large_image" data-gatsby-head="true"/><meta name="twitter:title" content="SONAR Source-Available License v1.0" data-gatsby-head="true"/><meta name="twitter:description" content="Find the latest license information related to SONAR Source-Available License v1.0. " data-gatsby-head="true"/><meta name="twitter:image" content="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e69d91e-9d71-453d-a4c7-d25797ae7e1a/sonar-open-graph%402x.png" data-gatsby-head="true"/><meta name="zd-site-verification" content="c95o2emv60rf7gej21hmkn" data-gatsby-head="true"/><style data-href="/styles.ab8382fd948968e7cd0a.css" data-identity="gatsby-global-css">pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{background:#0d1117;color:#c9d1d9}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{background-color:#033a16;color:#aff5b4}.hljs-deletion{background-color:#67060c;color:#ffdcd7}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:#00000026}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,#00000080,#0000)}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid #0000;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}:root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74d3c;--toastify-color-transparent:#ffffffb3;--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-container-width:fit-content;--toastify-toast-width:320px;--toastify-toast-offset:16px;--toastify-toast-top:max(var(--toastify-toast-offset),env(safe-area-inset-top));--toastify-toast-right:max(var(--toastify-toast-offset),env(safe-area-inset-right));--toastify-toast-left:max(var(--toastify-toast-offset),env(safe-area-inset-left));--toastify-toast-bottom:max(var(--toastify-toast-offset),env(safe-area-inset-bottom));--toastify-toast-background:#fff;--toastify-toast-padding:14px;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;--toastify-toast-shadow:0px 4px 12px #0000001a;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error);--toastify-color-progress-bgo:0.2}.Toastify__toast-container{box-sizing:border-box;color:#fff;display:flex;flex-direction:column;position:fixed;-webkit-transform:translateZ(var(--toastify-z-index));width:var(--toastify-container-width);z-index:var(--toastify-z-index)}.Toastify__toast-container--top-left{left:var(--toastify-toast-left);top:var(--toastify-toast-top)}.Toastify__toast-container--top-center{align-items:center;left:50%;top:var(--toastify-toast-top);transform:translateX(-50%)}.Toastify__toast-container--top-right{align-items:end;right:var(--toastify-toast-right);top:var(--toastify-toast-top)}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{align-items:center;bottom:var(--toastify-toast-bottom);left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{align-items:end;bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right)}.Toastify__toast{--y:0;align-items:center;border-radius:var(--toastify-toast-bd-radius);box-shadow:var(--toastify-toast-shadow);box-sizing:border-box;display:flex;flex:1 1 auto;font-family:var(--toastify-font-family);margin-bottom:1rem;max-height:var(--toastify-toast-max-height);min-height:var(--toastify-toast-min-height);padding:var(--toastify-toast-padding);position:relative;touch-action:none;width:var(--toastify-toast-width);word-break:break-word;z-index:0}@media only screen and (max-width:480px){.Toastify__toast-container{left:env(safe-area-inset-left);margin:0;width:100vw}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translateX(0)}.Toastify__toast-container--rtl{left:auto;right:env(safe-area-inset-right)}.Toastify__toast{--toastify-toast-width:100%;border-radius:0;margin-bottom:0}}.Toastify__toast-container[data-stacked=true]{width:var(--toastify-toast-width)}.Toastify__toast--stacked{position:absolute;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s;width:100%}.Toastify__toast--stacked[data-collapsed] .Toastify__close-button,.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{bottom:100%;content:"";height:calc(var(--g)*1px);left:0;position:absolute;right:0}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{bottom:0;content:"";height:100%;left:0;position:absolute;right:0;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-icon{display:flex;flex-shrink:0;margin-inline-end:10px;width:22px}.Toastify--animate{animation-duration:.5s;animation-fill-mode:both}.Toastify--animate-icon{animation-duration:.3s;animation-fill-mode:both}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{background:var(--toastify-color-info);color:var(--toastify-text-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{background:var(--toastify-color-success);color:var(--toastify-text-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{background:var(--toastify-color-warning);color:var(--toastify-text-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{background:var(--toastify-color-error);color:var(--toastify-text-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:var(--toastify-color-transparent)}.Toastify__close-button{background:#0000;border:none;color:#fff;cursor:pointer;opacity:.7;outline:none;padding:0;position:absolute;right:6px;top:6px;transition:.3s ease;z-index:1}.Toastify__toast--rtl .Toastify__close-button{left:6px;right:unset}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{bottom:0;height:100%;left:0;opacity:.7;position:absolute;transform-origin:left;width:100%;z-index:1}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{border-bottom-left-radius:0;left:auto;right:0;transform-origin:right}.Toastify__progress-bar--wrp{border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius);bottom:0;height:5px;left:0;overflow:hidden;position:absolute;width:100%}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{height:100%;opacity:var(--toastify-color-progress-bgo);width:100%}.Toastify__spinner{animation:Toastify__spin .65s linear infinite;border:2px solid;border-color:var(--toastify-spinner-color-empty-area);border-radius:100%;border-right-color:var(--toastify-spinner-color);box-sizing:border-box;height:20px;width:20px}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateX(90deg)}40%{animation-timing-function:ease-in;transform:perspective(400px) rotateX(-20deg)}60%{opacity:1;transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{opacity:1;transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg)}to{opacity:0;transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg)}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(110%,var(--y),0);visibility:hidden}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(-110%,var(--y),0);visibility:hidden}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(0,500px,0);visibility:hidden}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(0,-500px,0);visibility:hidden}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-duration:.3s;animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-duration:.3s;animation-name:Toastify__slideOutRight;animation-timing-function:ease-in}.Toastify__slide-exit--top-center{animation-duration:.3s;animation-name:Toastify__slideOutUp;animation-timing-function:ease-in}.Toastify__slide-exit--bottom-center{animation-duration:.3s;animation-name:Toastify__slideOutDown;animation-timing-function:ease-in}@keyframes Toastify__spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}[data-rmiz-ghost]{pointer-events:none;position:absolute}[data-rmiz-btn-unzoom],[data-rmiz-btn-zoom]{appearance:none;background-color:#000000b3;border:none;border-radius:50%;box-shadow:0 0 1px #ffffff80;color:#fff;height:40px;margin:0;outline-offset:2px;padding:9px;touch-action:manipulation;width:40px}[data-rmiz-btn-zoom]:not(:focus):not(:active){clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;pointer-events:none;position:absolute;white-space:nowrap;width:1px}[data-rmiz-btn-zoom]{cursor:zoom-in;inset:10px 10px auto auto;position:absolute}[data-rmiz-btn-unzoom]{cursor:zoom-out;inset:20px 20px auto auto;position:absolute;z-index:1}[data-rmiz-content=found] [data-zoom],[data-rmiz-content=found] [role=img],[data-rmiz-content=found] img,[data-rmiz-content=found] svg{cursor:zoom-in}[data-rmiz-modal]::backdrop{display:none}[data-rmiz-modal][open]{background:#0000;border:0;height:100vh;height:100dvh;margin:0;max-height:none;max-width:none;overflow:hidden;padding:0;position:fixed;width:100vw;width:100dvw}[data-rmiz-modal-overlay]{inset:0;position:absolute;transition:background-color .3s}[data-rmiz-modal-overlay=hidden]{background-color:#fff0}[data-rmiz-modal-overlay=visible]{background-color:#fff}[data-rmiz-modal-content]{height:100%;position:relative;width:100%}[data-rmiz-modal-img]{cursor:zoom-out;image-rendering:high-quality;position:absolute;transform-origin:top left;transition:transform .3s}@media (prefers-reduced-motion:reduce){[data-rmiz-modal-img],[data-rmiz-modal-overlay]{transition-duration:.01ms!important}}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:var(--swiper-navigation-sides-offset,10px)}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}</style><style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript><script type="module" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script><script nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA"><!-- Google Tag Manager -->
      (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
      })(window,document,'script','dataLayer','GTM-56V34P9');
      <!-- End Google Tag Manager --></script><script src="https://js.navattic.com/embeds.js" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA"></script><link rel="preload" as="font" href="/fonts/inter/inter-variable.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/inter/inter-italic-variable.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-bold.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-bold-italic.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-light.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-light-italic.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-medium.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-medium-italic.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-regular.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-regular-italic.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-semibold.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><link rel="preload" as="font" href="/fonts/poppins/poppins-semibold-italic.woff2" type="font/woff2" crossorigin="anonymous" data-gatsby-head="true"/><title data-gatsby-head="true">SONAR Source-Available License v1.0 | License  | Sonar</title><link rel="alternate" hrefLang="x-default" href="https://www.sonarsource.com/license/ssal/" data-gatsby-head="true"/><link rel="alternate" hrefLang="ja" href="https://www.sonarsource.com/jp/license/ssal/" data-gatsby-head="true"/><link rel="alternate" hrefLang="zh" href="https://www.sonarsource.com/zh/license/ssal/" data-gatsby-head="true"/><link rel="alternate" hrefLang="fr" href="https://www.sonarsource.com/fr/license/ssal/" data-gatsby-head="true"/><link rel="alternate" hrefLang="de" href="https://www.sonarsource.com/de/license/ssal/" data-gatsby-head="true"/><link rel="alternate" hrefLang="es" href="https://www.sonarsource.com/es/license/ssal/" data-gatsby-head="true"/><link rel="alternate" hrefLang="ko" href="https://www.sonarsource.com/ko/license/ssal/" data-gatsby-head="true"/><link rel="canonical" href="https://www.sonarsource.com/license/ssal/" data-gatsby-head="true"/><link rel="apple-touch-icon" href="/app-icon.png" data-gatsby-head="true"/><style>
      fieldset[name=marketing_opt_out] {
        display: none;
      }
    </style>
    </head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><noscript><iframe title="CHEQ" src="https://obseu.testrobotflower.com/ns/8851a52c7a2742ba5feb9d36b5ff65b8.html?ch=cheq4ppc" width="0" height="0" style="display:none"></iframe></noscript><style data-emotion="css-global 1dyt4eh">*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor;--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-gradient-from-position:var(--tw-empty,/*!*/ /*!*/);--tw-gradient-via-position:var(--tw-empty,/*!*/ /*!*/);--tw-gradient-to-position:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-blur:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-invert:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-opacity:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-contain-size:var(--tw-empty,/*!*/ /*!*/);--tw-contain-layout:var(--tw-empty,/*!*/ /*!*/);--tw-contain-paint:var(--tw-empty,/*!*/ /*!*/);--tw-contain-style:var(--tw-empty,/*!*/ /*!*/);}::before,::after{--tw-content:'';}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;}body{margin:0;line-height:inherit;}hr{height:0;color:inherit;border-top-width:1px;}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}b,strong{font-weight:bolder;}code,kbd,samp,pre{font-family:ui-monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}table{text-indent:0;border-color:inherit;border-collapse:collapse;}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0;}button,select{text-transform:none;}button,input:where([type='button']),input:where([type='reset']),input:where([type='submit']){-webkit-appearance:button;background-color:transparent;background-image:none;}:-moz-focusring{outline:auto;}:-moz-ui-invalid{box-shadow:none;}progress{vertical-align:baseline;}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto;}[type='search']{-webkit-appearance:textfield;outline-offset:-2px;}::-webkit-search-decoration{-webkit-appearance:none;}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}summary{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0;}fieldset{margin:0;padding:0;}legend{padding:0;}ol,ul,menu{list-style:none;margin:0;padding:0;}dialog{padding:0;}textarea{resize:vertical;}input::-webkit-input-placeholder{opacity:1;color:#9ca3af;}input::-moz-placeholder{opacity:1;color:#9ca3af;}input:-ms-input-placeholder{opacity:1;color:#9ca3af;}textarea::-webkit-input-placeholder{opacity:1;color:#9ca3af;}textarea::-moz-placeholder{opacity:1;color:#9ca3af;}textarea:-ms-input-placeholder{opacity:1;color:#9ca3af;}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af;}button,[role="button"]{cursor:pointer;}:disabled{cursor:default;}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle;}img,video{max-width:100%;height:auto;}[hidden]:where(:not([hidden="until-found"])){display:none;}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-gradient-from-position:var(--tw-empty,/*!*/ /*!*/);--tw-gradient-via-position:var(--tw-empty,/*!*/ /*!*/);--tw-gradient-to-position:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-blur:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-invert:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-opacity:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-backdrop-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-contain-size:var(--tw-empty,/*!*/ /*!*/);--tw-contain-layout:var(--tw-empty,/*!*/ /*!*/);--tw-contain-paint:var(--tw-empty,/*!*/ /*!*/);--tw-contain-style:var(--tw-empty,/*!*/ /*!*/);}</style><style data-emotion="css-global qxs00n">@font-face{font-family:'Inter-Fallback';size-adjust:104.18%;src:local('Arial');}@font-face{font-family:'Poppins-Fallback';size-adjust:103.25%;src:local('Arial');}@font-face{font-family:'Inter';font-style:normal;src:url('/fonts/inter/inter-variable.woff2') format('woff2 supports variations'),url('/fonts/inter/inter-variable.woff2') format('woff2-variations'),url('/fonts/inter/inter-variable.ttf') format('ttf supports variations');font-weight:100 900;text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Inter';font-style:italic;src:url('/fonts/inter/inter-italic-variable.woff2') format('woff2 supports variations'),url('/fonts/inter/inter-italic-variable.woff2') format('woff2-variations'),url('/fonts/inter/inter-italic-variable.ttf') format('ttf supports variations');font-weight:100 900;text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:normal;font-weight:300;src:url('/fonts/poppins/poppins-light.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-light.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-light.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:italic;font-weight:300;src:url('/fonts/poppins/poppins-light-italic.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-light-italic.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-light-italic.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:normal;font-weight:400;src:url('/fonts/poppins/poppins-regular.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-regular.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-regular.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:italic;font-weight:400;src:url('/fonts/poppins/poppins-italic.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-italic.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-italic.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:normal;font-weight:500;src:url('/fonts/poppins/poppins-medium.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-medium.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-medium.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:italic;font-weight:500;src:url('/fonts/poppins/poppins-medium-italic.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-medium-italic.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-medium-italic.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:normal;font-weight:600;src:url('/fonts/poppins/poppins-semibold.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-semibold.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-semibold.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:italic;font-weight:600;src:url('/fonts/poppins/poppins-semibold-italic.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-semibold-italic.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-semibold-italic.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:normal;font-weight:700;src:url('/fonts/poppins/poppins-bold.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-bold.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-bold.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}@font-face{font-family:'Poppins';font-style:italic;font-weight:700;src:url('/fonts/poppins/poppins-bold-italic.woff2') format('woff2 supports variations'),url('/fonts/poppins/poppins-bold-italic.woff2') format('woff2-variations'),url('/fonts/poppins/poppins-bold-italic.ttf') format('ttf supports variations');text-rendering:optimizeLegibility;font-display:swap;}html{font-size:16px;scroll-behavior:smooth;scroll-padding-top:80px;}body{font-family:Poppins,Poppins-Fallback;line-height:1.25rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;}*{box-sizing:border-box;}[data-codename][id]{scroll-margin-top:100px;}h1,h2,h3,h4,h5,h6{font-family:Poppins,Poppins-Fallback;}pre,code{font-family:ui-monospace,SFMono-regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;}button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;}.u-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;}.u-scroll-forbid{inset:0px;height:100%;margin:0px;overflow-y:hidden;position:fixed;}[data-rmiz-btn-unzoom]{--tw-bg-opacity:1;background-color:rgb(41 0 66 / var(--tw-bg-opacity, 1));}:root{--toastify-color-info:#126ED3;--toastify-color-success:#126ED3;--toastify-color-error:#D3121D;--toastify-toast-width:448px;--toastify-font-family:'Inter',sans-serif;--toastify-text-color-info:#290042;--toastify-text-color-success:#290042;--toastify-text-color-warning:#290042;--toastify-text-color-error:#290042;}.Toastify__toast{padding:15px;}.Toastify__toast-body{font-weight:500;padding-bottom:20px;}.Toastify__progress-bar{bottom:15px;margin:0 20px;width:calc(100% - 40px);}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{--tw-bg-opacity:1;background-color:rgb(41 0 66 / var(--tw-bg-opacity, 1));}.Toastify__close-button{color:#290042;}</style><script type="application/ld+json" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Sonar",
  "legalName": "SonarSource SA",
  "url": "https://www.sonarsource.com",
  "logo": "https://assets-eu-01.kc-usercontent.com/55017e37-262d-017b-afd6-daa9468cbc30/5590df23-cc3a-4487-a3dd-e5dcb2da8731/sonar-logo-horizontal.svg",
  "foundingDate": "2008",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "PO Box 765",
    "addressLocality": "Geneva",
    "addressRegion": "15",
    "postalCode": "CH-1215",
    "addressCountry": "Switzerland"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "email": "https://www.sonarsource.com/company/contact/"
  },
  "sameAs": [
    "https://sonarlint.org",
    "https://sonarqube.org",
    "https://sonarcloud.io",
    "https://www.youtube.com/c/SonarSource",
    "https://www.facebook.com/SonarSource/",
    "https://www.reddit.com/user/SonarSource/",
    "https://www.linkedin.com/company/sonarsource/",
    "https://twitter.com/sonarsource"
  ]
}</script><section class="Toastify" aria-live="polite" aria-atomic="false" aria-relevant="additions text" aria-label="Notifications Alt+T"></section><style data-emotion="css 1fcftn7">.css-1fcftn7{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));}</style><main class="css-1fcftn7 ev4uova0"><style data-emotion="css 8atqhb">.css-8atqhb{width:100%;}</style><div class="css-8atqhb ev4uova1"><!--$--><style data-emotion="css 123boh6">.css-123boh6{position:-webkit-sticky;position:sticky;top:0;width:100%;z-index:40;}</style><div data-codename="main_navigation" class="css-123boh6 e1l3pc5b10"><style data-emotion="css 1c3ldif">.css-1c3ldif{width:100%;--tw-bg-opacity:1;background-color:rgb(18 110 211 / var(--tw-bg-opacity, 1));z-index:40;position:relative;}</style><aside data-block-information-stripe="true" class="css-1c3ldif e1wjzm0e4"><style data-emotion="css y1kir8">.css-y1kir8{width:100%;margin-right:auto;margin-left:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;width:100%;padding-left:40px;padding-right:40px;padding-top:16px;padding-bottom:16px;text-align:center;}@media (min-width: 500px){.css-y1kir8{max-width:500px;}}@media (min-width: 720px){.css-y1kir8{max-width:720px;}}@media (min-width: 1120px){.css-y1kir8{max-width:1120px;}}@media (min-width: 1120px){.css-y1kir8{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:24px;}}@media (min-width: 1120px){.css-y1kir8{padding-top:10px;padding-bottom:10px;}}@media (min-width: 720px){.css-y1kir8{text-align:left;}}</style><div class="css-y1kir8 e1wjzm0e3"><style data-emotion="css y47k4f">.css-y47k4f{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;width:auto;position:absolute;right:4px;top:4px;cursor:pointer;}</style><div class="css-y47k4f e1wjzm0e0"><style data-emotion="css 1n3p69t">.css-1n3p69t{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;height:34px;width:34px;}.css-1n3p69t svg *{fill:#FFFFFF;}</style><span class="css-1n3p69t ec125rg0"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none"><g clip-path="url(#a)"><path d="M9.9.567 9.427.093a.33.33 0 0 0-.474 0l-3.96 3.96L1.04.1a.33.33 0 0 0-.473 0L.1.567a.33.33 0 0 0 0 .473L4.06 5 .1 8.96a.33.33 0 0 0 0 .473l.473.474a.33.33 0 0 0 .474 0l3.96-3.96 3.96 3.96a.33.33 0 0 0 .473 0l.473-.474a.33.33 0 0 0 0-.473L5.953 5 9.9 1.04a.33.33 0 0 0 0-.473Z"></path></g><defs><clipPath id="a"><path d="M0 0h10v10H0z"></path></clipPath></defs></svg></span></div><style data-emotion="css 1vth91s">.css-1vth91s{font-family:Inter,Inter-Fallback;font-weight:500;font-size:16px;line-height:20px;color:#FFFFFF;}</style><span class="css-1vth91s e1wjzm0e2">Watch on-demand</span><style data-emotion="css 1oq1aq4">.css-1oq1aq4{font-family:Inter,Inter-Fallback;font-weight:500;font-size:16px;line-height:20px;color:#FFFFFF;text-decoration-line:underline;}</style><a target="_self" class="css-1oq1aq4 e1wjzm0e1" href="/resources/webinars/a-qualitative-analysis-of-six-leading-llms/">A qualitative analysis of six leading LLMs - Watch now!</a></div></aside><style data-emotion="css 1i74mrw">.css-1i74mrw{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);padding-left:21px;padding-right:21px;padding-top:20px;padding-bottom:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:64px;border-bottom-width:2px;border-style:solid;border-color:#290042;}@media (min-width: 1120px){.css-1i74mrw{padding-left:33px;padding-right:33px;padding-top:0;padding-bottom:0;}}</style><header data-block-header="true" class="css-1i74mrw e1l3pc5b9"><style data-emotion="css 1fp82pj">.css-1fp82pj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;height:100%;width:100%;}@media (min-width: 1120px){.css-1fp82pj{width:100%;margin-right:auto;margin-left:auto;-webkit-box-pack:normal;-ms-flex-pack:normal;-webkit-justify-content:normal;justify-content:normal;}@media (min-width: 500px){.css-1fp82pj{max-width:500px;}}@media (min-width: 720px){.css-1fp82pj{max-width:720px;}}@media (min-width: 1120px){.css-1fp82pj{max-width:1120px;}}}@media (min-width: 1120px){.css-1fp82pj{gap:32px;}}</style><nav class="css-1fp82pj e1l3pc5b6"><style data-emotion="css tdl8dt">.css-tdl8dt{grid-column:span 3/span 3;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media (min-width: 1120px){.css-tdl8dt{grid-column:span 2/span 2;}}.css-tdl8dt img{transition-property:none!important;opacity:1!important;max-height:32px;}@media (min-width: 1120px){.css-tdl8dt img{max-height:40px;}}</style><div class="css-tdl8dt e1l3pc5b5"><a title="Home" href="/"><picture><source srcSet="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=128&amp;h=32&amp;dpr=1&amp;fit=crop&amp;q=80 1x, https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=128&amp;h=32&amp;dpr=2&amp;fit=crop&amp;q=80 2x" width="128" height="32"/><img src="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=128&amp;h=32&amp;fit=crop&amp;q=80" alt="sonar logo " decoding="async" loading="lazy" width="128" height="32"/></picture></a></div><style data-emotion="css o1bibx">.css-o1bibx{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));position:absolute;left:0;top:64px;height:0;width:100vw;overflow:hidden;transition-property:height;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;}@media (min-width: 1120px){.css-o1bibx{background-color:transparent;}}@media (min-width: 1120px){.css-o1bibx{position:static;left:unset;top:unset;}}@media (min-width: 1120px){.css-o1bibx{height:auto;width:auto;}}@media (min-width: 1120px){.css-o1bibx{overflow:visible;}}@media (min-width: 1120px){.css-o1bibx{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:24px;}}</style><ul offset="0" class="css-o1bibx e1l3pc5b8"><style data-emotion="css k008qs">.css-k008qs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}</style><li class="css-k008qs e1l3pc5b2"><style data-emotion="css xztb8t">.css-xztb8t{position:relative;z-index:50;width:100%;}@media (min-width: 1120px){.css-xztb8t{width:auto;}}@media (min-width: 1120px){.css-xztb8t{cursor:default;}}</style><button class="css-xztb8t eixlsgj8"><style data-emotion="css 1sxo4et">.css-1sxo4et{padding-left:21px;padding-right:21px;padding-top:24px;padding-bottom:24px;cursor:pointer;position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:4px;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;height:100%;min-height:51px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#290042;}@media (min-width: 1120px){.css-1sxo4et{padding:0;}}@media (min-width: 1120px){.css-1sxo4et{white-space:nowrap;}}.css-1sxo4et:hover{color:#0C5DB5;}.css-1sxo4et:disabled{color:#B7D3F2;}.css-1sxo4et:disabled:hover{cursor:not-allowed;}.css-1sxo4et:hover::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:rgb(18 110 211 / var(--tw-bg-opacity, 1));}.css-1sxo4et:active::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-1sxo4et:disabled:hover::after{content:var(--tw-content);--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-1sxo4et:after{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;position:absolute;transform-origin:left;--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));bottom:0;left:0;content:'';height:4px;width:100%;--tw-bg-opacity:1;background-color:rgb(12 93 181 / var(--tw-bg-opacity, 1));}.css-1sxo4et:hover{color:#290042;}</style><span class="css-1sxo4et eixlsgj6"><style data-emotion="css 1powe49">.css-1powe49{font-weight:600;font-family:Inter,Inter-Fallback;color:#290042;font-size:16px;line-height:18px;letter-spacing:2.4px;}</style><span class="css-1powe49 eixlsgj4">Products</span><style data-emotion="css 1qaur8k">.css-1qaur8k{margin-left:auto;transition-property:transform linear 0.2s;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:#290042;--tw-rotate:-90deg;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:21px;}@media (min-width: 1120px){.css-1qaur8k{margin-left:0;}}@media (min-width: 1120px){.css-1qaur8k{--tw-rotate:0deg;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}}@media (min-width: 1120px){.css-1qaur8k{--tw-translate-x:2px;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-translate-y:1px;}}@media (min-width: 1120px){.css-1qaur8k{width:18px;}}</style><svg aria-hidden="true" class="css-1qaur8k eixlsgj7" focusable="false" viewBox="0 0 24 24" fill="currentColor"><use href="/static/icons-sprite-6c0d961c70f26116c380e384ea7e1914.svg#chevron-blue-down"></use></svg></span></button><style data-emotion="css 1pja44i">.css-1pja44i{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));position:absolute;right:-100vw;top:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;opacity:0;height:100%;width:100%;z-index:100;overflow-y:scroll;border-radius:0.75rem;text-align:left;-webkit-transition:height none,right 0.3s ease-in-out,opacity 0.3s ease-in-out;transition:height none,right 0.3s ease-in-out,opacity 0.3s ease-in-out;}@media (min-width: 1120px){.css-1pja44i{position:fixed;}}@media (min-width: 1120px){.css-1pja44i{left:0;top:78px;}}@media (min-width: 1120px){.css-1pja44i{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media (min-width: 1120px){.css-1pja44i{height:0;max-height:calc(100vh - 150px);width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;}}@media (min-width: 1120px){.css-1pja44i{z-index:30;}}@media (min-width: 1120px){.css-1pja44i{overflow-y:auto;}}@media (min-width: 1120px){.css-1pja44i{transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:0.5s;}}</style><div role="menu" class="css-1pja44i eixlsgj3"><style data-emotion="css 1iehv96">.css-1iehv96{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:relative;}@media (min-width: 1120px){.css-1iehv96{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}</style><div class="css-1iehv96 eixlsgj2"><style data-emotion="css 18fde9z">.css-18fde9z{width:100%;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;padding-left:16px;padding-right:16px;padding-top:8px;}@media (min-width: 1120px){.css-18fde9z{width:333px;}}@media (min-width: 1120px){.css-18fde9z{gap:12px;}}@media (min-width: 1120px){.css-18fde9z{padding-left:8px;padding-right:8px;}}</style><div class="css-18fde9z eixlsgj1"><div><style data-emotion="css 12yzmeu">.css-12yzmeu{padding:8px;min-height:44px;}</style><div class="css-12yzmeu exky5362"><style data-emotion="css eb804r">.css-eb804r{font-family:Poppins,Poppins-Fallback;font-weight:600;letter-spacing:0.15em;font-size:16px;line-height:18px;color:#290042;padding-bottom:8px;border-bottom-width:1px;border-color:#69809B;}@media (min-width: 1120px){.css-eb804r{font-family:Inter,Inter-Fallback;}}@media (min-width: 1120px){.css-eb804r{font-size:14px;line-height:21px;color:#126ED3;}}@media (min-width: 1120px){.css-eb804r{padding-bottom:0;}}@media (min-width: 1120px){.css-eb804r{border-style:none;}}</style><div class="css-eb804r exky5361">Industry leading products</div></div><style data-emotion="css 7lhc6q">.css-7lhc6q{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;padding-bottom:8px;}</style><div class="css-7lhc6q exky5364"><style data-emotion="css zfdr8d">.css-zfdr8d{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:8px;padding-right:8px;padding-top:4px;padding-bottom:4px;}.css-zfdr8d:before{position:absolute;--tw-content:'';content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(243 246 251 / var(--tw-bg-opacity, 1));width:100%;height:100%;left:0;top:0;border-radius:0.25rem;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(0, 0, 0.2, 1);transition-duration:300ms;}.css-zfdr8d:hover:before{opacity:1;}</style><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/products/sonarcloud/"><style data-emotion="css 1i5xz0e">.css-1i5xz0e{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-column-gap:6px;column-gap:6px;row-gap:5px;position:relative;font-family:Poppins,Poppins-Fallback;font-weight:600;font-size:16px;line-height:18px;color:#290042;}</style><span class="css-1i5xz0e ecbxo7y2"><style data-emotion="css 1jjwybq">.css-1jjwybq{display:inline;max-height:18px;max-width:18px;margin-right:8px;}</style>SonarQube Cloud</span><style data-emotion="css y93mm4">.css-y93mm4{position:relative;font-family:Inter,Inter-Fallback;font-weight:400;font-size:16px;line-height:20px;color:#290042;margin-top:4px;}</style><span class="css-y93mm4 ecbxo7y3">Cloud-based static analysis tool for your CI/CD workflows</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/products/sonarqube/"><span class="css-1i5xz0e ecbxo7y2">SonarQube Server</span><span class="css-y93mm4 ecbxo7y3">Self-managed static analysis tool for continuous codebase inspection</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/products/sonarlint/"><span class="css-1i5xz0e ecbxo7y2">SonarQube for IDE</span><span class="css-y93mm4 ecbxo7y3">Free IDE extension that provides on-the-fly analysis and coding guidance</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/products/sonarqube/advanced-security/"><span class="css-1i5xz0e ecbxo7y2">Advanced Security</span><span class="css-y93mm4 ecbxo7y3">Secure use of open source code with advanced SAST and SCA</span></a></div></div></div></div></div></li><li class="css-k008qs e1l3pc5b2"><button class="css-xztb8t eixlsgj8"><span class="css-1sxo4et eixlsgj6"><span class="css-1powe49 eixlsgj4">Why Sonar</span><svg aria-hidden="true" class="css-1qaur8k eixlsgj7" focusable="false" viewBox="0 0 24 24" fill="currentColor"><use href="/static/icons-sprite-6c0d961c70f26116c380e384ea7e1914.svg#chevron-blue-down"></use></svg></span></button><div role="menu" class="css-1pja44i eixlsgj3"><div class="css-1iehv96 eixlsgj2"><div class="css-18fde9z eixlsgj1"><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Use cases</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/ai-code-quality/"><span class="css-1i5xz0e ecbxo7y2">AI code quality</span><span class="css-y93mm4 ecbxo7y3">Validate AI code for security and quality</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/developer-security/"><span class="css-1i5xz0e ecbxo7y2">Developer-led security</span><span class="css-y93mm4 ecbxo7y3">Secure apps and prevent vulnerabilities</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/automated-code-review/"><span class="css-1i5xz0e ecbxo7y2">Automated code review</span><span class="css-y93mm4 ecbxo7y3">Ensure secure, high-quality code</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/platform-engineering/"><span class="css-1i5xz0e ecbxo7y2">Platform engineering</span><span class="css-y93mm4 ecbxo7y3">Remove friction and boost productivity</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/compliance-and-reporting/"><span class="css-1i5xz0e ecbxo7y2">Compliance &amp; reporting</span><span class="css-y93mm4 ecbxo7y3">Automate proof of code compliance</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/code-governance/"><span class="css-1i5xz0e ecbxo7y2">SDLC governance</span><span class="css-y93mm4 ecbxo7y3">Align AI and developer standards</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/use-cases/"><span class="css-1i5xz0e ecbxo7y2">All use cases</span></a></div></div></div><style data-emotion="css 19alu3m">.css-19alu3m{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.css-19alu3m::before{content:var(--tw-content);height:100%;width:22px;}.css-19alu3m::after{content:var(--tw-content);height:100%;width:22px;}.css-19alu3m::before{content:var(--tw-content);border-right-width:1px;border-color:#69809B;}</style><div class="css-19alu3m eixlsgj0"></div><div class="css-18fde9z eixlsgj1"><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Explore</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/ai/"><span class="css-1i5xz0e ecbxo7y2">AI solutions</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/security/"><span class="css-1i5xz0e ecbxo7y2">Security solutions</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/for-developers/"><span class="css-1i5xz0e ecbxo7y2">Code quality solutions</span></a></div></div><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Industries</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/Industry/healthcare/"><span class="css-1i5xz0e ecbxo7y2">Healthcare</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/Industry/financial-services/"><span class="css-1i5xz0e ecbxo7y2">Financial services</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/Industry/retail/"><span class="css-1i5xz0e ecbxo7y2">Retail</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/federal-government/"><span class="css-1i5xz0e ecbxo7y2">Federal government</span></a></div></div><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Customer recognition</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/company/customers/"><span class="css-1i5xz0e ecbxo7y2">Our customers</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/resources/customer-stories/"><span class="css-1i5xz0e ecbxo7y2">Customer stories</span></a></div></div></div></div></div></li><li class="css-k008qs e1l3pc5b2"><style data-emotion="css 1jxx03">.css-1jxx03{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:4px;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;height:100%;min-height:51px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#290042;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;padding-left:20px;padding-right:20px;padding-top:21px;padding-bottom:21px;}.css-1jxx03:hover{color:#0C5DB5;}.css-1jxx03:disabled{color:#B7D3F2;}.css-1jxx03:disabled:hover{cursor:not-allowed;}.css-1jxx03:hover::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:rgb(18 110 211 / var(--tw-bg-opacity, 1));}.css-1jxx03:active::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-1jxx03:disabled:hover::after{content:var(--tw-content);--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-1jxx03:after{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;position:absolute;transform-origin:left;--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));bottom:0;left:0;content:'';height:4px;width:100%;--tw-bg-opacity:1;background-color:rgb(12 93 181 / var(--tw-bg-opacity, 1));}.css-1jxx03:hover{color:#290042;}@media (min-width: 1120px){.css-1jxx03{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;}}</style><style data-emotion="css rh8vyw">.css-rh8vyw{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:4px;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;height:100%;min-height:51px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#290042;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;padding-left:20px;padding-right:20px;padding-top:21px;padding-bottom:21px;}.css-rh8vyw:hover{color:#0C5DB5;}.css-rh8vyw:disabled{color:#B7D3F2;}.css-rh8vyw:disabled:hover{cursor:not-allowed;}.css-rh8vyw:hover::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:rgb(18 110 211 / var(--tw-bg-opacity, 1));}.css-rh8vyw:active::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-rh8vyw:disabled:hover::after{content:var(--tw-content);--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-rh8vyw:after{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;position:absolute;transform-origin:left;--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));bottom:0;left:0;content:'';height:4px;width:100%;--tw-bg-opacity:1;background-color:rgb(12 93 181 / var(--tw-bg-opacity, 1));}.css-rh8vyw:hover{color:#290042;}@media (min-width: 1120px){.css-rh8vyw{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;}}</style><a target="_self" class="e1l3pc5b1 css-rh8vyw e1gts9nz0" href="/plans-and-pricing/">Pricing</a></li><li class="css-k008qs e1l3pc5b2"><button class="css-xztb8t eixlsgj8"><span class="css-1sxo4et eixlsgj6"><span class="css-1powe49 eixlsgj4">Developers</span><svg aria-hidden="true" class="css-1qaur8k eixlsgj7" focusable="false" viewBox="0 0 24 24" fill="currentColor"><use href="/static/icons-sprite-6c0d961c70f26116c380e384ea7e1914.svg#chevron-blue-down"></use></svg></span></button><div role="menu" class="css-1pja44i eixlsgj3"><div class="css-1iehv96 eixlsgj2"><div class="css-18fde9z eixlsgj1"><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">For developers</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/developers/"><span class="css-1i5xz0e ecbxo7y2">Developer hub<style data-emotion="css 1vifq66">.css-1vifq66{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;font-family:Inter,Inter-Fallback;font-weight:600;white-space:nowrap;font-size:12px;line-height:14px;letter-spacing:1.8px;border-radius:40px;padding-left:8px;padding-right:8px;padding-top:2px;padding-bottom:2px;--tw-bg-opacity:1;background-color:rgb(27 153 139 / var(--tw-bg-opacity, 1));color:#FFFFFF;}</style><span class="css-1vifq66 e1esxqo00">NEW</span></span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/solutions/commitment-to-open-source/"><span class="css-1i5xz0e ecbxo7y2">Commitment to open source</span></a><a target="_blank" href="https://community.sonarsource.com/" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">Community</span></a><a target="_blank" href="https://rules.sonarsource.com/" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">Sonar rules</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/resources/library/"><span class="css-1i5xz0e ecbxo7y2">Developer guides</span></a></div></div><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Documentation</div></div><div class="css-7lhc6q exky5364"><a target="_blank" href="https://docs.sonarsource.com/sonarqube-server/latest/" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">SonarQube Server</span></a><a target="_blank" href="https://docs.sonarsource.com/sonarqube-cloud/" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">SonarQube Cloud</span></a><a target="_blank" href="https://docs.sonarsource.com/sonarqube-for-ide/vs-code/" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">SonarQube for IDE</span></a></div></div></div><div class="css-19alu3m eixlsgj0"></div><div class="css-18fde9z eixlsgj1"><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Integrations</div></div><div class="css-7lhc6q exky5364"><a href="/solutions/integrations/" target="_blank" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">GitHub</span></a><a href="/solutions/integrations/" target="_blank" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">Bitbucket</span></a><a href="/solutions/integrations/" target="_blank" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">Azure DevOps</span></a><a href="/solutions/integrations/" target="_blank" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">GitLab</span></a><a href="/solutions/integrations/" target="_blank" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">See all</span></a></div></div><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">35+ languages &amp; frameworks</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/knowledge/languages/java/"><span class="css-1i5xz0e ecbxo7y2">Java</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/knowledge/languages/js/"><span class="css-1i5xz0e ecbxo7y2">JavaScript</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/knowledge/languages/python/"><span class="css-1i5xz0e ecbxo7y2">Python</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/knowledge/languages/csharp/"><span class="css-1i5xz0e ecbxo7y2">C#</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/knowledge/languages/"><span class="css-1i5xz0e ecbxo7y2">See all</span></a></div></div></div></div></div></li><li class="css-k008qs e1l3pc5b2"><button class="css-xztb8t eixlsgj8"><span class="css-1sxo4et eixlsgj6"><span class="css-1powe49 eixlsgj4">Resources</span><svg aria-hidden="true" class="css-1qaur8k eixlsgj7" focusable="false" viewBox="0 0 24 24" fill="currentColor"><use href="/static/icons-sprite-6c0d961c70f26116c380e384ea7e1914.svg#chevron-blue-down"></use></svg></span></button><div role="menu" class="css-1pja44i eixlsgj3"><div class="css-1iehv96 eixlsgj2"><style data-emotion="css wwyu57">.css-wwyu57{width:100%;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;padding-left:16px;padding-right:16px;padding-top:8px;}@media (min-width: 1120px){.css-wwyu57{width:393px;}}@media (min-width: 1120px){.css-wwyu57{gap:12px;}}@media (min-width: 1120px){.css-wwyu57{padding-left:8px;padding-right:8px;}}</style><div class="css-wwyu57 eixlsgj1"><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Build better using SonarQube</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/products/sonarqube/lta-update-hub/"><span class="css-1i5xz0e ecbxo7y2">SonarQube update hub<span class="css-1vifq66 e1esxqo00">NEW</span></span></a><a target="_blank" href="https://community.sonarsource.com/" role="menuitem" class="css-zfdr8d ecbxo7y4"><span class="css-1i5xz0e ecbxo7y2">Community</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/product-demos/"><span class="css-1i5xz0e ecbxo7y2">Interactive demos</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/blog/"><span class="css-1i5xz0e ecbxo7y2">Blog</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/resources/white-papers/"><span class="css-1i5xz0e ecbxo7y2">White papers</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/resources/solution-briefs/"><span class="css-1i5xz0e ecbxo7y2">Solution briefs</span></a></div></div><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Research reports</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/the-coding-personalities-of-leading-llms/"><span class="css-1i5xz0e ecbxo7y2">Coding Personalities of Leading LLMs</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/the-state-of-code/"><span class="css-1i5xz0e ecbxo7y2">The State of Code</span></a></div></div></div></div></div></li><li class="css-k008qs e1l3pc5b2"><button class="css-xztb8t eixlsgj8"><span class="css-1sxo4et eixlsgj6"><span class="css-1powe49 eixlsgj4">Company</span><svg aria-hidden="true" class="css-1qaur8k eixlsgj7" focusable="false" viewBox="0 0 24 24" fill="currentColor"><use href="/static/icons-sprite-6c0d961c70f26116c380e384ea7e1914.svg#chevron-blue-down"></use></svg></span></button><div role="menu" class="css-1pja44i eixlsgj3"><div class="css-1iehv96 eixlsgj2"><div class="css-18fde9z eixlsgj1"><div><div class="css-12yzmeu exky5362"><div class="css-eb804r exky5361">Learn about Sonar</div></div><div class="css-7lhc6q exky5364"><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/company/about/"><span class="css-1i5xz0e ecbxo7y2">About Us</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/company/customers/"><span class="css-1i5xz0e ecbxo7y2">Our customers</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/company/partners/"><span class="css-1i5xz0e ecbxo7y2">Partners</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/resources/events/"><span class="css-1i5xz0e ecbxo7y2">Events hub</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/company/newsroom/"><span class="css-1i5xz0e ecbxo7y2">Newsroom</span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/company/careers/"><span class="css-1i5xz0e ecbxo7y2">Careers<style data-emotion="css 8e9762">.css-8e9762{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;font-family:Inter,Inter-Fallback;font-weight:600;white-space:nowrap;font-size:12px;line-height:14px;letter-spacing:1.8px;border-radius:40px;padding-left:8px;padding-right:8px;padding-top:2px;padding-bottom:2px;--tw-bg-opacity:1;background-color:rgb(183 211 242 / var(--tw-bg-opacity, 1));color:#290042;}</style><span class="css-8e9762 e1esxqo00">Join us!</span></span></a><a target="_self" role="menuitem" class="css-zfdr8d ecbxo7y4" href="/company/contact/"><span class="css-1i5xz0e ecbxo7y2">Contact us</span></a></div></div></div></div></div></li><style data-emotion="css 871gqc">@media (min-width: 720px){.css-871gqc{display:none;}}</style><li class="css-871gqc e1l3pc5b7"><style data-emotion="css 1nts57w">.css-1nts57w{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:16px;padding-bottom:112px;padding-top:48px;}@media (min-width: 1120px){.css-1nts57w{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (min-width: 1120px){.css-1nts57w{height:100%;}}@media (min-width: 1120px){.css-1nts57w{padding-top:0;padding-bottom:0;}}@media (min-width: 1120px){.css-1nts57w{padding-top:0;padding-bottom:0;}}</style><div class="css-1nts57w ety5px90"><style data-emotion="css 1t71wmo">.css-1t71wmo{white-space:nowrap;border-radius:0.375rem;border-width:2px;padding-left:24px;padding-right:24px;padding-top:12px;padding-bottom:12px;}</style><style data-emotion="css trxtls">.css-trxtls{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 1, 1);transition-duration:150ms;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:4px;white-space:nowrap;border-radius:0.5rem;font-family:Inter,Inter-Fallback;font-weight:600;font-size:16px;line-height:18px;letter-spacing:2.4px;border-width:2px;border-style:solid;border-color:transparent;position:relative;color:#FFFFFF;overflow:hidden;z-index:0;background:linear-gradient(to bottom, #126ed3, #0f63bf) border-box;padding-left:20px;padding-right:20px;padding-top:9px;padding-bottom:9px;white-space:nowrap;border-radius:0.375rem;border-width:2px;padding-left:24px;padding-right:24px;padding-top:12px;padding-bottom:12px;}.css-trxtls:disabled:hover{cursor:not-allowed;}.css-trxtls::before{content:var(--tw-content);position:absolute;inset:0;z-index:-1;background-color:transparent;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;--tw-content:'';}.css-trxtls:hover{border-color:#0C5DB5;}.css-trxtls:hover::before{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(12 93 181 / var(--tw-bg-opacity, 1));}.css-trxtls:disabled{border-color:#B7D3F2;color:#FFFFFF;}.css-trxtls:disabled::before{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(183 211 242 / var(--tw-bg-opacity, 1));}.css-trxtls .e1gts9nz1{height:16px;width:16px;margin-left:0;}</style><a target="_self" class="ety5px91 css-trxtls e1gts9nz0" href="/plans-and-pricing/">Start for free</a></div></li></ul><style data-emotion="css umsyth">.css-umsyth{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;gap:8px;margin-right:-10px;}@media (min-width: 720px){.css-umsyth{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}}@media (min-width: 720px){.css-umsyth{gap:16px;}}@media (min-width: 1120px){.css-umsyth{gap:22px;}}@media (min-width: 720px){.css-umsyth{margin-right:0;}}</style><div class="css-umsyth e1l3pc5b3"><style data-emotion="css 3mo223">.css-3mo223{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}</style><div class="css-3mo223 e1e618rq1"><style data-emotion="css 1u0iegg">.css-1u0iegg{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:4px;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;font-family:Inter,Inter-Fallback;font-weight:600;text-align:center;font-size:16px;line-height:18px;letter-spacing:2.4px;color:#126ED3;height:100%;min-height:51px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#290042;}.css-1u0iegg:hover{color:#0C5DB5;}.css-1u0iegg:disabled{color:#B7D3F2;}.css-1u0iegg:disabled:hover{cursor:not-allowed;}.css-1u0iegg:hover::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:rgb(18 110 211 / var(--tw-bg-opacity, 1));}.css-1u0iegg:active::after{content:var(--tw-content);--tw-scale-x:1;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-1u0iegg:disabled:hover::after{content:var(--tw-content);--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));}.css-1u0iegg:after{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;position:absolute;transform-origin:left;--tw-scale-x:0;-webkit-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-moz-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));-ms-transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));bottom:0;left:0;content:'';height:4px;width:100%;--tw-bg-opacity:1;background-color:rgb(12 93 181 / var(--tw-bg-opacity, 1));}.css-1u0iegg:hover{color:#290042;}</style><button class="css-1u0iegg e1e618rq0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><g clip-path="url(#clip0_22720_51401)"><circle cx="9.14295" cy="9.14783" r="8.292" stroke="#290042" stroke-width="1.7019"></circle><path d="M15.2869 15.1826L19.1042 19" stroke="#290042" stroke-width="1.7019" stroke-linecap="round"></path></g><defs><clipPath id="clip0_22720_51401"><rect width="20" height="20" fill="white"></rect></clipPath></defs></svg><style data-emotion="css 1z119ai">.css-1z119ai{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;}</style><span class="css-1z119ai e1e618rq2">Search modal toggle button</span></button></div><style data-emotion="css 1p1roo2">.css-1p1roo2{display:none;}@media (min-width: 720px){.css-1p1roo2{height:100%;}}@media (min-width: 720px){.css-1p1roo2{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}</style><div class="css-1p1roo2 e1l3pc5b4"><style data-emotion="css cc7ybl">.css-cc7ybl{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:16px;padding-top:0;padding-bottom:0;}@media (min-width: 1120px){.css-cc7ybl{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (min-width: 1120px){.css-cc7ybl{height:100%;}}@media (min-width: 1120px){.css-cc7ybl{padding-top:0;padding-bottom:0;}}</style><div class="css-cc7ybl ety5px90"><a target="_self" class="ety5px91 css-trxtls e1gts9nz0" href="/plans-and-pricing/">Start for free</a></div></div><style data-emotion="css 1xdsh6v">.css-1xdsh6v{padding:10px;}@media (min-width: 1120px){.css-1xdsh6v{display:none;}}</style><button class="css-1xdsh6v e11zvi091" aria-expanded="false"><style data-emotion="css dvmk3n">.css-dvmk3n{display:block;height:2px;width:25px;--tw-bg-opacity:1;background-color:rgb(41 0 66 / var(--tw-bg-opacity, 1));margin-left:auto;margin-right:auto;margin-top:6px;margin-bottom:6px;transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms;}</style><span class="css-dvmk3n e11zvi092"></span><span class="css-dvmk3n e11zvi092"></span><span class="css-dvmk3n e11zvi092"></span><span class="css-1z119ai e11zvi090">Mobile menu toggle button</span></button></div></nav></header></div><style data-emotion="css jilv8b">.css-jilv8b{display:none;position:fixed;inset:0;z-index:30;height:100vh;width:100vw;--tw-bg-opacity:1;background-color:rgb(183 211 242 / var(--tw-bg-opacity, 1));opacity:0.7;transition-property:transform linear 0.2s;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}@media (min-width: 1120px){.css-jilv8b{display:none;}}</style><div data-testid="overlay" class="css-jilv8b e1l3pc5b0"></div><!--/$--><!--$--><style data-emotion="css 21lwyx">.css-21lwyx{padding-top:32px;padding-bottom:32px;}@media (min-width: 720px){.css-21lwyx{padding-top:64px;}}@media (min-width: 720px){.css-21lwyx{padding-bottom:64px;}}</style><style data-emotion="css 1mwyu6x">.css-1mwyu6x{position:relative;padding-left:16px;padding-right:16px;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;text-align:center;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-top:32px;padding-bottom:32px;}@media (min-width: 1120px){.css-1mwyu6x{text-align:left;}}@media (min-width: 720px){.css-1mwyu6x .ejao4v810{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}.css-1mwyu6x .eh6tj6x6{margin-bottom:32px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (min-width: 720px){.css-1mwyu6x{padding-top:64px;}}@media (min-width: 720px){.css-1mwyu6x{padding-bottom:64px;}}</style><section data-codename="sonar___license___secondary_hero_block__copy_" class="css-1mwyu6x ejao4v89"><style data-emotion="css lwh8dz">.css-lwh8dz{width:100%;margin-right:auto;margin-left:auto;position:relative;z-index:1;z-index:10;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (min-width: 500px){.css-lwh8dz{max-width:500px;}}@media (min-width: 720px){.css-lwh8dz{max-width:720px;}}@media (min-width: 1120px){.css-lwh8dz{max-width:1120px;}}@media (min-width: 1120px){.css-lwh8dz{padding-left:0;padding-right:0;}}</style><div class="css-lwh8dz ejao4v87"><style data-emotion="css u4cksk">.css-u4cksk{grid-column:span 8/span 8;margin-bottom:0;max-width:734px;text-align:center;}@media (min-width: 720px){.css-u4cksk{padding-left:24px;padding-right:24px;}}@media (min-width: 1120px){.css-u4cksk{padding-left:0;padding-right:0;}}@media (min-width: 1120px){.css-u4cksk{margin-bottom:0;}}@media (min-width: 1120px){.css-u4cksk{grid-column:span 6/span 6;}}</style><div class="css-u4cksk ejao4v86"><style data-emotion="css 3c5mxz">.css-3c5mxz{font-family:Inter,Inter-Fallback;font-weight:600;font-size:16px;line-height:17px;letter-spacing:2.4px;text-transform:uppercase;color:#290042;margin-bottom:16px;}</style><p class="css-3c5mxz ejao4v83">LICENSE</p><style data-emotion="css 1rtkkhj">.css-1rtkkhj{padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:16px;font-family:Poppins,Poppins-Fallback;font-weight:600;color:#126ED3;font-size:40px;line-height:48px;}@media (min-width: 1120px){.css-1rtkkhj{padding-left:0;padding-right:0;}}@media (min-width: 1120px){.css-1rtkkhj{font-size:48px;line-height:58px;}}.css-1rtkkhj em{font-style:normal;}.css-1rtkkhj em:before,.css-1rtkkhj em:after{color:#126ED3;}.css-1rtkkhj em:before{content:'{';}.css-1rtkkhj em:after{content:'}';}</style><div class="css-1rtkkhj ejao4v82"><h1>SONAR Source-Available License v1.0</h1></div><style data-emotion="css 1wwrpn9">.css-1wwrpn9{margin-bottom:32px;color:#290042;font-family:Inter,Inter-Fallback;font-size:20px;line-height:30px;}.css-1wwrpn9 .eh6tj6x6{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (min-width: 1120px){.css-1wwrpn9 .eh6tj6x6{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (min-width: 1120px){.css-1wwrpn9 .eh6tj6x6{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}</style><div class="css-1wwrpn9 ejao4v80"><p>Last Updated November 13, 2024</p></div></div></div></section><!--/$--><!--$--><style data-emotion="css 96sr9o">.css-96sr9o{padding-left:16px;padding-right:16px;padding-bottom:56px;padding-top:32px;}@media (min-width: 1120px){.css-96sr9o{padding-bottom:64px;padding-top:64px;}}</style><section data-codename="sonar___license___article__copy_" class="css-96sr9o e7ah46o8"><style data-emotion="css 1phd8yd">.css-1phd8yd{width:100%;margin-right:auto;margin-left:auto;position:relative;z-index:1;}@media (min-width: 500px){.css-1phd8yd{max-width:500px;}}@media (min-width: 720px){.css-1phd8yd{max-width:720px;}}@media (min-width: 1120px){.css-1phd8yd{max-width:1120px;}}</style><div class="css-1phd8yd e7ah46o7"><style data-emotion="css 1zmeua">.css-1zmeua{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (min-width: 1120px){.css-1zmeua{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}</style><div class="css-1zmeua e7ah46o6"><style data-emotion="css 1p9i2fl">@media (min-width: 1120px){.css-1p9i2fl{width:736px;}}.css-1p9i2fl .rich-text-inline-command>button{width:100%;}</style><article class="css-1p9i2fl e7ah46o5"><style data-emotion="css 1pprc5">.css-1pprc5{display:block;}@media (min-width: 1120px){.css-1pprc5{display:none;}}</style><div class="css-1pprc5 e7ah46o2"><style data-emotion="css 1yjvs5a">.css-1yjvs5a{margin-bottom:32px;}</style><div class="css-1yjvs5a e7ah46o0"></div></div><style data-emotion="css 1wfw15w">.css-1wfw15w{margin-top:32px;}@media (min-width: 1120px){.css-1wfw15w{margin-top:0;}}</style><div class="css-1wfw15w e7ah46o4"><style data-emotion="css tytpet">@media (min-width: 1120px){.css-tytpet{padding-left:0;padding-right:0;}}</style><section data-codename="rich-text" class="css-tytpet e8hk9uc2"><div class="css-1phd8yd e8hk9uc1"><style data-emotion="css 6lht1j">.css-6lht1j{font-family:Inter,Inter-Fallback;}.css-6lht1j>*:not(* + *){margin-top:0!important;}.css-6lht1j h1,.css-6lht1j h2,.css-6lht1j h3,.css-6lht1j h4,.css-6lht1j h5,.css-6lht1j h6{font-weight:600;color:#290042;}.css-6lht1j h1{font-size:32px;line-height:40px;}@media (min-width: 720px){.css-6lht1j h1{font-size:40px;line-height:48px;}}.css-6lht1j h2{font-size:26px;line-height:32px;}@media (min-width: 720px){.css-6lht1j h2{font-size:32px;line-height:40px;}}.css-6lht1j h3{font-size:18px;line-height:24px;}@media (min-width: 720px){.css-6lht1j h3{font-size:21px;line-height:28px;}}.css-6lht1j h4{font-weight:400;font-size:20px;line-height:30px;color:#3B3F44;}.css-6lht1j h5,.css-6lht1j h6{font-weight:400;font-size:18px;line-height:28px;color:#3B3F44;}.css-6lht1j h1,.css-6lht1j h2{margin-bottom:24px;margin-top:56px;}.css-6lht1j h3{margin-bottom:16px;margin-top:12px;}.css-6lht1j h4,.css-6lht1j h5,.css-6lht1j h6{margin-top:8px;margin-bottom:8px;}.css-6lht1j ol,.css-6lht1j ul{font-size:20px;line-height:30px;color:#290042;margin-bottom:24px;margin-top:16px;}.css-6lht1j figure{margin-top:56px;margin-bottom:56px;}.css-6lht1j p{font-size:20px;line-height:30px;color:#290042;margin-top:14px;}.css-6lht1j p:last-child{margin-bottom:14px;}.css-6lht1j p+.table-responsive{margin-top:64px;}@media (min-width: 720px){.css-6lht1j p+.table-responsive{margin-top:80px;}}.css-6lht1j ol,.css-6lht1j ul{padding-left:24px;list-style-type:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:12px;}.css-6lht1j ol li::marker,.css-6lht1j ul li::marker{font-size:16px;line-height:18px;font-weight:700;color:#126ED3;}.css-6lht1j ul>li{list-style-type:disc;}.css-6lht1j ul>li ul>li{list-style-type:circle;}.css-6lht1j ul>li ul>li ul>li{list-style-type:disc;}.css-6lht1j ol>li{list-style-type:decimal;}.css-6lht1j a{color:#126ED3;text-decoration-line:none;overflow-wrap:break-word;}.css-6lht1j a:hover{text-decoration-line:underline;}.css-6lht1j figcaption{margin-top:12px;font-weight:500;font-size:16px;line-height:20px;color:#A8B3C2;}.css-6lht1j p>code,.css-6lht1j li>code{padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px;--tw-bg-opacity:1;background-color:rgb(232 239 247 / var(--tw-bg-opacity, 1));}.css-6lht1j pre{width:100%;margin:0;border-radius:0.25rem;color:#69809B;white-space:pre-wrap;counter-reset:linecounter;}.css-6lht1j pre .line-num{min-width:3ch;display:inline-block;opacity:0.5;}.css-6lht1j pre .line-num::before{counter-increment:linecounter;content:counter(linecounter);}.css-6lht1j pre mark.green{background-color:#033a16;color:#aff5b4;}.css-6lht1j pre mark.green span{color:#aff5b4!important;}.css-6lht1j pre mark.yellow{background-color:yellow;color:black;}.css-6lht1j pre mark.yellow span{color:black!important;}.css-6lht1j pre mark.red{background-color:#67060c;color:#ffdcd7;}.css-6lht1j pre mark.red span{color:#ffdcd7!important;}.css-6lht1j code{font-size:16px;line-height:17px;letter-spacing:2.4px;letter-spacing:0;border-radius:0.25rem;}</style><div class="css-6lht1j e8hk9uc0"><style data-emotion="css 1u29kau">.css-1u29kau{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;}.css-1u29kau>a{visibility:hidden;}.css-1u29kau:hover a{visibility:visible;}</style><h2 class="css-1u29kau ei7zb6c3"><style data-emotion="css 1s68n4h">.css-1s68n4h{position:absolute;top:-150px;}</style><span id="1-definitions" class="css-1s68n4h ei7zb6c0"></span>1. Definitions<style data-emotion="css 5cm1aq">.css-5cm1aq{color:#000000;}</style><a title="1. Definitions" class="css-5cm1aq ei7zb6c2" href="/license/ssal/#1-definitions"><style data-emotion="css s0nieh">.css-s0nieh{margin-left:10px;margin-top:-1px;display:inline-block;fill:#69809B;margin-left:14px;}.css-s0nieh:hover{fill:#290042;}</style><svg type="h2" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="css-s0nieh ei7zb6c1"><path d="M8.46588 12.7069C9.59888 13.8399 11.5749 13.8399 12.7079 12.7069L13.4149 11.9999L14.8289 13.4139L14.1219 14.1209C13.1789 15.0649 11.9229 15.5859 10.5869 15.5859C9.25088 15.5859 7.99488 15.0649 7.05188 14.1209L4.92988 11.9999C3.99417 11.0612 3.46875 9.78985 3.46875 8.46444C3.46875 7.13902 3.99417 5.86765 4.92988 4.92894C5.39375 4.4644 5.94484 4.0961 6.55149 3.8452C7.15814 3.59431 7.80839 3.46575 8.46488 3.46693C9.12154 3.46557 9.77199 3.59403 10.3788 3.84493C10.9857 4.09584 11.5369 4.46424 12.0009 4.92894L12.7079 5.63594L11.2939 7.04994L10.5869 6.34294C10.0233 5.78193 9.26055 5.46697 8.46538 5.46697C7.67021 5.46697 6.90741 5.78193 6.34388 6.34294C5.78238 6.90621 5.46708 7.6691 5.46708 8.46444C5.46708 9.25977 5.78238 10.0227 6.34388 10.5859L8.46588 12.7069Z"></path><path d="M11.9999 19.0713L11.2929 18.3643L12.7069 16.9503L13.4139 17.6573C13.9774 18.2183 14.7402 18.5332 15.5354 18.5332C16.3305 18.5332 17.0933 18.2183 17.6569 17.6573C18.2184 17.094 18.5337 16.3311 18.5337 15.5357C18.5337 14.7404 18.2184 13.9775 17.6569 13.4142L15.5349 11.2933C14.4019 10.1602 12.4259 10.1602 11.2929 11.2933L10.5859 12.0002L9.17188 10.5863L9.87887 9.87925C10.8219 8.93525 12.0779 8.41425 13.4139 8.41425C14.7499 8.41425 16.0059 8.93525 16.9489 9.87925L19.0709 12.0002C20.0066 12.939 20.532 14.2103 20.532 15.5357C20.532 16.8612 20.0066 18.1325 19.0709 19.0713C18.1324 20.0074 16.861 20.5332 15.5354 20.5332C14.2098 20.5332 12.9383 20.0074 11.9999 19.0713Z"></path></svg></a></h2>
<p>“Agreement” means this Sonar Source-Available License v1.0</p>
<p>“Competing” means marketing a product or service as a substitute for the functionality or value of SonarQube. A product or service may compete regardless of how it is designed or deployed. For example, a product or service may compete even if it provides its functionality via any kind of interface (including services, libraries, or plug-ins), even if it is ported to a different platform or programming language, and even if it is provided free of charge.</p>
<p>“Contribution” means:</p>
<p>a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and</p>
<p>b) in the case of each subsequent Contributor:</p>
<p>i) changes to the Program, and</p>
<p>ii) additions to the Program;</p>
<p>where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor&#x27;s behalf. Contributions do not include changes or additions to the Program that are not Modified Works.</p>
<p>“Contributor” means any person or entity that Distributes the Program.</p>
<p>“Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship.</p>
<p>“Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy.</p>
<p>“Licensed Patents” mean patent claims licensable by a Contributor that are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.</p>
<p>“Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity, any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof.</p>
<p>“Non-competitive Purpose” means any purpose except for (a) providing to others any product or service that includes or offers the same or substantially similar functionality as SonarQube, (b) Competing with SonarQube, and/or (c) employing, using, or engaging artificial intelligence technology that is not part of the Program to ingest, interpret, analyze, train on, or interact with the data provided by the Program, or to engage with the Program in any manner.</p>
<p>“Notices” means any legal statements or attributions included with the Program, including, without limitation, statements concerning copyright, patent, trademark, disclaimers of warranty, or limitations of liability </p>
<p>“Program” means the Contributions Distributed in accordance with this Agreement.</p>
<p>“Recipient” means anyone who receives the Program under this Agreement, including Contributors.</p>
<p>“SonarQube” means an open-source or commercial edition of software offered by SonarSource that is branded “SonarQube”.</p>
<p>“SonarSource” means SonarSource SA, a Swiss company registered in Switzerland under UID No. CHE-114.587.664.</p>
<p>“Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files.</p>
<h2 class="css-1u29kau ei7zb6c3"><span id="2-grant-of-rights" class="css-1s68n4h ei7zb6c0"></span>2. Grant of Rights<a title="2. Grant of Rights" class="css-5cm1aq ei7zb6c2" href="/license/ssal/#2-grant-of-rights"><svg type="h2" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="css-s0nieh ei7zb6c1"><path d="M8.46588 12.7069C9.59888 13.8399 11.5749 13.8399 12.7079 12.7069L13.4149 11.9999L14.8289 13.4139L14.1219 14.1209C13.1789 15.0649 11.9229 15.5859 10.5869 15.5859C9.25088 15.5859 7.99488 15.0649 7.05188 14.1209L4.92988 11.9999C3.99417 11.0612 3.46875 9.78985 3.46875 8.46444C3.46875 7.13902 3.99417 5.86765 4.92988 4.92894C5.39375 4.4644 5.94484 4.0961 6.55149 3.8452C7.15814 3.59431 7.80839 3.46575 8.46488 3.46693C9.12154 3.46557 9.77199 3.59403 10.3788 3.84493C10.9857 4.09584 11.5369 4.46424 12.0009 4.92894L12.7079 5.63594L11.2939 7.04994L10.5869 6.34294C10.0233 5.78193 9.26055 5.46697 8.46538 5.46697C7.67021 5.46697 6.90741 5.78193 6.34388 6.34294C5.78238 6.90621 5.46708 7.6691 5.46708 8.46444C5.46708 9.25977 5.78238 10.0227 6.34388 10.5859L8.46588 12.7069Z"></path><path d="M11.9999 19.0713L11.2929 18.3643L12.7069 16.9503L13.4139 17.6573C13.9774 18.2183 14.7402 18.5332 15.5354 18.5332C16.3305 18.5332 17.0933 18.2183 17.6569 17.6573C18.2184 17.094 18.5337 16.3311 18.5337 15.5357C18.5337 14.7404 18.2184 13.9775 17.6569 13.4142L15.5349 11.2933C14.4019 10.1602 12.4259 10.1602 11.2929 11.2933L10.5859 12.0002L9.17188 10.5863L9.87887 9.87925C10.8219 8.93525 12.0779 8.41425 13.4139 8.41425C14.7499 8.41425 16.0059 8.93525 16.9489 9.87925L19.0709 12.0002C20.0066 12.939 20.532 14.2103 20.532 15.5357C20.532 16.8612 20.0066 18.1325 19.0709 19.0713C18.1324 20.0074 16.861 20.5332 15.5354 20.5332C14.2098 20.5332 12.9383 20.0074 11.9999 19.0713Z"></path></svg></a></h2>
<p>a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license, for any Non-competitive Purpose, to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works.</p>
<p>b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents, for any Non-competitive Purpose, to make, use, sell, offer to sell, import, and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations that include the Contribution. </p>
<p>c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third-party patent license is required to allow Recipient to Distribute the Program, it is Recipient&#x27;s responsibility to acquire that license before distributing the Program.</p>
<p>d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.</p>
<h2 class="css-1u29kau ei7zb6c3"><span id="3-requirements" class="css-1s68n4h ei7zb6c0"></span>3. Requirements<a title="3. Requirements" class="css-5cm1aq ei7zb6c2" href="/license/ssal/#3-requirements"><svg type="h2" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="css-s0nieh ei7zb6c1"><path d="M8.46588 12.7069C9.59888 13.8399 11.5749 13.8399 12.7079 12.7069L13.4149 11.9999L14.8289 13.4139L14.1219 14.1209C13.1789 15.0649 11.9229 15.5859 10.5869 15.5859C9.25088 15.5859 7.99488 15.0649 7.05188 14.1209L4.92988 11.9999C3.99417 11.0612 3.46875 9.78985 3.46875 8.46444C3.46875 7.13902 3.99417 5.86765 4.92988 4.92894C5.39375 4.4644 5.94484 4.0961 6.55149 3.8452C7.15814 3.59431 7.80839 3.46575 8.46488 3.46693C9.12154 3.46557 9.77199 3.59403 10.3788 3.84493C10.9857 4.09584 11.5369 4.46424 12.0009 4.92894L12.7079 5.63594L11.2939 7.04994L10.5869 6.34294C10.0233 5.78193 9.26055 5.46697 8.46538 5.46697C7.67021 5.46697 6.90741 5.78193 6.34388 6.34294C5.78238 6.90621 5.46708 7.6691 5.46708 8.46444C5.46708 9.25977 5.78238 10.0227 6.34388 10.5859L8.46588 12.7069Z"></path><path d="M11.9999 19.0713L11.2929 18.3643L12.7069 16.9503L13.4139 17.6573C13.9774 18.2183 14.7402 18.5332 15.5354 18.5332C16.3305 18.5332 17.0933 18.2183 17.6569 17.6573C18.2184 17.094 18.5337 16.3311 18.5337 15.5357C18.5337 14.7404 18.2184 13.9775 17.6569 13.4142L15.5349 11.2933C14.4019 10.1602 12.4259 10.1602 11.2929 11.2933L10.5859 12.0002L9.17188 10.5863L9.87887 9.87925C10.8219 8.93525 12.0779 8.41425 13.4139 8.41425C14.7499 8.41425 16.0059 8.93525 16.9489 9.87925L19.0709 12.0002C20.0066 12.939 20.532 14.2103 20.532 15.5357C20.532 16.8612 20.0066 18.1325 19.0709 19.0713C18.1324 20.0074 16.861 20.5332 15.5354 20.5332C14.2098 20.5332 12.9383 20.0074 11.9999 19.0713Z"></path></svg></a></h2>
<p>3.1 If a Contributor Distributes the Program in any form, then the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and inform Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and</p>
<p>3.2 When the Program is Distributed as Source Code:</p>
<p>a) it must be made available under this Agreement, and</p>
<p>b) a copy of this Agreement must be included with each copy of the Program.</p>
<p>3.3 Contributors may not remove or alter any Notices contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate Notices.</p>
<h2 class="css-1u29kau ei7zb6c3"><span id="4-no-warranty" class="css-1s68n4h ei7zb6c0"></span>4. No Warranty<a title="4. No Warranty" class="css-5cm1aq ei7zb6c2" href="/license/ssal/#4-no-warranty"><svg type="h2" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="css-s0nieh ei7zb6c1"><path d="M8.46588 12.7069C9.59888 13.8399 11.5749 13.8399 12.7079 12.7069L13.4149 11.9999L14.8289 13.4139L14.1219 14.1209C13.1789 15.0649 11.9229 15.5859 10.5869 15.5859C9.25088 15.5859 7.99488 15.0649 7.05188 14.1209L4.92988 11.9999C3.99417 11.0612 3.46875 9.78985 3.46875 8.46444C3.46875 7.13902 3.99417 5.86765 4.92988 4.92894C5.39375 4.4644 5.94484 4.0961 6.55149 3.8452C7.15814 3.59431 7.80839 3.46575 8.46488 3.46693C9.12154 3.46557 9.77199 3.59403 10.3788 3.84493C10.9857 4.09584 11.5369 4.46424 12.0009 4.92894L12.7079 5.63594L11.2939 7.04994L10.5869 6.34294C10.0233 5.78193 9.26055 5.46697 8.46538 5.46697C7.67021 5.46697 6.90741 5.78193 6.34388 6.34294C5.78238 6.90621 5.46708 7.6691 5.46708 8.46444C5.46708 9.25977 5.78238 10.0227 6.34388 10.5859L8.46588 12.7069Z"></path><path d="M11.9999 19.0713L11.2929 18.3643L12.7069 16.9503L13.4139 17.6573C13.9774 18.2183 14.7402 18.5332 15.5354 18.5332C16.3305 18.5332 17.0933 18.2183 17.6569 17.6573C18.2184 17.094 18.5337 16.3311 18.5337 15.5357C18.5337 14.7404 18.2184 13.9775 17.6569 13.4142L15.5349 11.2933C14.4019 10.1602 12.4259 10.1602 11.2929 11.2933L10.5859 12.0002L9.17188 10.5863L9.87887 9.87925C10.8219 8.93525 12.0779 8.41425 13.4139 8.41425C14.7499 8.41425 16.0059 8.93525 16.9489 9.87925L19.0709 12.0002C20.0066 12.939 20.532 14.2103 20.532 15.5357C20.532 16.8612 20.0066 18.1325 19.0709 19.0713C18.1324 20.0074 16.861 20.5332 15.5354 20.5332C14.2098 20.5332 12.9383 20.0074 11.9999 19.0713Z"></path></svg></a></h2>
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.</p>
<h2 class="css-1u29kau ei7zb6c3"><span id="5-disclaimer-of-liability" class="css-1s68n4h ei7zb6c0"></span>5. Disclaimer of Liability<a title="5. Disclaimer of Liability" class="css-5cm1aq ei7zb6c2" href="/license/ssal/#5-disclaimer-of-liability"><svg type="h2" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="css-s0nieh ei7zb6c1"><path d="M8.46588 12.7069C9.59888 13.8399 11.5749 13.8399 12.7079 12.7069L13.4149 11.9999L14.8289 13.4139L14.1219 14.1209C13.1789 15.0649 11.9229 15.5859 10.5869 15.5859C9.25088 15.5859 7.99488 15.0649 7.05188 14.1209L4.92988 11.9999C3.99417 11.0612 3.46875 9.78985 3.46875 8.46444C3.46875 7.13902 3.99417 5.86765 4.92988 4.92894C5.39375 4.4644 5.94484 4.0961 6.55149 3.8452C7.15814 3.59431 7.80839 3.46575 8.46488 3.46693C9.12154 3.46557 9.77199 3.59403 10.3788 3.84493C10.9857 4.09584 11.5369 4.46424 12.0009 4.92894L12.7079 5.63594L11.2939 7.04994L10.5869 6.34294C10.0233 5.78193 9.26055 5.46697 8.46538 5.46697C7.67021 5.46697 6.90741 5.78193 6.34388 6.34294C5.78238 6.90621 5.46708 7.6691 5.46708 8.46444C5.46708 9.25977 5.78238 10.0227 6.34388 10.5859L8.46588 12.7069Z"></path><path d="M11.9999 19.0713L11.2929 18.3643L12.7069 16.9503L13.4139 17.6573C13.9774 18.2183 14.7402 18.5332 15.5354 18.5332C16.3305 18.5332 17.0933 18.2183 17.6569 17.6573C18.2184 17.094 18.5337 16.3311 18.5337 15.5357C18.5337 14.7404 18.2184 13.9775 17.6569 13.4142L15.5349 11.2933C14.4019 10.1602 12.4259 10.1602 11.2929 11.2933L10.5859 12.0002L9.17188 10.5863L9.87887 9.87925C10.8219 8.93525 12.0779 8.41425 13.4139 8.41425C14.7499 8.41425 16.0059 8.93525 16.9489 9.87925L19.0709 12.0002C20.0066 12.939 20.532 14.2103 20.532 15.5357C20.532 16.8612 20.0066 18.1325 19.0709 19.0713C18.1324 20.0074 16.861 20.5332 15.5354 20.5332C14.2098 20.5332 12.9383 20.0074 11.9999 19.0713Z"></path></svg></a></h2>
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
<h2 class="css-1u29kau ei7zb6c3"><span id="6-general" class="css-1s68n4h ei7zb6c0"></span>6. General<a title="6. General" class="css-5cm1aq ei7zb6c2" href="/license/ssal/#6-general"><svg type="h2" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="css-s0nieh ei7zb6c1"><path d="M8.46588 12.7069C9.59888 13.8399 11.5749 13.8399 12.7079 12.7069L13.4149 11.9999L14.8289 13.4139L14.1219 14.1209C13.1789 15.0649 11.9229 15.5859 10.5869 15.5859C9.25088 15.5859 7.99488 15.0649 7.05188 14.1209L4.92988 11.9999C3.99417 11.0612 3.46875 9.78985 3.46875 8.46444C3.46875 7.13902 3.99417 5.86765 4.92988 4.92894C5.39375 4.4644 5.94484 4.0961 6.55149 3.8452C7.15814 3.59431 7.80839 3.46575 8.46488 3.46693C9.12154 3.46557 9.77199 3.59403 10.3788 3.84493C10.9857 4.09584 11.5369 4.46424 12.0009 4.92894L12.7079 5.63594L11.2939 7.04994L10.5869 6.34294C10.0233 5.78193 9.26055 5.46697 8.46538 5.46697C7.67021 5.46697 6.90741 5.78193 6.34388 6.34294C5.78238 6.90621 5.46708 7.6691 5.46708 8.46444C5.46708 9.25977 5.78238 10.0227 6.34388 10.5859L8.46588 12.7069Z"></path><path d="M11.9999 19.0713L11.2929 18.3643L12.7069 16.9503L13.4139 17.6573C13.9774 18.2183 14.7402 18.5332 15.5354 18.5332C16.3305 18.5332 17.0933 18.2183 17.6569 17.6573C18.2184 17.094 18.5337 16.3311 18.5337 15.5357C18.5337 14.7404 18.2184 13.9775 17.6569 13.4142L15.5349 11.2933C14.4019 10.1602 12.4259 10.1602 11.2929 11.2933L10.5859 12.0002L9.17188 10.5863L9.87887 9.87925C10.8219 8.93525 12.0779 8.41425 13.4139 8.41425C14.7499 8.41425 16.0059 8.93525 16.9489 9.87925L19.0709 12.0002C20.0066 12.939 20.532 14.2103 20.532 15.5357C20.532 16.8612 20.0066 18.1325 19.0709 19.0713C18.1324 20.0074 16.861 20.5332 15.5354 20.5332C14.2098 20.5332 12.9383 20.0074 11.9999 19.0713Z"></path></svg></a></h2>
<p>If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.</p>
<p>If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient’s patent(s), then such Recipient’s rights granted under Section 2(b) shall terminate as of the date such litigation is filed.</p>
<p>All Recipient’s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient’s rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient’s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.</p>
<p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel, or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement.</p></div></div></section></div></article></div></div></section><!--/$--><!--$--><style data-emotion="css vqvm4t">.css-vqvm4t{--tw-bg-opacity:1;background-color:rgb(243 246 251 / var(--tw-bg-opacity, 1));padding-bottom:134px;padding-top:28px;margin-top:auto;border-top-width:2px;border-color:#B7D3F2;}@media (min-width: 720px){.css-vqvm4t{padding-left:24px;padding-right:24px;}}@media (min-width: 1120px){.css-vqvm4t{padding-bottom:48px;padding-top:104px;}}</style><footer data-codename="footer" class="css-vqvm4t e1u9akvp11"><style data-emotion="css vqonid">.css-vqonid{width:100%;margin-right:auto;margin-left:auto;position:relative;z-index:1;position:relative;padding-left:16px;padding-right:16px;}@media (min-width: 500px){.css-vqonid{max-width:500px;}}@media (min-width: 720px){.css-vqonid{max-width:720px;}}@media (min-width: 1120px){.css-vqonid{max-width:1120px;}}@media (min-width: 720px){.css-vqonid{padding-left:0;padding-right:0;}}</style><div class="css-vqonid e1u9akvp10"><style data-emotion="css 1dixsgy">.css-1dixsgy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:52px;width:100%;}@media (min-width: 1120px){.css-1dixsgy{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:32px;}}</style><div class="css-1dixsgy e1u9akvp13"><style data-emotion="css 6su6fj">.css-6su6fj{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}</style><div class="css-6su6fj e13mpwbd3"><a target="_self" class="css-0 e13mpwbd1" href="/"><span class="css-1z119ai e13mpwbd2">Go to SonarSource homepage</span><style data-emotion="css irmwfq">.css-irmwfq{height:30px;width:92px;}@media (min-width: 1120px){.css-irmwfq{height:53px;width:163px;}}</style><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained css-irmwfq e13mpwbd0"><div style="max-width:160px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height=&#x27;40&#x27;%20width=&#x27;160&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20version=&#x27;1.1&#x27;%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;object-fit:contain"></div><img data-gatsby-image-ssr="" data-main-image="" style="object-fit:contain;opacity:0" sizes="(min-width: 160px) 160px, 100vw" decoding="async" loading="lazy" data-src="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=160&amp;h=40&amp;auto=format&amp;fit=crop" data-srcset="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=40&amp;h=10&amp;auto=format&amp;fit=crop 40w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=80&amp;h=20&amp;auto=format&amp;fit=crop 80w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=160&amp;h=40&amp;auto=format&amp;fit=crop 160w" alt="sonar logo "/><noscript><img data-gatsby-image-ssr="" data-main-image="" style="object-fit:contain;opacity:0" sizes="(min-width: 160px) 160px, 100vw" decoding="async" loading="lazy" src="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=160&amp;h=40&amp;auto=format&amp;fit=crop" srcSet="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=40&amp;h=10&amp;auto=format&amp;fit=crop 40w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=80&amp;h=20&amp;auto=format&amp;fit=crop 80w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/8e59bcad-6e39-41dc-abd9-a0e251e8d63f/Sonar%20%282%29.svg?w=160&amp;h=40&amp;auto=format&amp;fit=crop 160w" alt="sonar logo "/></noscript><script type="module" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></div><style data-emotion="css scvcnf">@media (min-width: 1120px){.css-scvcnf{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}</style><div class="css-scvcnf e1u9akvp9"><style data-emotion="css chvhw9">.css-chvhw9{list-style-type:none;margin:0;margin-bottom:16px;}.css-chvhw9:last-child{margin-bottom:0;}@media (min-width: 1120px){.css-chvhw9{margin-bottom:44px;}}@media (min-width: 1120px){.css-chvhw9{display:grid;grid-template-columns:repeat(5, minmax(0, 1fr));gap:32px;}}@media (min-width: 1120px){.css-chvhw9{break-inside:avoid;}}@media (min-width: 500px){.css-chvhw9{-webkit-columns:1;columns:1;}}@media (min-width: 720px){.css-chvhw9{-webkit-columns:2;columns:2;}}</style><ul class="css-chvhw9 e1u9akvp7"><style data-emotion="css 3f7bvr">.css-3f7bvr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:32px;padding-bottom:32px;}@media (min-width: 1120px){.css-3f7bvr{padding-bottom:0;}}@media (max-width: 1119px){.css-3f7bvr{break-inside:avoid;}}</style><li class="css-3f7bvr e1d7e3870"><div><style data-emotion="css 1ug12gr">.css-1ug12gr{font-family:Inter,Inter-Fallback;font-weight:600;font-size:12px;line-height:14px;letter-spacing:1.8px;color:#290042;display:block;margin-bottom:18px;}</style><strong class="css-1ug12gr e1hrj1e42">Sonar Solutions</strong><style data-emotion="css y5z6rw">.css-y5z6rw{margin:0;list-style-type:none;padding:0;}</style><ul class="css-y5z6rw e1hrj1e41"><style data-emotion="css sf41n3">.css-sf41n3{margin-bottom:8px;}.css-sf41n3:last-child{margin-bottom:0;}@media (min-width: 1120px){.css-sf41n3{line-height:1.25rem;}}</style><li class="css-sf41n3 e1hrj1e40"><style data-emotion="css bbki0t">.css-bbki0t{font-family:Inter,Inter-Fallback;font-weight:400;font-size:16px;line-height:20px;color:#290042;display:inline;letter-spacing:0;}.css-bbki0t:hover{text-decoration-line:underline;}</style><style data-emotion="css ouyh3s">.css-ouyh3s{font-family:Inter,Inter-Fallback;font-weight:400;font-size:16px;line-height:20px;color:#290042;display:inline;letter-spacing:0;}.css-ouyh3s:hover{text-decoration-line:underline;}</style><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/security/">Code security</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/security/sast/">SAST </a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/security/sca/">SCA</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/secrets-detection/">Secrets detection</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/developer-security/">Developer security</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/ai/">AI solutions</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/ai-code-quality/">AI code quality</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/code-coverage/">Code coverage</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/code-review/">Code review</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/automated-code-review/">Automated review</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/code-review/ai/">AI code review</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/platform-engineering/">Platform engineering</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/compliance-and-reporting/">Code compliance</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/code-governance/">SDLC governance</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/for-developers/">For developers</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/for-enterprise/">For enterprise</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/infrastructure-as-code/">IaC scanning</a></li></ul></div></li><li class="css-3f7bvr e1d7e3870"><div><strong class="css-1ug12gr e1hrj1e42">Products</strong><ul class="css-y5z6rw e1hrj1e41"><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/products/sonarcloud/">SonarQube Cloud</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/products/sonarqube/">SonarQube Server</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/products/sonarlint/">SonarQube for IDE</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/products/sonarqube/advanced-security/">Advanced Security</a></li></ul></div><div><strong class="css-1ug12gr e1hrj1e42">Pricing</strong><ul class="css-y5z6rw e1hrj1e41"><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/get-started/cloud/">Start for free</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/plans-and-pricing/">Explore pricing</a></li></ul></div></li><li class="css-3f7bvr e1d7e3870"><div><strong class="css-1ug12gr e1hrj1e42">Company</strong><ul class="css-y5z6rw e1hrj1e41"><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/company/about/">About</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/company/careers/">Careers</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/solutions/commitment-to-open-source/">Commitment to open source</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/company/customers/">Customers</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/company/partners/">Partners</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/company/contact/">Contact us</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/accessibility/">Accessibility</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/brand-identity/">Brand identity</a></li></ul></div><div><strong class="css-1ug12gr e1hrj1e42">Media</strong><ul class="css-y5z6rw e1hrj1e41"><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/company/coverage/">Coverage</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/company/press-releases/">Press releases</a></li></ul></div></li><li class="css-3f7bvr e1d7e3870"><div><strong class="css-1ug12gr e1hrj1e42">Resources</strong><ul class="css-y5z6rw e1hrj1e41"><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/product-demos/">Product demos</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/resources/events/">Events hub</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/resources/customer-stories/">Customer stories</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/resources/white-papers/">White papers</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/resources/library/guide/">Learn</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_blank" href="https://community.sonarsource.com/" class="e1u9akvp0 css-ouyh3s e1gts9nz0">Community</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/support/">Support</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/legal/">Legal documentation</a></li></ul></div></li><li class="css-3f7bvr e1d7e3870"><div><strong class="css-1ug12gr e1hrj1e42">Knowledge</strong><ul class="css-y5z6rw e1hrj1e41"><li class="css-sf41n3 e1hrj1e40"><a target="_blank" href="https://rules.sonarsource.com/" class="e1u9akvp0 css-ouyh3s e1gts9nz0">Explore Sonar&#x27;s rules</a></li><li class="css-sf41n3 e1hrj1e40"><a href="/blog/" target="_blank" class="e1u9akvp0 css-ouyh3s e1gts9nz0">Blog</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/knowledge/languages/">Languages</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_blank" href="https://docs.sonarsource.com/sonarqube-server/latest/" class="e1u9akvp0 css-ouyh3s e1gts9nz0">SonarQube Server documentation</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_blank" href="https://docs.sonarsource.com/sonarqube-cloud/" class="e1u9akvp0 css-ouyh3s e1gts9nz0">SonarQube Cloud documentation</a></li><li class="css-sf41n3 e1hrj1e40"><a target="_blank" href="https://docs.sonarsource.com/sonarqube-for-ide/" class="e1u9akvp0 css-ouyh3s e1gts9nz0">SonarQube for IDE documentation</a></li></ul></div></li></ul><style data-emotion="css 1cpit7v">.css-1cpit7v{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;gap:16px;padding-bottom:32px;}@media (min-width: 1120px){.css-1cpit7v{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}@media (min-width: 1120px){.css-1cpit7v{border-bottom-width:1px;border-style:solid;border-color:#B7D3F2;}}@media (min-width: 1120px){.css-1cpit7v{margin-bottom:32px;}}</style><div class="css-1cpit7v e1u9akvp6"><style data-emotion="css 1487f3p">.css-1487f3p{list-style-type:none;margin:0;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:16px;}@media (min-width: 1120px){.css-1487f3p{position:relative;margin-top:-8px;}}@media (min-width: 1120px){.css-1487f3p{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}}</style><ul class="css-1487f3p e1u9akvp3"><li><style data-emotion="css 1rloaf9">.css-1rloaf9{display:block;height:37px;width:37px;border-radius:0.5rem;padding:8px;--tw-bg-opacity:1;background-color:rgb(41 0 66 / var(--tw-bg-opacity, 1));color:#FFFFFF;}.css-1rloaf9:hover{--tw-bg-opacity:1;background-color:rgb(243 246 251 / var(--tw-bg-opacity, 1));}.css-1rloaf9:hover{color:#290042;}.css-1rloaf9:hover{border-color:#290042;}.css-1rloaf9:hover{border-width:1px;}</style><a href="https://twitter.com/sonarsource" target="_blank" rel="noopener noreferrer" class="css-1rloaf9 e1om8dj71"><span class="css-1z119ai e1om8dj70">Follow SonarSource on Twitter</span></a></li><li><a href="https://www.linkedin.com/company/sonarsource/" target="_blank" rel="noopener noreferrer" class="css-1rloaf9 e1om8dj71"><span class="css-1z119ai e1om8dj70">Follow SonarSource on Linkedin</span></a></li></ul><style data-emotion="css 11hyaoq">.css-11hyaoq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (min-width: 1120px){.css-11hyaoq{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}}</style><ul class="css-11hyaoq e1u9akvp2"><li class="css-6su6fj eqojlnz2"><a target="_blank" href="https://www.aicpa-cima.com/home" class="css-0 eqojlnz0"><span class="css-1z119ai eqojlnz1">AICPA SOC 2</span><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:50px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height=&#x27;50&#x27;%20width=&#x27;50&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20version=&#x27;1.1&#x27;%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;object-fit:contain"></div><img data-gatsby-image-ssr="" data-main-image="" style="object-fit:contain;opacity:0" sizes="(min-width: 50px) 50px, 100vw" decoding="async" loading="lazy" data-src="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=50&amp;h=50&amp;auto=format&amp;fit=crop" data-srcset="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=13&amp;h=13&amp;auto=format&amp;fit=crop 13w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=25&amp;h=25&amp;auto=format&amp;fit=crop 25w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=50&amp;h=50&amp;auto=format&amp;fit=crop 50w" alt="Footer logo"/><noscript><img data-gatsby-image-ssr="" data-main-image="" style="object-fit:contain;opacity:0" sizes="(min-width: 50px) 50px, 100vw" decoding="async" loading="lazy" src="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=50&amp;h=50&amp;auto=format&amp;fit=crop" srcSet="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=13&amp;h=13&amp;auto=format&amp;fit=crop 13w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=25&amp;h=25&amp;auto=format&amp;fit=crop 25w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/f8e77add-351d-40d8-9d11-dbbad39faa34/SOC2_Logo.png?w=50&amp;h=50&amp;auto=format&amp;fit=crop 50w" alt="Footer logo"/></noscript><script type="module" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></li><li class="css-6su6fj eqojlnz2"><a target="_blank" href="https://msecb.com/" class="css-0 eqojlnz0"><span class="css-1z119ai eqojlnz1">MSECB</span><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:42px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height=&#x27;50&#x27;%20width=&#x27;42&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20version=&#x27;1.1&#x27;%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;object-fit:contain"></div><img data-gatsby-image-ssr="" data-main-image="" style="object-fit:contain;opacity:0" sizes="(min-width: 42px) 42px, 100vw" decoding="async" loading="lazy" data-src="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=42&amp;h=50&amp;auto=format&amp;fit=crop" data-srcset="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=11&amp;h=13&amp;auto=format&amp;fit=crop 11w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=21&amp;h=25&amp;auto=format&amp;fit=crop 21w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=42&amp;h=50&amp;auto=format&amp;fit=crop 42w" alt="Footer logo"/><noscript><img data-gatsby-image-ssr="" data-main-image="" style="object-fit:contain;opacity:0" sizes="(min-width: 42px) 42px, 100vw" decoding="async" loading="lazy" src="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=42&amp;h=50&amp;auto=format&amp;fit=crop" srcSet="https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=11&amp;h=13&amp;auto=format&amp;fit=crop 11w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=21&amp;h=25&amp;auto=format&amp;fit=crop 21w,https://assets-eu-01.kc-usercontent.com:443/55017e37-262d-017b-afd6-daa9468cbc30/1cc9fbb8-6b44-41ea-97c9-b2b09e2352a4/ISO-IEC-27001-2022.png?w=42&amp;h=50&amp;auto=format&amp;fit=crop 42w" alt="Footer logo"/></noscript><script type="module" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></a></li></ul></div><style data-emotion="css 1go16d5">.css-1go16d5{margin-bottom:32px;}@media (min-width: 1120px){.css-1go16d5{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;gap:64px;}}</style><div class="css-1go16d5 e1u9akvp1"><style data-emotion="css 6w0507">.css-6w0507{list-style-type:none;text-align:center;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}@media (min-width: 1120px){.css-6w0507{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}.css-6w0507 a,.css-6w0507 button{font-size:14px;line-height:21px;}</style><ul class="css-6w0507 e1u9akvp5"><style data-emotion="css 1dsq0w7">.css-1dsq0w7{white-space:nowrap;}.css-1dsq0w7:not(:last-child){border-color:#290042;}@media (min-width: 1120px){.css-1dsq0w7:not(:last-child){border-right-width:1px;}}@media (min-width: 1120px){.css-1dsq0w7:not(:last-child){margin-right:8px;padding-right:8px;}}</style><li class="css-1dsq0w7 e1u9akvp4"><a href="/legal/website-terms-of-use/" target="_blank" class="e1u9akvp0 css-ouyh3s e1gts9nz0">Website Terms of Use</a></li><li class="css-1dsq0w7 e1u9akvp4"><a href="/company/privacy/" target="_blank" class="e1u9akvp0 css-ouyh3s e1gts9nz0">Privacy Notice</a></li><li class="css-1dsq0w7 e1u9akvp4"><a href="/company/cookie-policy/" target="_blank" class="e1u9akvp0 css-ouyh3s e1gts9nz0">Cookie Policy</a></li><li class="css-1dsq0w7 e1u9akvp4"><a target="_self" class="e1u9akvp0 css-ouyh3s e1gts9nz0" href="/trust-center/">Trust center</a></li><li class="css-1dsq0w7 e1u9akvp4"><button class="e1u9akvp0 css-ouyh3s e1gts9nz0">Your Privacy Choices</button></li><li class="css-1dsq0w7 e1u9akvp4"><a target="_self" href="https://www.sonarsource.com/legal/uk-modern-slavery-act-statement/" class="e1u9akvp0 css-ouyh3s e1gts9nz0">UK Modern Slavery Act Statement</a></li></ul></div><style data-emotion="css 16pjw7h">@media (min-width: 1120px){.css-16pjw7h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}}</style><div class="css-16pjw7h e1u9akvp8"><style data-emotion="css 13uknw9">.css-13uknw9{font-family:Inter,Inter-Fallback;font-weight:400;text-align:center;font-size:10px;line-height:16px;color:#290042;}@media (min-width: 1120px){.css-13uknw9{text-align:left;}}@media (min-width: 1120px){.css-13uknw9{max-width:500px;}}@media (min-width: 1120px){.css-13uknw9{-webkit-order:-9999;-ms-flex-order:-9999;order:-9999;}}</style><div class="css-13uknw9 e1u9akvp12"><p>© 2008-2025 SonarSource SA. All rights reserved.</p></div></div></div></div></div></footer><!--/$--></div></main></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><noscript>
      <!-- Google Tag Manager (noscript) -->
      <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-56V34P9"
      height="0" width="0" style="display:none;visibility:hidden"></iframe>
      <!-- End Google Tag Manager (noscript) -->
    </noscript><script id="gatsby-script-loader" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">/*<![CDATA[*/window.pagePath="/license/ssal/";/*]]>*/</script><!-- slice-start id="_gatsby-scripts-1" -->
          <script id="gatsby-chunk-mapping" nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">
            window.___chunkMapping="{\"app\":[\"/app-bf414dceabd855aa7092.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-0205d81cbbe4318815aa.js\"],\"component---src-pages-cheq-ppc-invalid-users-tsx\":[\"/component---src-pages-cheq-ppc-invalid-users-tsx-4feca5e44b41448a346b.js\"],\"component---src-pages-component-a-b-test-variants-tsx\":[\"/component---src-pages-component-a-b-test-variants-tsx-a139930e11f54b822123.js\"],\"component---src-pages-de-404-tsx\":[\"/component---src-pages-de-404-tsx-db4c56a07ba75b60b29a.js\"],\"component---src-pages-es-404-tsx\":[\"/component---src-pages-es-404-tsx-8c5f86ccc4578a14f595.js\"],\"component---src-pages-fr-404-tsx\":[\"/component---src-pages-fr-404-tsx-b8def41332255e8180a0.js\"],\"component---src-pages-jp-404-tsx\":[\"/component---src-pages-jp-404-tsx-3cc8fc5a17b93d5b3295.js\"],\"component---src-pages-ko-404-tsx\":[\"/component---src-pages-ko-404-tsx-cde7dd8c4e625eb68ee7.js\"],\"component---src-pages-roi-report-tsx\":[\"/component---src-pages-roi-report-tsx-e2d02199abc4279b54c2.js\"],\"component---src-pages-zh-404-tsx\":[\"/component---src-pages-zh-404-tsx-69175494e2b83d3ef10b.js\"],\"component---src-templates-article-page-template-tsx\":[\"/component---src-templates-article-page-template-tsx-1c68798dd6c6aa76fbf5.js\"],\"component---src-templates-blog-tag-page-template-tsx\":[\"/component---src-templates-blog-tag-page-template-tsx-f168f95fabf08f710793.js\"],\"component---src-templates-general-page-template-tsx\":[\"/component---src-templates-general-page-template-tsx-4309a1b9ef6ac7ca4a2b.js\"],\"component---src-templates-index-page-template-tsx\":[\"/component---src-templates-index-page-template-tsx-5ff04885c7f1a93d3dae.js\"],\"component---src-templates-search-page-template-tsx\":[\"/component---src-templates-search-page-template-tsx-fa1a60bca939a1f68203.js\"]}";
          </script>
        <script nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA">window.___webpackCompilationHash="da59acd273a3f655d5aa";</script><script src="/webpack-runtime-fc5548b32bc49a43d0a8.js" async nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA"></script><script src="/framework-5b83c6b2f4687b383085.js" async nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA"></script><script src="/app-bf414dceabd855aa7092.js" async nonce="urPr3g7nMiU5ATPnW8HEY5/Pz0i9LjhA"></script><!-- slice-end id="_gatsby-scripts-1" --></body></html>