У меня есть sonarqube 4.5.4 с установленным плагином С#, и он не может анализировать файлы в кодировке BOM UTF-8.
[15:08:01][Step 1/8] 16:07:06.847 ERROR - Unable to parse file: E:\BuildAgent\work\daac5e6d39eee3cb\Source\GraphVizGraph.cs
[15:08:01][Step 1/8] 16:07:06.847 ERROR - Parse error at line 1 column 0:
[15:08:01][Step 1/8]
[15:08:01][Step 1/8] --> п»їusing System;
У кого-нибудь была эта проблема?
Мне пришлось пройти через мои файлы и изменить их кодировку с utf-8 без bom, используя Notepad++. Меню "Кодирование" в строке меню вверху даст возможность сделать это.
Когда мы используем Teamcity, мы обнаружили скрипт python, который удаляет BOM из файлов. Мы запускаем этот скрипт после проверки и перед шагами сонара. Он удаляет бомбу из файлов и работает сонар.
import os, re, sys
"""
UTF-BOM Remover
Usage: python bom.py [dir]
"""
bom = r"^\xEF\xBB\xBF"
pattern = r"^(.*)\.(php|js|css|txt|inc|conf|tpl|html|htm|cs|cpp|h|c|cxx)$"
cleaned_files = total_files = 0
if len(sys.argv) == 2:
rundir = sys.argv[1]
else:
rundir = '.'
if os.path.isdir(rundir):
for root, dirs, files in os.walk(rundir):
for name in files:
if re.match(pattern, name):
filename = os.path.abspath(os.path.join(root, name))
buffer = open(filename, 'rb').read()
file = re.search(bom, buffer)
if file:
print "Remove BOM-marker from %s" % name
cleaned_files+= 1
open(filename, 'wb').write(buffer[:file.start()] + buffer[file.end():])
total_files+= len(files)
print "There are was %d files with BOM in %d files" % (cleaned_files, total_files)
else:
print "Error: You must set a valid directory."