|
公司基本資料信息
|
|||||||||||||||||||||||||
SonarSource簡介
商務(wù)友好的許可、開放的代碼庫和活躍的社區(qū)只是 SonarSource 生態(tài)系統(tǒng)的一些優(yōu)勢。意義和承諾
簡短的答案是一個字: LGPL!這是我們從項目開始時選擇的許可證, 而不是普通的 GPL 許可證。為什么?因為我們相信, 使 SonarQube 和 SonarLint 偉大的產(chǎn)品與高采用, 我們需要一個許可證, 既符合社區(qū)和商業(yè)的需要。有了這個選擇, 并在平臺上保持其領(lǐng)導(dǎo)地位, SonarSource 因此承諾將繼續(xù)對其產(chǎn)品進行投資。意義和承諾開芯原理原則,開放式核心
較長的答案是指由這四原則支持的開放核心的想法:您提供給用戶的開源產(chǎn)品一定很棒。您提供的開源產(chǎn)品應(yīng)該經(jīng)過一個不敬虔的測試和 QA 的數(shù)量。您提供的開源產(chǎn)品應(yīng)該是架構(gòu), 使所有的商業(yè)功能都 plug-ins 到開放的核心。您銷售的開源產(chǎn)品應(yīng)該有完全開放的定價。用戶社會
像任何好的開源項目一樣, SonarQube 和 SonarLint 在他們周圍有活躍的社區(qū)。這些社區(qū)在候選發(fā)布者的測試階段提供了廣泛的反饋。它們還提供了有效的 bug 報告和社區(qū)支持, 但用戶也可以選擇直接從 SonarSource 購買額外的支持和產(chǎn)品。用戶社區(qū)供應(yīng)商鎖定減少供應(yīng)商鎖定
雖然 SonarSource 是其產(chǎn)品的主要貢獻者, 但用戶可以訪問源代碼, 因此, 如果出現(xiàn)問題, 他們就能繼續(xù)開發(fā)產(chǎn)品。











SonarSource簡介
在它們存在之前修復(fù)代碼質(zhì)量問題!IDE SonarLint即時視圖
打開文件時, 標記會自動出現(xiàn)在質(zhì)量問題上。SonarLint 突出顯示了打開文件上的標記的代碼問題。它還為 IDE 中的選定組件提供問題匯總表, 包括問題的創(chuàng)建時間。即時視圖關(guān)于飛檢飛檢測
在鍵入代碼時出現(xiàn)問題。SonarLint 提供了在代碼中查看問題的能力, 如文本的拼寫檢查器。這是通過巧妙地指出問題而不分散開發(fā)人員的注意力來完成的, 這樣他就可以專注于代碼, 但仍然會收到問題的通知。智能教育
錯誤描述與問題檢測一起出現(xiàn)。一旦 SonarLint 檢測到一個問題, 它還會顯示相關(guān)的文檔, 以幫助開發(fā)人員了解問題以及為什么它是一個問題。它提供了一個兼容的和不兼容的代碼示例, 并演示如何解決示例問題。簡單, 強大和有趣的使用: 一個很好的方式讓開發(fā)者學(xué)習(xí)。








SonarSource
代碼質(zhì)量是一個不斷增長的市場, 它是分析師對其大規(guī)模采用和大量投資回報的雷達。
介紹麥凱布的圈復(fù)雜度長期以來一直是事實上的標準測量方法的控制流的復(fù)雜性。它初的目的是 "確定軟件模塊將很難測試或維護 "[1], 但當它準確地計算xiao的測試用例需要完全覆蓋的方法, 它不是一個令人滿意的測量理解。這是因為具有相等圈復(fù)雜度的方法不一定存在同樣的困難, 維護, 導(dǎo)致一種感覺,測量 "啼狼" 由 over-valuing 一些結(jié)構(gòu), 而 under-valuing 其他構(gòu)造.同時, 圈復(fù)雜度不再是全mian的。制定的Fortran 環(huán)境在 1976年, 它不包括現(xiàn)代語言結(jié)構(gòu), 如嘗試/捕zhuo,和 lambda。后, 因為每個方法都有一個xiao的圈復(fù)雜度得分, 它是不可能知道任何具有高聚合圈復(fù)雜度的給定類是否一個大的、易于維護的域類, 或一個具有復(fù)雜控制流的小類。在類級別之外, 人們普遍承認, 圈復(fù)雜度的分數(shù)應(yīng)用程序與它們的代碼總計行相關(guān)聯(lián)。換言之, 圈復(fù)雜度是在方法級別上很少使用。作為對這些問題的一種補救, 認知復(fù)雜性已經(jīng)被制定來解決現(xiàn)代語言結(jié)構(gòu), 并產(chǎn)生的價值是有意義的類和應(yīng)用程序級別。更重要的是, 它背離了基于數(shù)學(xué)模型, 使其能夠產(chǎn)生控制流的評估, 對應(yīng)于程序員的直覺的精神, 或認知的努力, 需要了解這些流動.





SonarQube中的舊版代碼
雖然我不相信將數(shù)字放在源代碼質(zhì)量上,SonarQube(以前稱為Sonar)在開發(fā)過程中可能是一個非常有用的工具。它對您的團隊執(zhí)行一致的風格,已經(jīng)發(fā)現(xiàn)了幾個可能的錯誤,并且是一個很好的工具:您可以瀏覽違規(guī)行為,看看為什么某個表達式或代碼塊可能是一個問題。
為了確保您的代碼庫保持一致狀態(tài),您還可以直接執(zhí)行代碼開發(fā)者檢入的任何違規(guī)行為。其中一個問題是很多項目不是綠色項目你有很多現(xiàn)有的代碼。如果您的違規(guī)號碼已經(jīng)很高,很難判斷是否引入了新的違規(guī)行為。
在這篇文章中,我將向您展示如何從現(xiàn)有代碼的零違反行為開始,而不用觸摸來源,Jens Schauder在他的偉大演講中使用Legacy Teams的靈感來啟發(fā)它。我們將根據(jù)文件中的行忽略所有違規(guī)行為,因此如果有人觸及該違規(guī)行為將再次顯示的文件,開發(fā)人員將負責修復(fù)舊版違規(guī)行為。
關(guān)閉違規(guī)插件
我們正在使用SonarQube的關(guān)閉違規(guī)插件。可以為問題配置不同的排除模式。您可以為代碼塊定義正則表達式,這些代碼塊應(yīng)該被忽略,或者在所有文件或行基礎(chǔ)上停用違規(guī)。
對于現(xiàn)有代碼,您想忽略某些文件和行的所有違規(guī)。這可以通過在文本區(qū)域中插入這樣的方式來完成排除模式:
de.fhopf.a的.IndexingActor; PMD:SignatureDeclareThrowsException; [23]
這將排除在IndexingActor類的第23行中拋出原始異常的違規(guī)。再次分析代碼時,這種違規(guī)將被忽略。
通過API檢索違規(guī)
除了漂亮的儀表板之外,SonarQube還提供了一個可用于檢索項目違規(guī)的API。如果您不希望查找代碼庫中的所有現(xiàn)有違規(guī)行為,并手動插入,您可以使用它自動生成排除模式。所有這些違規(guī)都可以在/ api /違規(guī)找到,例如HTTP://本地主機:9000 / API /違例。
我確定還有其他方法可以做,但是我使用jsawk來解析JSON響應(yīng)(在Ubuntu上,你必須安裝Spidermonkey而不是默認的js解釋器。你必須自己編譯,而且我必須使用一個特定的版本。嘆了口氣)。



