From 62bc3a2464d39c9cdfcc4a893e5b16050103103a Mon Sep 17 00:00:00 2001 From: 40huo Date: Wed, 6 Sep 2017 15:00:09 +0800 Subject: [PATCH 1/8] fix #552 --- cobra/api.py | 3 --- cobra/export.py | 2 +- cobra/templates/asset/js/report.js | 6 +++--- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/cobra/api.py b/cobra/api.py index d021cb29..e7c50179 100644 --- a/cobra/api.py +++ b/cobra/api.py @@ -312,7 +312,6 @@ def summary(): key=key) status_url = 'http://{host}:{port}/api/status'.format(host=running_host, port=running_port) - logger.critical(status_url) post_data = { 'key': key, 'sid': a_sid, @@ -340,7 +339,6 @@ def summary(): elif len(split_target) == 2: target, branch = target_str, 'master' else: - logger.critical('[API] Target url exception: {u}'.format(u=target_str)) target, branch = target_str, 'master' still_running[s_sid] = {'target': target, 'branch': branch} @@ -373,7 +371,6 @@ def summary(): elif len(split_target) == 2: target, branch = target_str, 'master' else: - logger.critical('Target url exception: {u}'.format(u=target_str)) target, branch = target_str, 'master' target_info.update({ diff --git a/cobra/export.py b/cobra/export.py index 2e7adc91..b619bfaf 100644 --- a/cobra/export.py +++ b/cobra/export.py @@ -14,7 +14,7 @@ import csv import json import os -from codecs import open,BOM_UTF8 +from codecs import open, BOM_UTF8 from prettytable import PrettyTable diff --git a/cobra/templates/asset/js/report.js b/cobra/templates/asset/js/report.js index e8522e64..a05f9718 100644 --- a/cobra/templates/asset/js/report.js +++ b/cobra/templates/asset/js/report.js @@ -108,7 +108,7 @@ $(function () { $('.commit-author').text('@' + data.commit_author); $('.commit-time').text('@' + data.commit_time); $('.v-level').text(score2level[data.level]); - $('.v-type').text(data.rule_name); + $('.v-type').text('CVI-' + data.id + ' ' + data.rule_name); $('.v-solution').text(data.solution); // $('.v-rule').text(data.match_result); } @@ -341,8 +341,8 @@ $(function () { ' data-start="1" data-line="1">' + 'MVE-' + (i + 1) + '
' + list[i].file_path + line + '
' + '' + - '' + - ' => ' + list[i].commit_time + + '' + 'CVI-' + list[i].id + + ' => ' + list[i].rule_name + '' + '' + ''; From a46c8557cbc912478061b4ee5979a2823dcf9a19 Mon Sep 17 00:00:00 2001 From: PSoul Date: Wed, 6 Sep 2017 16:44:00 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=8F=AF=E5=9C=A8=E5=89=8D=E7=AB=AF=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E6=96=87=E4=BB=B6=E5=90=8E=E7=BC=80=EF=BC=8C=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E4=B8=8A=E4=BC=A0=E9=AA=8C=E8=AF=81=E5=BE=85=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../asset/js/jquery.fileupload-process.js | 178 ++++++++++++++++++ .../asset/js/jquery.fileupload-validate.js | 125 ++++++++++++ cobra/templates/index.html | 6 + 3 files changed, 309 insertions(+) create mode 100644 cobra/templates/asset/js/jquery.fileupload-process.js create mode 100644 cobra/templates/asset/js/jquery.fileupload-validate.js diff --git a/cobra/templates/asset/js/jquery.fileupload-process.js b/cobra/templates/asset/js/jquery.fileupload-process.js new file mode 100644 index 00000000..dbe12c1c --- /dev/null +++ b/cobra/templates/asset/js/jquery.fileupload-process.js @@ -0,0 +1,178 @@ +/* + * jQuery File Upload Processing Plugin + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2012, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + */ + +/* jshint nomen:false */ +/* global define, require, window */ + +;(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + './jquery.fileupload' + ], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS: + factory( + require('jquery'), + require('./jquery.fileupload') + ); + } else { + // Browser globals: + factory( + window.jQuery + ); + } +}(function ($) { + 'use strict'; + + var originalAdd = $.blueimp.fileupload.prototype.options.add; + + // The File Upload Processing plugin extends the fileupload widget + // with file processing functionality: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + // The list of processing actions: + processQueue: [ + /* + { + action: 'log', + type: 'debug' + } + */ + ], + add: function (e, data) { + var $this = $(this); + data.process(function () { + return $this.fileupload('process', data); + }); + originalAdd.call(this, e, data); + } + }, + + processActions: { + /* + log: function (data, options) { + console[options.type]( + 'Processing "' + data.files[data.index].name + '"' + ); + } + */ + }, + + _processFile: function (data, originalData) { + var that = this, + dfd = $.Deferred().resolveWith(that, [data]), + chain = dfd.promise(); + this._trigger('process', null, data); + $.each(data.processQueue, function (i, settings) { + var func = function (data) { + if (originalData.errorThrown) { + return $.Deferred() + .rejectWith(that, [originalData]).promise(); + } + return that.processActions[settings.action].call( + that, + data, + settings + ); + }; + chain = chain.then(func, settings.always && func); + }); + chain + .done(function () { + that._trigger('processdone', null, data); + that._trigger('processalways', null, data); + }) + .fail(function () { + that._trigger('processfail', null, data); + that._trigger('processalways', null, data); + }); + return chain; + }, + + // Replaces the settings of each processQueue item that + // are strings starting with an "@", using the remaining + // substring as key for the option map, + // e.g. "@autoUpload" is replaced with options.autoUpload: + _transformProcessQueue: function (options) { + var processQueue = []; + $.each(options.processQueue, function () { + var settings = {}, + action = this.action, + prefix = this.prefix === true ? action : this.prefix; + $.each(this, function (key, value) { + if ($.type(value) === 'string' && + value.charAt(0) === '@') { + settings[key] = options[ + value.slice(1) || (prefix ? prefix + + key.charAt(0).toUpperCase() + key.slice(1) : key) + ]; + } else { + settings[key] = value; + } + + }); + processQueue.push(settings); + }); + options.processQueue = processQueue; + }, + + // Returns the number of files currently in the processsing queue: + processing: function () { + return this._processing; + }, + + // Processes the files given as files property of the data parameter, + // returns a Promise object that allows to bind callbacks: + process: function (data) { + var that = this, + options = $.extend({}, this.options, data); + if (options.processQueue && options.processQueue.length) { + this._transformProcessQueue(options); + if (this._processing === 0) { + this._trigger('processstart'); + } + $.each(data.files, function (index) { + var opts = index ? $.extend({}, options) : options, + func = function () { + if (data.errorThrown) { + return $.Deferred() + .rejectWith(that, [data]).promise(); + } + return that._processFile(opts, data); + }; + opts.index = index; + that._processing += 1; + that._processingQueue = that._processingQueue.then(func, func) + .always(function () { + that._processing -= 1; + if (that._processing === 0) { + that._trigger('processstop'); + } + }); + }); + } + return this._processingQueue; + }, + + _create: function () { + this._super(); + this._processing = 0; + this._processingQueue = $.Deferred().resolveWith(this) + .promise(); + } + + }); + +})); \ No newline at end of file diff --git a/cobra/templates/asset/js/jquery.fileupload-validate.js b/cobra/templates/asset/js/jquery.fileupload-validate.js new file mode 100644 index 00000000..8e130bda --- /dev/null +++ b/cobra/templates/asset/js/jquery.fileupload-validate.js @@ -0,0 +1,125 @@ +/* + * jQuery File Upload Validation Plugin + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + */ + +/* global define, require, window */ + +;(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + './jquery.fileupload-process' + ], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS: + factory( + require('jquery'), + require('./jquery.fileupload-process') + ); + } else { + // Browser globals: + factory( + window.jQuery + ); + } +}(function ($) { + 'use strict'; + + // Append to the default processQueue: + $.blueimp.fileupload.prototype.options.processQueue.push( + { + action: 'validate', + // Always trigger this action, + // even if the previous action was rejected: + always: true, + // Options taken from the global options map: + acceptFileTypes: '@', + maxFileSize: '@', + minFileSize: '@', + maxNumberOfFiles: '@', + disabled: '@disableValidation' + } + ); + + // The File Upload Validation plugin extends the fileupload widget + // with file validation functionality: + $.widget('blueimp.fileupload', $.blueimp.fileupload, { + + options: { + /* + // The regular expression for allowed file types, matches + // against either file type or file name: + acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, + // The maximum allowed file size in bytes: + maxFileSize: 10000000, // 10 MB + // The minimum allowed file size in bytes: + minFileSize: undefined, // No minimal file size + // The limit of files to be uploaded: + maxNumberOfFiles: 10, + */ + + // Function returning the current number of files, + // has to be overriden for maxNumberOfFiles validation: + getNumberOfFiles: $.noop, + + // Error and info messages: + messages: { + maxNumberOfFiles: 'Maximum number of files exceeded', + acceptFileTypes: 'File type not allowed', + maxFileSize: 'File is too large', + minFileSize: 'File is too small' + } + }, + + processActions: { + + validate: function (data, options) { + if (options.disabled) { + return data; + } + var dfd = $.Deferred(), + settings = this.options, + file = data.files[data.index], + fileSize; + if (options.minFileSize || options.maxFileSize) { + fileSize = file.size; + } + if ($.type(options.maxNumberOfFiles) === 'number' && + (settings.getNumberOfFiles() || 0) + data.files.length > + options.maxNumberOfFiles) { + file.error = settings.i18n('maxNumberOfFiles'); + } else if (options.acceptFileTypes && + !(options.acceptFileTypes.test(file.type) || + options.acceptFileTypes.test(file.name))) { + file.error = settings.i18n('acceptFileTypes'); + } else if (fileSize > options.maxFileSize) { + file.error = settings.i18n('maxFileSize'); + } else if ($.type(fileSize) === 'number' && + fileSize < options.minFileSize) { + file.error = settings.i18n('minFileSize'); + } else { + delete file.error; + } + if (file.error || data.files.error) { + data.files.error = true; + dfd.rejectWith(this, [data]); + } else { + dfd.resolveWith(this, [data]); + } + return dfd.promise(); + } + + } + + }); + +})); \ No newline at end of file diff --git a/cobra/templates/index.html b/cobra/templates/index.html index 721d7993..ad5f1989 100644 --- a/cobra/templates/index.html +++ b/cobra/templates/index.html @@ -125,6 +125,8 @@

Drag and drop upload

+ +