αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž™αžΎαž„αž…αž„αŸ‹αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžœαŸαž‘αž·αž€αžΆ SonarQube αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž”αž“αŸ’αž αž“αž·αž„αž€αžΆαžšαžœαžΆαžŸαŸ‹αžœαŸ‚αž„αž‚αž»αžŽαž—αžΆαž–αž€αžΌαžŠαž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’ DPO (αž”αž“αŸ’αžαŸ‚αž˜αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αžŽαž“αžΈαž”αž‰αŸ’αž‰αžΎ Alameda αž“αž·αž„αž‡αž˜αŸ’αžšαŸ‡αž”αž‰αŸ’αž‡αžΈ) αž“αŸƒαž€αž“αŸ’αž›αŸ‚αž„αž‘αž‘αž½αž›αž”αŸ’αžšαžΆαž€αŸ‹αž‘αžΌαž‘αžΆαžαŸ‹αž‡αžΆαžαž·αŸ”

αž€αž“αŸ’αž›αŸ‚αž„αžŠαžΆαž€αŸ‹αž”αŸ’αžšαžΆαž€αŸ‹αž‘αžΌαž‘αžΆαžαŸ‹αž‡αžΆαžαž· (αž€αŸ’αžšαž»αž˜αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ Moscow Exchange) αž‚αžΊαž‡αžΆαž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž αž·αžšαž‰αŸ’αž‰αžœαžαŸ’αžαž» αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž“αž·αž„αž‚αžŽαž“αŸαž™αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αžΌαž›αž”αžαŸ’αžšαž“αŸƒαž’αŸ’αž“αž€αž”αŸ„αŸ‡αž•αŸ’αžŸαžΆαž™αžšαž»αžŸαŸ’αžŸαŸŠαžΈ αž“αž·αž„αž”αžšαž‘αŸαžŸαžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž‡αžΆαž„ 50 αž–αžΆαž“αŸ‹αž–αžΆαž“αŸ‹αž›αžΆαž“αžšαžΌαž”αŸ’αž›αž·αŸαŸ” αž”αžšαž·αž˜αžΆαžŽαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαž“αž‘αžΎαž„αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αž˜αž»αžαž„αžΆαžšαž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž“αžΌαžœαž”αŸ’αžšαž—αž–αž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΆαž“αž‚αž»αžŽαž—αžΆαž–αžαŸ’αž–αžŸαŸ‹αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αž§αž”αž€αžšαžŽαŸαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž‚αŸ„αž›αžŠαŸ…αž“αŸαŸ‡αž‚αžΊ SonarQube static analyzer αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž’αŸ†αž–αžΈαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž‡αŸ„αž‚αž‡αŸαž™αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž SonarQube αž™αŸ‰αžΆαž„αžšαž›αžΌαž“αž‘αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αž“αŸƒαž“αžΆαž™αž€αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αžŸαž„αŸ’αžαŸαž”αž’αŸ†αž–αžΈαž“αžΆαž™αž€αžŠαŸ’αž‹αžΆαž“

αžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹αž™αžΎαž„αžšαž½αž˜αž˜αžΆαž“αž˜αŸ‰αžΌαžŒαž»αž›αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– αž€αžΆαžšαž‘αžΌαž‘αžΆαžαŸ‹αž‘αŸ…αž’αžαž·αžαž·αž‡αž“ NSD αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž―αž€αžŸαžΆαžšαž’αŸαž‘αž·αž…αžαŸ’αžšαžΌαž“αž·αž€ (EDF) αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžΆαžšαžƒαŸ’αž›αžΆαŸ†αž„αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜ (αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸ…αž αžΆαž„αž”αž‰αŸ’αž‡αžš) αž”αžŽαŸ’αžαžΆαž‰αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž’αŸαž‘αž·αž…αžαŸ’αžšαžΌαž“αž·αž…αžšαžœαžΆαž„αž’αžαž·αžαž·αž‡αž“ αž“αž·αž„ NSD αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αž‡αžΆαž‘αžΌαž‘αŸ…αž˜αžΆαž“αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž“αŸƒαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ” αž™αžΎαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαžŸαŸ†αžŽαžΎαŸ” αž–αžΆαž€αŸ’αž™αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž–αžΈαž˜αž“αŸ’αžαŸ’αžšαžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αŸ– αž–αž½αž€αž‚αŸαž”αŸ’αžšαž˜αžΌαž›αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžšαž”αžŸαŸ‹αž’αžαž·αžαž·αž‡αž“ αž αžΎαž™αž”αž„αŸ’αž αžΆαž‰αž™αžΎαž„αž“αžΌαžœαž…αž€αŸ’αžαž»αžœαž·αžŸαŸαž™αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαž‚αž½αžšαžŸαž˜αž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‚αžΊαž‡αžΆαž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ– αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αžΌαžŠ - αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž - αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ - αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž›αŸαžαž€αžΌαžŠαž‘αŸ…αžŸαŸ€αž‚αŸ’αžœαžΈαž•αž›αž·αžαž€αž˜αŸ’αž˜αžŠαž›αŸ‹αž’αžαž·αžαž·αž‡αž“αž•αŸ’αž‘αžΆαž›αŸ‹αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈ SonarQube?

αž“αŸαŸ‡αž‡αžΆαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αž“αžΆαž™αž€αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžœαŸαž‘αž·αž€αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‚αž»αžŽαž—αžΆαž–αž€αžΌαžŠ - αž–αžΈαž˜αž»αž“αž™αžΎαž„αž”αžΆαž“αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αžŠαŸƒ αžŠαŸ„αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž’αŸ’αžœαžΎαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αžšαž·αž˜αžΆαžŽαž€αžΆαžšαž„αžΆαžšαž€αžΎαž“αž‘αžΎαž„αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž€αŸ’αžšαž»αž˜αž€αžΆαžšαž„αžΆαžšαž€αŸαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž•αž„αžŠαŸ‚αžšαž“αžΌαžœαž”αž»αž‚αŸ’αž‚αž›αž·αž€αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸ αžŠαŸ‚αž›αž˜αž·αž“αžŸαŸŠαžΆαŸ†αž“αžΉαž„αž”αž‘αž”αŸ’αž”αž‰αŸ’αž‰αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„ αž αžΎαž™αž˜αžΆαž“αž‘αŸ†αž“αŸ„αžšαž’αŸ’αžœαžΎαžαž»αžŸαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‚αž»αžŽαž—αžΆαž–αž“αŸƒαž€αžΌαžŠ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αž“αž»αžœαžαŸ’αžαž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαŸ” αžŠαŸ„αž™αžŸαžΆαžš SonarQube αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžšαž½αž…αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ NSD αž˜αž½αž™αž…αŸ†αž“αž½αž“ αžœαžΆαž˜αž·αž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž™αžΌαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‘αŸαŸ” αž–αžΈαž˜αž»αž“αžŸαž αžŸαŸαžœαž·αž€αž˜αž€αž–αžΈαž“αžΆαž™αž€αžŠαŸ’αž‹αžΆαž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αžΆαž“αž”αŸ’αžšαžΎαžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαžœαž·αž—αžΆαž‚αž€αžΌαžŠαž“αŸƒαžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ Alameda (αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αžŽαž“αžΈαž”αž‰αŸ’αž‰αžΎ αž“αž·αž„αž‡αž˜αŸ’αžšαŸ‡αž”αž‰αŸ’αž‡αžΈαž•αŸ’αž‘αžΆαž›αŸ‹αžšαž”αžŸαŸ‹ NSD) αž“αŸ…αž€αŸ’αž“αž»αž„ CFT (αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αŸαžαŸŒαž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‚αžŽαž“αŸαž™αŸ’αž™ αžαžΆαžšαžΆαž„αžαž»αž›αŸ’αž™αž€αžΆαžš αžšαŸ€αž”αž…αŸ†αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž“αž·αž„αž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„) αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαŸαž„αŸ—αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸ αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ†αžŽαŸ‚αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαžšαž”αžŸαŸ‹ SonarQube αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž”αž“αŸ’αžαž‘αŸ…αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž

