sonarqube平臺最新踩坑整理

一.run-sonar-swift腳本

sonar-swift官方提供了一個專門用于代碼掃描的腳本在旱,無需我們自己去編寫腳本處理編譯工程,輸出編譯log文件等操作规丽,??傳送門
這個腳本需要搭配sonar-prooject.properties文件來使用。先看一下腳本關鍵內容第队;

vflag=""
nflag=""
unittests=""
swiftlint="on"
tailor="on"
lizard="on"
oclint=""
infer="on"
fauxpas=""
sonarscanner=""
sonarurl="http://localhost:9000"
sonarlogin="admin"
sonarpassword="123456"

這一部份是指你需要哪些插件參與掃描過程,如果有需要就賦值為on刨秆,前提是你有安裝這些插件凳谦,其次就是你需要上傳的地址以及登錄信息。

# Source directories for .swift files
srcDirs=''; readParameter srcDirs 'sonar.sources'
# The name of your application scheme in Xcode
appScheme=''; readParameter appScheme 'sonar.swift.appScheme'
# The app configuration to use for the build
appConfiguration=''; readParameter appConfiguration 'sonar.swift.appConfiguration'
# The name of your test scheme in Xcode
testScheme=''; readParameter testScheme 'sonar.swift.testScheme'
# The name of your other binary files (frameworks)
binaryNames=''; readParameter binaryNames 'sonar.coverage.binaryNames'
# Get the path of plist file
plistFile=`xcodebuild -showBuildSettings -project "${projectFile}" | grep -i 'PRODUCT_SETTINGS_PATH' -m 1 | sed 's/[ ]*PRODUCT_SETTINGS_PATH = //'`
# Number version from plist if no sonar.projectVersion
numVersionFromPlist=`defaults read "${plistFile}" CFBundleShortVersionString`

# Read destination simulator
destinationSimulator=''; readParameter destinationSimulator 'sonar.swift.simulator'

# Read tailor configuration
tailorConfiguration=''; readParameter tailorConfiguration 'sonar.swift.tailor.config'

# The file patterns to exclude from coverage report
excludedPathsFromCoverage=''; readParameter excludedPathsFromCoverage 'sonar.swift.excludedPathsFromCoverage'

# Skipping tests
skipTests=''; readParameter skipTests 'sonar.swift.skipTests'

這一部份是你的項目工程信息衡未,比如你要檢測的文件夾srcDirs尸执,項目的SchemeappScheme等內容家凯,你可以選擇直接填在腳本文件中,也可以填在sonar-prooject.properties里面如失,注意看readParameter srcDirs 'sonar.sources'這一句绊诲,它的意思就是如果這里沒填寫,就會讀取sonar-prooject.properties文件中的sonar.sources字段褪贵。

以下是sonar-prooject.properties中必填的幾個選項

sonar.swift.project=TestDemo.xcodeproj
sonar.swift.workspace=TestDemo.xcworkspace
sonar.swift.appScheme=TestDemo

sonar.projectKey=TestDemo //用于sonar平臺獲取項目的key
sonar.projectName=TestDemo //用于sonar平臺展示項目名稱
sonar.sourceEncoding=UTF-8 
sonar.language=swift,objc
sonar.sources=ComponentModules
sonar.projectVersion=1.0.2

如果你的sonar-prooject.properties文件中已經填寫了這些內容掂之,就無需在run-sonar-swift腳本中進行改動。

繼續(xù)看run-sonar-swift腳本脆丁;

# Objective-C code detection
hasObjC="yes"
compileCmdFile=compile_commands.json
minimumSize=3
actualSize=$(stat -f%z "$compileCmdFile")
if [ $actualSize -ge $minimumSize ]; then
    hasObjC="yes"
fi

如果你的項目是混編世舰,一定要在這個地方進行設置,不然就會跳過后續(xù)的oc代碼檢測槽卫。OCLint跟压,F(xiàn)auxPas這兩個插件是專門檢測OC代碼的,如果這個地方不設置為yes便會跳過晒夹。

二.坑人的-ivfsstatcache

如果你突然發(fā)現(xiàn)此前跑的好好的OCLint裆馒,infer等插件突然不好好工作了,這個就是罪魁禍首丐怯,因為clang編譯器現(xiàn)在輸出的文件會新增一個-ivfsstatcache字段喷好,這些通過compile_commands.json文件來分析語法問題的插件就會無法識別,這是一個神坑读跷,查了好久資料才找到解決辦法梗搅,使用腳本刪除所有這個字段對應的key-value即可。

sed 's/-ivfsstatcache [^ ]*//g' < compile_commands.json > icompile_commands.json
mv icompile_commands.json compile_commands.json

三.拉取sonar平臺的數(shù)據(jù)

sonar平臺提供了對外的api接口效览,但是無法通過token進行數(shù)據(jù)的拉取无切,即使填對了token也不行,因為提交token的時候需要進行處理丐枉,需要將token后面加一個:哆键,然后整體進行base64編碼,得出結果再在前面加一個basic才可以瘦锹,例子如下:

curl -G -H'Authorization:basic 你的token+:然后再進行base64編碼' http://localhost:9000/api/measures/component\?component\=TestDemo\&metricKeys\=ncloc

這樣才能正常的進行數(shù)據(jù)拉取籍嘹。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弯院,隨后出現(xiàn)的幾起案子辱士,更是在濱河造成了極大的恐慌正塌,老刑警劉巖仇哆,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異返敬,居然都是意外死亡椅挣,警方通過查閱死者的電腦和手機头岔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門塔拳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人峡竣,你說我怎么就攤上這事蝙斜。” “怎么了澎胡?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵孕荠,是天一觀的道長。 經常有香客問我攻谁,道長稚伍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任戚宦,我火速辦了婚禮个曙,結果婚禮上,老公的妹妹穿的比我還像新娘受楼。我一直安慰自己垦搬,他們只是感情好,可當我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布艳汽。 她就那樣靜靜地躺著猴贰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪河狐。 梳的紋絲不亂的頭發(fā)上米绕,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機與錄音馋艺,去河邊找鬼栅干。 笑死,一個胖子當著我的面吹牛捐祠,可吹牛的內容都是我干的碱鳞。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼踱蛀,長吁一口氣:“原來是場噩夢啊……” “哼窿给!你這毒婦竟也來了?” 一聲冷哼從身側響起星岗,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤填大,失蹤者是張志新(化名)和其女友劉穎戒洼,沒想到半個月后俏橘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡圈浇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年寥掐,在試婚紗的時候發(fā)現(xiàn)自己被綠了靴寂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡召耘,死狀恐怖百炬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情污它,我是刑警寧澤剖踊,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站衫贬,受9級特大地震影響德澈,放射性物質發(fā)生泄漏。R本人自食惡果不足惜固惯,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一梆造、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧葬毫,春花似錦镇辉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烂斋,卻和暖如春麻裁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背源祈。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工煎源, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人香缺。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓手销,卻偏偏與公主長得像,于是被迫代替她去往敵國和親图张。 傳聞我的和親對象是個殘疾皇子锋拖,可洞房花燭夜當晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內容