defect: may match the wrong result
error_id="build-pkg.pixz.c:warning:'subsuf'defined-but-not-used[-Wunused-function]" filename="pixz.c"
correct result: gcc -DHAVE_CONFIG_H -I. -I.. -D_FORTIFY_SOURCE=2 -pthread -Wall -Wno-unknown-pragmas -march=native -O2 -pipe -fstack-protector-strong -fno-plt -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -MT pixz-pixz.o -MD -MP -MF .deps/pixz-pixz.Tpo -c -o pixz-pixz.o `test -f 'pixz.c' || echo './'`pixz.c ^^^^^^
wrong result: mv -f .deps/pixz.cpu.Tpo .deps/pixz.cpu.Po ^^^^^^
Signed-off-by: Lin Jiaxin ljx.joe@qq.com --- lib/compare_error_messages.rb | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
diff --git a/lib/compare_error_messages.rb b/lib/compare_error_messages.rb index 0b51fc3..a959c61 100644 --- a/lib/compare_error_messages.rb +++ b/lib/compare_error_messages.rb @@ -8,6 +8,39 @@ require_relative 'es_query' require_relative 'error_messages' require_relative "#{ENV['LKP_SRC']}/lib/common"
+# previous_job_id's error_ids include error_id +# If later_job_id's output include error filename that extract from error_id, +# the later_job_id is credible. +def credible?(previous_job_id, later_job_id, error_id) + es = ESQuery.new + + previous_result_file = File.join('/srv', es.query_by_id(previous_job_id)['result_root'], 'build-pkg') + later_result_file = File.join('/srv', es.query_by_id(later_job_id)['result_root'], 'build-pkg') + + return false if filenames_check(previous_result_file, later_result_file, error_id).value?(false) + + return true +end + +def filenames_check(previous_result_file, later_result_file, error_id) + filenames = [] + filenames_check = Hash.new { |h, k| h[k] = false } + + error_lines = ErrorMessages.new(previous_result_file).obtain_error_messages_by_error_id(error_id, true) + error_lines.each do |error_line| + filenames << $1 if error_line =~ /(.*)(:.*){2}: (error|warning):/ + end + + File.open(later_result_file).each_line do |line| + filenames.each do |filename| + filenames_check[filename] + filenames_check[filename] = true if line.include?(filename) + end + end + + return filenames_check +end + def get_compare_result(previous_job_id, later_job_id) es = ESQuery.new
+# the later_job_id is credible. +def credible?(previous_job_id, later_job_id, error_id)
- es = ESQuery.new
- previous_result_file = File.join('/srv', es.query_by_id(previous_job_id)['result_root'], 'build-pkg')
- later_result_file = File.join('/srv', es.query_by_id(later_job_id)['result_root'], 'build-pkg')
- return false if filenames_check(previous_result_file, later_result_file, error_id).value?(false)
- return true
+end
+def filenames_check(previous_result_file, later_result_file, error_id)
- filenames = []
- filenames_check = Hash.new { |h, k| h[k] = false }
- error_lines = ErrorMessages.new(previous_result_file).obtain_error_messages_by_error_id(error_id, true)
- error_lines.each do |error_line|
- filenames << $1 if error_line =~ /(.*)(:.*){2}: (error|warning):/
- end
- File.open(later_result_file).each_line do |line|
- filenames.each do |filename|
filenames_check[filename]
what is this line for? extral line?
Thanks, Luan Shengde
filenames_check[filename] = true if line.include?(filename)
- end
- end
- return filenames_check
+end
def get_compare_result(previous_job_id, later_job_id) es = ESQuery.new
-- 2.23.0