αž™αžΎαž„β€‹αž˜αžΆαž“:

  • αž€αžΆαžšαž•αŸ’αž‚αž»αŸ†αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž€αŸ’αž“αž»αž„ TeamCity;
  • αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αžΎαž„αž€αžΌαžŠαžαžΆαž˜αžšαž™αŸˆ MergeRequest αž–αžΈαžŸαžΆαžαžΆαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‘αŸ…αžŸαžΆαžαžΆαž˜αŸαž“αŸ…αž€αŸ’αž“αž»αž„ GitLab αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ (αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž™αŸ„αž„αž‘αŸ…αžαžΆαž˜ GitHub Flow);
  • SonarQube αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαžœαž·αž—αžΆαž‚αž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ DPO αžαžΆαž˜αž€αžΆαž›αžœαž·αž—αžΆαž‚αŸ”

αž‚αŸ„αž›αžŠαŸ…β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„αŸ– αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αžΌαžŠαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš CI/CD αžšαž”αžŸαŸ‹ DPO αŸ”

αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ– αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž”αž‰αŸ’αž…αžΌαž›αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΈαž˜αž½αž™αŸ—αž‘αŸ…αž€αžΆαž“αŸ‹αžŸαžΆαžαžΆαž…αž˜αŸ’αž”αž„αŸ”

αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžšαžΌαž”αž—αžΆαž–αž‚αŸ„αž›αžŠαŸ…αž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– αžŠαžšαžΆαž”αžŽαžΆαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž•αŸ’αž‘αž»αž€αž‘αžΎαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž•αŸ’αž“αŸ‚αž€αž˜αž»αžαž„αžΆαžš αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αž αž»αžŸαžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž‘αŸαž“αŸ„αŸ‡ αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž‘αž‘αž½αž›αž™αž€ αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž€αŸ†αž αž»αžŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαŸ” αžšαž½αž…αž αžΎαž™αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž…αŸ†αž“αž½αž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαŸ” αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“αŸ– αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαžšαž€αž·αž…αŸ’αž…αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αžΈαž˜αž½αž™αŸ— αž“αž·αž„αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ QualityGate αž“αŸ…αž€αŸ’αž“αž»αž„ SonarQube

αž€αžΆαžšαžœαž·αž—αžΆαž‚ QualityGate αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž˜αŸ’αžšαŸ…αž“αŸƒαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ” αž–αžΈαžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αžŸαŸαž„ αžŠαŸ‚αž›αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž„ αž“αž·αž„αžαžΆαž˜αžœαž·αž’αžΈαžαŸ’αž›αŸ‡ αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž€αŸαž“αž–αžΈαžšαžŠαž„αžαžΆαž˜αžšαž™αŸˆ SonarQubeαŸ– αž™αžΎαž„αž”αžΆαž“αžŸαŸ’αž€αŸαž“αžŸαžΆαžαžΆαž˜αž»αžαž„αžΆαžš αž“αž·αž„αžŸαžΆαžαžΆαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αž‰αŸ’αž…αžΌαž›αžŸαžΆαžαžΆαž˜αž»αžαž„αžΆαžš αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž…αŸ†αž“αž½αž“αž“αŸƒαž€αŸ†αž αž»αžŸαŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž˜αž·αž“αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž– αž αžΎαž™αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž•αŸ’αžαž›αŸ‹αž›αž‘αŸ’αž’αž•αž›αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ„αŸ‡αž‘αŸαŸ” αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆαž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš SonarQube αž–αžΈαžšαžŠαž„ αž™αžΎαž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž›αžΎαž…αŸ†αž“αž½αž“αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎ (QualityGate) αž αžΎαž™αžœαž·αž—αžΆαž‚αžαŸ‚αžŸαžΆαžαžΆαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž„αŸ’αž αŸ„αŸ‡ αž“αž·αž„αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αž“αŸ…αžαŸ‚αž”αŸ’αžšαžΎαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΌαžŠαžŠαŸ†αž”αžΌαž„αŸ” αž‚αž½αžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆ SonarQube αž˜αž·αž“αž†αž”αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž½αž™αž…αŸ†αž“αž½αž“ αžšαž½αž˜αž‘αžΆαŸ†αž„ Delphi αž•αž„αžŠαŸ‚αžšαŸ” αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αžœαž·αž—αžΆαž‚αžαŸ‚αž›αŸαžαž€αžΌαžŠ PLSql αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αž“αŸαŸ‡αŸ–

  • αž™αžΎαž„αžœαž·αž—αžΆαž‚αžαŸ‚αž€αžΌαžŠ PL/SQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
  • SonarQube αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ QualityGate αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž…αŸ†αž“αž½αž“αž“αŸƒαž€αŸ†αž αž»αžŸαž˜αž·αž“αž€αžΎαž“αž‘αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαž˜αž½αž™αŸ”
  • αž…αŸ†αž“αž½αž“αž“αŸƒαž€αŸ†αž αž»αžŸαž“αŸ…αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ†αž”αžΌαž„αž‚αžΊ 229αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž€αŸ†αž αž»αžŸαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αž αž“αŸ„αŸ‡αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž‘αŸαŸ”
  • αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αŸ†αž αž»αžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚ αžœαžΆαž“αžΉαž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ QualityGate αž‘αžΎαž„αžœαž·αž‰αž”αžΆαž“αŸ”
  • αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž…αŸ†αžŽαž»αž…αžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚ αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž€αžΌαžŠαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‡αžΆαžŠαžΎαž˜αŸ”

αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž€αžΆαžšαž„αžΆαžšαŸ–

αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αžšαž”αžŸαŸ‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž”αž„αŸ’αž αžΆαž‰αžαžΆαž…αŸ†αž“αž½αž“αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž˜αž»αžαž„αžΆαžšαž˜αž·αž“αž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αžœαžΈαŸ—αž‚αžΊαž™αž›αŸ‹αž–αŸ’αžšαž˜αŸ”

αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž”αŸŠαžΌαžαž»αž„β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž‚αŸ’αž“αžΆβ€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžΎβ€‹αž”αžΆαž“β€‹αŸ”

αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαž…αŸ†αž“αž½αž“αž“αŸƒαž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αžŠαŸ‚αž›αž’αžΆαž…αž‘αž‘αž½αž›αž™αž€αž”αžΆαž“αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž’αžΆαž€αŸ’αžšαž€αŸ‹αŸ”

αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž”αŸŠαžΌαžαž»αž„αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž˜αžΆαž“αž–αžŽαŸŒαž€αŸ’αžšαž αž˜αŸ” αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž αžΆαž˜αžƒαžΆαžαŸ‹αž›αžΎαž€αžΆαžšαž’αžΆαž”αŸ‹αž‘αžΌαžαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž€αžΆαžšαžŸαŸ†αžšαŸαž…αž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαŸ” αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αž’αŸ’αž“αž€αž’αžΆαž…αž€αžΆαžšαž–αžΆαžšαž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαž”αŸ‚αž”αž“αŸαŸ‡αž–αžΈαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžŸαžΆαžαžΆαž’αŸ†αŸ”

αžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αž SonarQube αž“αž·αž„αžŠαžΉαž„αž–αžΈαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž€αžΆαžšαž„αžΆαžšαž―αž€αžšαžΆαž‡αŸ’αž™αž›αžΎαž€αŸ†αž αž»αžŸ

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αŸ†αž αž»αžŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ„αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αŸ’αžšαŸ„αŸ‡ SonarQube αžœαž·αž—αžΆαž‚αžαžΆαž˜αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαŸαžαžΉαž„αžšαžΉαž„αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž‚αžΆαžαŸ‹β€‹αž…αžΆαžαŸ‹β€‹αž‘αž»αž€β€‹αžαžΆβ€‹αž˜αžΆαž“β€‹αž€αŸ†αž αž»αžŸβ€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž˜αž·αž“β€‹αž˜αŸ‚αž“β€‹αž‡αžΆβ€‹αž€αžΌαžŠβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž› αž“αž·αž„αž…αŸ†αžŽαžΆαŸ†αžαžΆαžαžΎαž“αŸαŸ‡αž–αž·αžαž‡αžΆαž€αŸ†αž αž»αžŸ αž¬αžαžΆαžαžΎαžœαžΆαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸαŸ” αžœαž·αž’αžΈαž“αŸαŸ‡αž™αžΎαž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž…αŸ†αž“αž½αž“αž€αŸ†αž αž»αžŸαŸ” αž™αžΌαžš αŸ— αž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αžΉαž„αžšαŸ€αž“αž™αž›αŸ‹αž–αžΈ nuances αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ”

αžαžΎαž™αžΎαž„αž”αžΆαž“αž˜αž€αžšαž€αž’αŸ’αžœαžΈ

αž‚αŸ„αž›αžŠαŸ…αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αžαžΆαžαžΎαžœαžΆαž‚αž½αžšαž•αŸ’αžαž›αŸ‹αž™αŸ„αž”αž›αŸ‹αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αŸαžšαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž›αŸαžαž€αžΌαžŠαž‘αŸ…αž‡αžΆαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ‚αžšαž¬αž‘αŸαŸ” αž αžΎαž™αž›αž‘αŸ’αž’αž•αž›αž”αžΆαž“αžŸαŸ†αžšαŸαž…αžαžΆαž˜αž€αžΆαžšαžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ” SonarQube αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž—αžΆαžŸαžΆαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš αž’αŸ’αžœαžΎαž€αžΆαžšαžœαž·αž—αžΆαž‚αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αžŸαž˜αž’αž˜αŸŒ αž“αž·αž„αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαŸ€αž“αž–αžΈαž‚αž“αŸ’αž›αžΉαŸ‡αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ” αžŸαžšαž»αž”αž˜αž€ αž™αžΎαž„αžšαžΈαž€αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎ SonarQube αž αžΎαž™αž‚αŸ’αžšαŸ„αž„αž“αžΉαž„αž’αž—αž·αžœαžŒαŸ’αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αž“αŸαŸ‡αŸ” αž™αžΎαž„αžšαŸ†αž–αžΉαž„αžαžΆαž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αž™αžΎαž„αž“αžΉαž„αž’αžΆαž…αžŸαž“αŸ’αžŸαŸ†αžŸαŸ†αž…αŸƒαž–αŸαž›αžœαŸαž›αžΆ αž“αž·αž„αž€αžΆαžšαžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž›αžΎαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠ αž“αž·αž„αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŠαŸ„αž™αž€αžΆαžšαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αž€αžαŸ’αžαžΆαž˜αž“αž»αžŸαŸ’αžŸαŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžšαž€αžƒαžΎαž‰αž…αŸ†αžŽαž»αž…αžαŸ’αžœαŸ‡αžαžΆαžαž“αŸƒαžœαŸαž‘αž·αž€αžΆ αž¬αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž™αžΎαž„αž“αžΉαž„αž‡αžΏαž‡αžΆαž€αŸ‹αž˜αŸ’αžαž„αž‘αŸ€αžαžαžΆ αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžšαžΏαž„αžŠαŸαžαŸ’αžšαž‡αžΆαž€αŸ‹αž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αŸ’αž“αž€αžŸαŸ’αž‚αžΆαž›αŸ‹αž‚αŸ’αž“αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž SonarQube αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αžŸαŸ†αžŽαž½αžšαžŸαžΌαž˜αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡ αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžαŸ’αž˜αžΈ αž™αžΎαž„αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž€αŸ†αžŽαžαŸ‹αž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αžŸαžšαžŸαŸαžšαž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ‚αž”αž“αŸαŸ‡αŸ”

αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž’αžαŸ’αžαž”αž‘αŸ– αž’αžΆαžαžΆαž“αžΈ

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