From 0c25e3b13d8026f8179e025ca66ee7dde3377cbf Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 13 Jun 2016 15:21:29 +0800 Subject: [PATCH 01/75] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E5=88=86=E6=9E=90=20ssh=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 + app/controllers/repositories_controller.rb | 44 ++++++++++++++++++- .../repositories/quality_analyses.html.erb | 1 + app/views/repositories/show.html.erb | 1 + config/routes.rb | 2 + 5 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 app/views/repositories/quality_analyses.html.erb diff --git a/Gemfile b/Gemfile index d392c6561..789c2011e 100644 --- a/Gemfile +++ b/Gemfile @@ -6,6 +6,8 @@ unless RUBY_PLATFORM =~ /w32/ gem 'iconv' end +gem 'net-ssh' + gem 'certified' gem 'wechat',path: 'lib/wechat' diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 857f98afc..b2bf7b42d 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -30,11 +30,11 @@ class RepositoriesController < ApplicationController menu_item :settings, :only => [:new, :create, :edit, :update, :destroy, :committers] default_search_scope :changesets - before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo, :stats] + before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo, :stats, :quality_analyses] before_filter :find_repository, :only => [:edit, :update, :destroy, :committers] before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked, :project_archive] before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] - before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff, :project_archive] + before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff, :project_archive, :quality_analyses] accept_rss_auth :revisions # hidden repositories filter // 隐藏代码过滤器 before_filter :check_hidden_repo, :only => [:show, :stats, :revisions, :revision, :diff ] @@ -43,6 +43,7 @@ class RepositoriesController < ApplicationController helper :project_score #@root_path = RepositoriesHelper::ROOT_PATH $g=Gitlab.client + require 'net/ssh' rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed def new @@ -306,6 +307,27 @@ update end end + def quality_analyses + host = "192.168.0.200" + port = "1125" + username = "git" + password = "123123" + ##显示文件和系统版本 + server_cmd1 = 'll' + server_cmd2 = 'cat /etc/issue' + # 连接到远程主机 foobar + ssh = Net::SSH.start(host, username, :port => port, :password => password) do |ssh| + result = ssh.exec!(server_cmd1) + logger.error("#################") + puts result + result = ssh.exec!(server_cmd2) + puts result + end + respond_to do |format| + format.html + end + end + def destroy DestroyRepositoryTask.new.destroy(User.current.id, @repository.id) @repository.hidden = true @@ -557,6 +579,24 @@ update render 404 return end + host = "http://192.168.0.200:8893" + username = "git" + password = "123123" + +##显示文件和系统版本 + server_cmd1 = 'ls -l' + server_cmd2 = 'cat /etc/issue' + + +# 连接到远程主机 foobar + ssh = Net::SSH.start(host, username, :password => password) do |ssh| + result = ssh.exec!(server_cmd1) + puts result + result = ssh.exec!(server_cmd2) + puts result + end + + project_id = @project.gpid # @repository_id = @repository.identifier # creator = params[:creator] diff --git a/app/views/repositories/quality_analyses.html.erb b/app/views/repositories/quality_analyses.html.erb new file mode 100644 index 000000000..30d74d258 --- /dev/null +++ b/app/views/repositories/quality_analyses.html.erb @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index 43be57760..bbcb48bdf 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -2,6 +2,7 @@

<%= render :partial => 'breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>

ZIP下载 + <%= link_to "质量分析", quality_analyses_path(:id => @project.id, :repository_id => @repository.identifier) %>
diff --git a/config/routes.rb b/config/routes.rb index e4b462d93..438925878 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -902,6 +902,7 @@ RedmineApp::Application.routes.draw do # repositories routes get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats', :as => "stats_repository_project" + get 'projects/:id/repository/:repository_id/quality_analyses', :to => 'repositories#quality_analyses', :as => "quality_analyses" get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph' get 'projects/:id/repository/:repository_id/changes(/*path(.:ext))', :to => 'repositories#changes' @@ -920,6 +921,7 @@ RedmineApp::Application.routes.draw do } get 'projects/:id/repository/statistics', :to => 'repositories#stats' + get 'projects/:id/repository/graph', :to => 'repositories#graph' get 'projects/:id/repository/changes(/*path(.:ext))', :to => 'repositories#changes' From 9029fd91e0148cf8f1edd13929836d01556c96c2 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 14 Jun 2016 09:57:29 +0800 Subject: [PATCH 02/75] =?UTF-8?q?rails=20=E4=BB=A3=E7=A0=81=E4=B8=AD?= =?UTF-8?q?=E8=B0=83=E7=94=A8shell=E5=91=BD=E4=BB=A4=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 36 +++++++--------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index b2bf7b42d..555b46051 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -313,18 +313,22 @@ update username = "git" password = "123123" ##显示文件和系统版本 - server_cmd1 = 'll' - server_cmd2 = 'cat /etc/issue' + user_name = User.find(@project.user_id).try(:login) + rep_name = params[:repository_id] + server_cmd1 = "sh gitclone.sh" + " " + user_name + " " + rep_name # 连接到远程主机 foobar ssh = Net::SSH.start(host, username, :port => port, :password => password) do |ssh| result = ssh.exec!(server_cmd1) - logger.error("#################") - puts result - result = ssh.exec!(server_cmd2) - puts result + path = "/home/git/repo/" + user_name + "/" + rep_name + # sonar 分析 + # server_cmd2 + # 删除clone的版本库 + # server_cmd3 end respond_to do |format| - format.html + format.html{ + render :layout => "base_projects" + } end end @@ -579,24 +583,6 @@ update render 404 return end - host = "http://192.168.0.200:8893" - username = "git" - password = "123123" - -##显示文件和系统版本 - server_cmd1 = 'ls -l' - server_cmd2 = 'cat /etc/issue' - - -# 连接到远程主机 foobar - ssh = Net::SSH.start(host, username, :password => password) do |ssh| - result = ssh.exec!(server_cmd1) - puts result - result = ssh.exec!(server_cmd2) - puts result - end - - project_id = @project.gpid # @repository_id = @repository.identifier # creator = params[:creator] From c6bd5e6d311c5626975dcdd75d2f4a31e8a90553 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 14 Jun 2016 09:57:53 +0800 Subject: [PATCH 03/75] =?UTF-8?q?=E9=A5=BC=E7=8A=B6=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repositories/quality_analyses.html.erb | 77 ++++++++++++++++++- config/locales/en.yml | 1 + config/locales/zh.yml | 1 + 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/app/views/repositories/quality_analyses.html.erb b/app/views/repositories/quality_analyses.html.erb index 30d74d258..69dae2629 100644 --- a/app/views/repositories/quality_analyses.html.erb +++ b/app/views/repositories/quality_analyses.html.erb @@ -1 +1,76 @@ -test \ No newline at end of file +<%= javascript_include_tag 'highcharts','highcharts-more' %> +
+

<%= l(:label_quality_analyses) %>

+
+ +
+ <%#= render :partial => 'navigation' %> +
+
+ +
+
+
+
+ + + +

<%= link_to l(:button_back), :action => 'show', :id => @project %>

+<% html_title(l(:label_repository), l(:label_statistics)) -%> \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 033f12ad2..98d02cdb6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -602,6 +602,7 @@ en: label_time_tracking: Time tracking label_change_plural: Changes label_statistics: Statistics + label_quality_analyses: Quality Analyses label_commits_per_month: Commits per month label_commits_per_author: Commits per author label_diff: diff diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 94be8af6d..4c0f531a5 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -732,6 +732,7 @@ zh: label_time_tracking: 时间跟踪 label_change_plural: 变更 label_statistics: 统计 + label_quality_analyses: 质量分析 label_commits_per_month: 每月提交次数 label_commits_per_author: 每用户提交次数 From d21df48961a15f8ffa412c1b543dc4d76c542c29 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 14 Jun 2016 14:10:33 +0800 Subject: [PATCH 04/75] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E5=88=86=E6=9E=90=E5=BC=B9=E6=A1=86=E5=8F=8A=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BC=A0=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 8 +++++--- app/views/repositories/_quality_analyses.html.erb | 5 +++++ app/views/repositories/quality_analyses.js.erb | 8 ++++++++ app/views/repositories/show.html.erb | 5 ++--- 4 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 app/views/repositories/_quality_analyses.html.erb create mode 100644 app/views/repositories/quality_analyses.js.erb diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 555b46051..9dbf7cfd7 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -308,13 +308,15 @@ update end def quality_analyses + language = params[:language] + branch = params[:branch] + path = params[:path] + user_name = User.find(@project.user_id).try(:login) + rep_name = params[:repository_id] host = "192.168.0.200" port = "1125" username = "git" password = "123123" - ##显示文件和系统版本 - user_name = User.find(@project.user_id).try(:login) - rep_name = params[:repository_id] server_cmd1 = "sh gitclone.sh" + " " + user_name + " " + rep_name # 连接到远程主机 foobar ssh = Net::SSH.start(host, username, :port => port, :password => password) do |ssh| diff --git a/app/views/repositories/_quality_analyses.html.erb b/app/views/repositories/_quality_analyses.html.erb new file mode 100644 index 000000000..7424e0369 --- /dev/null +++ b/app/views/repositories/_quality_analyses.html.erb @@ -0,0 +1,5 @@ +<%= form_tag( url_for(:controller => 'repositories', :action => 'quality_analyses'), :remote => true , :method => 'post', :class => 'resourcesSearchloadBox mt10', :id => 'resource_search_form') do %> + + <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch' %> + <%= select_tag :language, options_for_select(["Java","C"]), :id => 'branch' %> +<% end %> \ No newline at end of file diff --git a/app/views/repositories/quality_analyses.js.erb b/app/views/repositories/quality_analyses.js.erb new file mode 100644 index 000000000..89d8685cf --- /dev/null +++ b/app/views/repositories/quality_analyses.js.erb @@ -0,0 +1,8 @@ +$('#ajax-modal').html('<%= escape_javascript( render :partial => 'repositories/quality_analyses', :locals => {}) %>'); +showModal('ajax-modal', '615px'); +$('#ajax-modal').siblings().remove(); +$('#ajax-modal').before(""); +$('#ajax-modal').parent().css("top","20%").css("left","42%").css("border","3px solid #269ac9"); +$('#ajax-modal').parent().addClass("popbox_polls"); + + diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index bbcb48bdf..d1c041d73 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -2,7 +2,7 @@

<%= render :partial => 'breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>

ZIP下载 - <%= link_to "质量分析", quality_analyses_path(:id => @project.id, :repository_id => @repository.identifier) %> + <%= link_to "质量分析", quality_analyses_path(:id => @project.id, :repository_id => @repository.identifier), :remote => true, :class => "btn_zipdown fr" %>
@@ -46,7 +46,7 @@
<%= @changesets_latest_coimmit.message %>
<% else %> - +
提交于<%= time_tag(@changesets_latest_coimmit.created_at) %>:
<%= @changesets_latest_coimmit.message %>
@@ -58,7 +58,6 @@ <%=link_to @changesets_all_count, {:action => 'changes', :path => to_path_param(@path), :id => @project, :repository_id => @repository.identifier_param, :rev => @rev,:page=>1 ,:commit_count =>"#{@changesets_all_count}"} %> 提交 -
<% end %> From d0791253d9f56c532a3d970f43cf3fd722a9ca2c Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 17 Jun 2016 11:29:49 +0800 Subject: [PATCH 05/75] quality --- app/assets/javascripts/quality_analyses.js.coffee | 3 +++ app/assets/stylesheets/quality_analyses.css.scss | 3 +++ app/controllers/projects_controller.rb | 2 +- app/controllers/quality_analyses_controller.rb | 15 +++++++++++++++ app/helpers/quality_analyses_helper.rb | 2 ++ app/views/quality_analyses/index.html.erb | 0 config/routes.rb | 7 +++++++ .../quality_analyses_controller_spec.rb | 5 +++++ 8 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/quality_analyses.js.coffee create mode 100644 app/assets/stylesheets/quality_analyses.css.scss create mode 100644 app/controllers/quality_analyses_controller.rb create mode 100644 app/helpers/quality_analyses_helper.rb create mode 100644 app/views/quality_analyses/index.html.erb create mode 100644 spec/controllers/quality_analyses_controller_spec.rb diff --git a/app/assets/javascripts/quality_analyses.js.coffee b/app/assets/javascripts/quality_analyses.js.coffee new file mode 100644 index 000000000..761567942 --- /dev/null +++ b/app/assets/javascripts/quality_analyses.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/stylesheets/quality_analyses.css.scss b/app/assets/stylesheets/quality_analyses.css.scss new file mode 100644 index 000000000..9404eb70f --- /dev/null +++ b/app/assets/stylesheets/quality_analyses.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the QualityAnalyses controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index c8b272480..7e1738842 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -645,7 +645,7 @@ class ProjectsController < ApplicationController params[:project][:is_public] ? @project.is_public = 1 : @project.is_public = 0 params[:project][:hidden_repo] ? @project.hidden_repo = 1 : @project.hidden_repo = 0 # 更新公开私有时同步gitlab公开私有 - unless @project.gpid.nil? + if !@project.gpid.nil? && @project.is_public != (params[:project][:is_public] == "on" ? true : false) g = Gitlab.client params[:project][:is_public] ? g.edit_project(@project.gpid, 20, params[:branch]) : g.edit_project(@project.gpid, 0, params[:branch]) end diff --git a/app/controllers/quality_analyses_controller.rb b/app/controllers/quality_analyses_controller.rb new file mode 100644 index 000000000..0ea288a91 --- /dev/null +++ b/app/controllers/quality_analyses_controller.rb @@ -0,0 +1,15 @@ +class QualityAnalysesController < ApplicationController + before_filter :find_project_by_project_id#, :except => [:getattachtype] + layout "base_projects" + + def index + + end + + # Find project of id params[:project_id] + def find_project_by_project_id + @project = Project.find(params[:project_id]) + rescue ActiveRecord::RecordNotFound + render_404 + end +end diff --git a/app/helpers/quality_analyses_helper.rb b/app/helpers/quality_analyses_helper.rb new file mode 100644 index 000000000..a47f571bb --- /dev/null +++ b/app/helpers/quality_analyses_helper.rb @@ -0,0 +1,2 @@ +module QualityAnalysesHelper +end diff --git a/app/views/quality_analyses/index.html.erb b/app/views/quality_analyses/index.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/config/routes.rb b/config/routes.rb index 33a59b46b..17614f4b6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -782,6 +782,13 @@ RedmineApp::Application.routes.draw do end end + resources :quality_analyses, :only => [:index] do + collection do + end + member do + + end + end # resources :files, :only => [:index, :new, :create] do # member do # match "quote_resource_show_project",:via => [:get] diff --git a/spec/controllers/quality_analyses_controller_spec.rb b/spec/controllers/quality_analyses_controller_spec.rb new file mode 100644 index 000000000..c5076c53f --- /dev/null +++ b/spec/controllers/quality_analyses_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe QualityAnalysesController, :type => :controller do + +end From 3492f65a9be91d795f3a97626fd38fea7fa15ee3 Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 17 Jun 2016 16:57:11 +0800 Subject: [PATCH 06/75] =?UTF-8?q?=E7=BC=96=E7=A8=8B=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=8C=BF=E8=AF=84=E6=97=B6=E7=9A=84=E5=88=97=E8=A1=A8=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/student_work/_evaluation_title.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/student_work/_evaluation_title.html.erb b/app/views/student_work/_evaluation_title.html.erb index 6a89b51b1..419407eae 100644 --- a/app/views/student_work/_evaluation_title.html.erb +++ b/app/views/student_work/_evaluation_title.html.erb @@ -7,7 +7,7 @@ 序号   <% if @homework.homework_type != 3 %> - 作品名称 + 作品名称 姓名 From 948ec58248e863369d4c9bcd14f40676f601a668 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Fri, 17 Jun 2016 17:18:36 +0800 Subject: [PATCH 07/75] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E6=9C=AA=E7=99=BB=E5=BD=95=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_reply_to.html.erb | 40 +++++++++---------- app/views/users/_show_unlogged_reply.html.erb | 4 ++ public/stylesheets/courses.css | 1 + public/stylesheets/new_user.css | 1 + 4 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 app/views/users/_show_unlogged_reply.html.erb diff --git a/app/views/users/_reply_to.html.erb b/app/views/users/_reply_to.html.erb index 23090265c..a7034ffc7 100644 --- a/app/views/users/_reply_to.html.erb +++ b/app/views/users/_reply_to.html.erb @@ -1,23 +1,23 @@ -
-
<%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(User.current), :alt => "用户头像" %>
-
- <% if User.current.logged? %> -
- <%= form_for('new_form',:url => {:controller => 'words', :action => 'reply_to_homework', :id => reply.id},:method => "post", :remote => true) do |f| %> - > - > - > - -
- - -
-

- <% end%> -
- <% else %> - <%= render :partial => "users/show_unlogged" %> - <% end %> +
+ <% if User.current.logged? %> +
<%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(User.current), :alt => "用户头像" %>
+
+
+ <%= form_for('new_form',:url => {:controller => 'words', :action => 'reply_to_homework', :id => reply.id},:method => "post", :remote => true) do |f| %> + > + > + > + +
+ + +
+

+ <% end%> +
+ <% else %> + <%= render :partial => "users/show_unlogged_reply" %> + <% end %>
diff --git a/app/views/users/_show_unlogged_reply.html.erb b/app/views/users/_show_unlogged_reply.html.erb new file mode 100644 index 000000000..b428fd249 --- /dev/null +++ b/app/views/users/_show_unlogged_reply.html.erb @@ -0,0 +1,4 @@ +
+ 登录后可添加回复 + <%#= link_to "登录", signin_path, :class => "linkBlue", :target => "_blank" %> +
\ No newline at end of file diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css index 785fb2ba3..393903177 100644 --- a/public/stylesheets/courses.css +++ b/public/stylesheets/courses.css @@ -1372,6 +1372,7 @@ a:hover.comment_ding_link{ color:#269ac9;} .comment_content{ color:#333;} .t_txt{ margin-top:10px;} .orig_reply_box{border-top:1px solid #e3e3e3; width:95%; padding:15px 0px 15px 25px;} +.orig_reply_box2{border-top:1px solid #e3e3e3; width:95%; padding:10px 25px 10px 0;} .orig_textarea{width:90%; margin-bottom:10px;} .orig_sub{ float:right; background-color:#269ac9; color:#fff; height:25px; line-height:25px; text-align:center; width:80px; border:none;} .orig_sub:hover{ background:#297fb8;} diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index dcd275d92..5fc6110fd 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -1553,6 +1553,7 @@ a:hover.comment_ding_link{ color:#269ac9;} .comment_content{ color:#333;} .t_txt{ margin-top:10px;} .orig_reply_box{border-top:1px solid #e3e3e3; width:95%; padding:15px 0px 15px 25px;} +.orig_reply_box2{border-top:1px solid #e3e3e3; width:95%; padding:10px 25px 10px 0;} .orig_textarea{width:90%; margin-bottom:10px;} .orig_sub{ float:right; background-color:#269ac9; color:#fff; height:25px; line-height:25px; text-align:center; width:80px; border:none;} .orig_sub:hover{ background:#297fb8;} From 2464586ed207df76f58f47c7094285e0d644591f Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 17 Jun 2016 17:20:17 +0800 Subject: [PATCH 08/75] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/org_custom.css | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/public/stylesheets/org_custom.css b/public/stylesheets/org_custom.css index 95df98738..5ff340272 100644 --- a/public/stylesheets/org_custom.css +++ b/public/stylesheets/org_custom.css @@ -25,31 +25,31 @@ a.por_edit_index{ position:absolute; font-size:14px; right:5px; top:15px;} .por_h2_index{ font-size:18px; font-weight:normal; color:#3b94d6; width:100%; border-bottom:1px solid #e8e5e5; height:40px; line-height:40px;} a.por_more_index{ font-size:12px; color:#999; } .por_hotbar_left li{ width:365px; padding:12px 5px 12px 0; border-bottom:1px dashed #e8e5e5;} -a.por_hot_title{ font-size:16px; display:block; font-weight:bold; width:365px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} -.por_hot_txt{ color:#666; line-height:20px;max-height:60px;overflow:hidden;text-overflow:ellipsis;} +a.por_hot_title{ font-size:16px; display:block; width:365px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color: #02253f;} +.por_hot_txt{ color:#637379; line-height:20px;max-height:60px;overflow:hidden;text-overflow:ellipsis;} .por_time{ color:#999;} a.por_hot_name{color:#3b94d6;} .por_hotbar_right{ padding:5px 0 5px 10px; margin-top:15px; width:300px; } .por_hotbar_right img{ width:300px; height:246px;} -.por_hot_title_r{ font-size:16px; display:block; font-weight:bold; width:300px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} +.por_hot_title_r{ font-size:16px; display:block; width:300px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color: #02253f;} .por_hot_txt_r{color:#666; line-height:20px;max-height:80px;overflow:hidden;text-overflow:ellipsis;} .por_course{ } .por_course_bar{ width:328px; margin:0 7px; padding:20px 0 0px;} -a.por_course_title{font-size:14px; margin-bottom:10px; display:block; font-weight:bold; width:328px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} +a.por_course_title{font-size:16px; margin-bottom:10px; display:block; width:328px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color: #02253f;} .por_course_bar img{ width:140px; height:100px; } -.por_course_txt { width:180px; margin-left:5px;color:#666; line-height:20px;max-height:80px;overflow:hidden;text-overflow:ellipsis;} +.por_course_txt { width:180px; margin-left:5px;color:#637379; line-height:20px;max-height:80px;overflow:hidden;text-overflow:ellipsis;} .por_course_time{color:#3b94d6; margin-left:5px;} .por_post{ padding-bottom:5px;} -.por_post_left{ width:394px; margin-top:15px;} +.por_post_left{ width:385px; margin-top:15px; margin-right: 9px;} .por_post_leftbar img{ width:377px; height:163px;} .por_post_leftbar { border-bottom:1px dashed #e8e5e5; padding-bottom:5px; margin-bottom:10px;} -a.por_post_title{font-size:18px; display:block; width:377px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} -.por_post_txt{color:#666; line-height:20px;max-height:40px;overflow:hidden;text-overflow:ellipsis; } +a.por_post_title{font-size:18px; display:block; width:377px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; color: #02253f;} +.por_post_txt{color:#637379; line-height:20px;max-height:40px;overflow:hidden;text-overflow:ellipsis; margin-bottom: 5px;} .post_icons_grey{ width:4px; height:4px; margin:10px 5px 0 0; background-color:#b3b3b3; display:block; line-height:20px;} .por_post_list li{ height:35px;} .por_post_list li a{ font-size:14px; } -a.por_hidden_w390{ display:block; width:390px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} -a.por_hidden_w270{ display:block; width:280px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} +a.por_hidden_w390{ display:block; width:390px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; color: #02253f;} +a.por_hidden_w270{ display:block; width:280px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; color: #02253f;} .por_post_right{ width:280px; border-left:1px solid #e8e5e5; margin-top:15px; padding-left:10px;} .por_news_list li{ padding:15px 0; border-bottom:1px dashed #e8e5e5;} .por_users_img{ width:40px; height:40px; -webkit-border-radius:50px;-moz-border-radius:50px;-o-border-radius:50px;border-radius:50px;} @@ -57,11 +57,11 @@ a.por_hidden_w270{ display:block; width:280px; overflow:hidden; white-space: now .por_news_p{ line-height:20px;max-height:40px;min-width:240px;overflow:hidden;text-overflow:ellipsis; } a.por_zan{ background:url(../images/org_custom/icons_por.png) 0 -41px no-repeat; height:15px; width:20px; display:block; padding-left:15px; line-height:20px; color:#999;} a.por_zan:hover{background:url(../images/org_custom/icons_por.png) -34px -42px no-repeat; color:#3b94d6; } -.por_hidden_w205{ font-size:14px; display:block; width:205px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} +.por_hidden_w205{ font-size:14px; display:block; width:205px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; color: #02253f;} .por_projects{ padding-bottom:10px; margin-top:10px;} .por_projects ul li{ padding:5px 0;} .por_projects ul{ margin-top:5px;} -.por_project_p{ line-height:20px;max-height:40px;overflow:hidden;text-overflow:ellipsis; margin-top:5px; margin-left:10px; color:#666; } +.por_project_p{ line-height:20px;max-height:40px;overflow:hidden;text-overflow:ellipsis; margin-top:5px; margin-left:10px; color:#637379; margin-bottom: 5px;} .por_project_li{border-bottom:1px dashed #ccc; padding-bottom:10px; margin-bottom:5px;} .por_time a{ color:#3b94d6;} .por_teachers{ margin-top:20px; } @@ -78,7 +78,7 @@ a.por_more_teacher{ font-size:12px; } .por_teachers_li{ margin-top:10px;} .por_teachers_li li{ padding:10px 0;} .por_teachers_img{ width:60px; height:60px; -webkit-border-radius:50px;-moz-border-radius:50px;-o-border-radius:50px;border-radius:50px;} -a.por_teachers_name{ display:block; width:75px; font-size:18px;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} +a.por_teachers_name{ display:block; width:75px; font-size:18px;overflow:hidden; white-space: nowrap; text-overflow:ellipsis; color: #02253f;} .por_teachers_p{ font-size:14px; color:#999; width:150px;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} .por_teachers_span{ color:#999;} .por_teachers_span a{ margin:0 5px; color:#999;} From 6af0bf7b8396d6496bbc7276ce2398f78ab220af Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 17 Jun 2016 17:35:46 +0800 Subject: [PATCH 09/75] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organizations/_org_custom_left1.html.erb | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/app/views/organizations/_org_custom_left1.html.erb b/app/views/organizations/_org_custom_left1.html.erb index ee88f3315..8632dd57a 100644 --- a/app/views/organizations/_org_custom_left1.html.erb +++ b/app/views/organizations/_org_custom_left1.html.erb @@ -66,7 +66,7 @@ <% else %> <%= link_to image_tag("/files/uploads/image#{get_image_path_from_content(document.content)}", :width => "299", :height => "246"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank" %> <% end %> -
+
<%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :class => 'por_hot_title_r link-black', :target => "_blank", :title => document.title %>

<%= time_from_now(document.created_at) %><%= link_to document.creator.show_name, user_path(document.creator), :class => "por_hot_name link-blue", :target => "_blank" %>

<%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => document.id, :content=> document.content, :maxheight => 80, :maxwordsnum => 90, :maxwidth => 0, :cl => "por_hot_txt_r"} %> @@ -85,9 +85,11 @@ <% else %> <%= link_to image_tag("/files/uploads/image#{get_image_path_from_content(content)}", :width => "299", :height => "246"), board_message_url_in_org(message.board.id, message.id), :target => "_blank" %> <% end %> - <%= link_to title, board_message_url_in_org(message.board.id, message.id), :class => 'por_hot_title_r link-black', :target => "_blank", :title => title %> -

<%= time_from_now(message.created_on) %><%= link_to message.author.show_name, user_path(message.author), :class => "por_hot_name link-blue", :target => "_blank" %>

- <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> content, :maxheight => 80, :maxwordsnum => 90, :maxwidth => 0, :cl => "por_hot_txt_r"} %> +
+ <%= link_to title, board_message_url_in_org(message.board.id, message.id), :class => 'por_hot_title_r link-black', :target => "_blank", :title => title %> +

<%= time_from_now(message.created_on) %><%= link_to message.author.show_name, user_path(message.author), :class => "por_hot_name link-blue", :target => "_blank" %>

+ <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> content, :maxheight => 80, :maxwordsnum => 90, :maxwidth => 0, :cl => "por_hot_txt_r"} %> +
<% else %>
@@ -96,9 +98,11 @@ <% else %> <%= link_to image_tag("/files/uploads/image#{get_image_path_from_content(content)}", :width => "299", :height => "246"), board_message_path(message.board.id, message.id), :target => "_blank" %> <% end %> - <%= link_to title, board_message_path(message.board.id, message.id), :class => 'por_hot_title_r link-black', :target => "_blank", :title => title %> -

<%= time_from_now(message.created_on) %><%= link_to message.author.show_name, user_path(message.author), :class => "por_hot_name link-blue", :target => "_blank" %>

- <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> content, :maxheight => 80, :maxwordsnum => 90, :maxwidth => 0, :cl => "por_hot_txt_r"} %> +
+ <%= link_to title, board_message_path(message.board.id, message.id), :class => 'por_hot_title_r link-black', :target => "_blank", :title => title %> +

<%= time_from_now(message.created_on) %><%= link_to message.author.show_name, user_path(message.author), :class => "por_hot_name link-blue", :target => "_blank" %>

+ <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> content, :maxheight => 80, :maxwordsnum => 90, :maxwidth => 0, :cl => "por_hot_txt_r"} %> +
<% end %> <% end %> @@ -111,9 +115,11 @@ <% else %> <%= link_to image_tag("/files/uploads/image#{path}", :width => "299", :height => "246"), news_path(news), :target => "_blank" %> <% end %> - <%= link_to news.title, news_path(news), :class => 'por_hot_title_r link-black', :target => "_blank", :title => news.title %> -

<%= time_from_now(news.created_on) %><%= link_to news.author.show_name, user_path(news.author), :class => "por_hot_name link-blue", :target => "_blank" %>

- <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => news.id, :content=> news.description, :maxheight => 80, :maxwordsnum => 90, :maxwidth => 0, :cl => "por_hot_txt_r"} %> +
+ <%= link_to news.title, news_path(news), :class => 'por_hot_title_r link-black', :target => "_blank", :title => news.title %> +

<%= time_from_now(news.created_on) %><%= link_to news.author.show_name, user_path(news.author), :class => "por_hot_name link-blue", :target => "_blank" %>

+ <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => news.id, :content=> news.description, :maxheight => 80, :maxwordsnum => 90, :maxwidth => 0, :cl => "por_hot_txt_r"} %> +
<% end %> <% end %> @@ -121,4 +127,8 @@ <%# end %>
-
\ No newline at end of file +
+ + \ No newline at end of file From fce93de29682b60ebf392ae5ebc6e204b001e84c Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 17 Jun 2016 18:03:58 +0800 Subject: [PATCH 10/75] =?UTF-8?q?500=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/organizations/_org_custom_left3.html.erb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/organizations/_org_custom_left3.html.erb b/app/views/organizations/_org_custom_left3.html.erb index fb2b83dd2..ff412d869 100644 --- a/app/views/organizations/_org_custom_left3.html.erb +++ b/app/views/organizations/_org_custom_left3.html.erb @@ -71,7 +71,7 @@ <% end %> <% end %>
- <% unless acts[1..4].nil? %> + <% unless acts[1..4].blank? %> <% acts[1..4].each do |activity| %> <% if activity.container_type == 'Organization' && activity.org_act_type == 'OrgDocumentComment' %> <% document = activity.org_act %> @@ -110,10 +110,10 @@ <% end %> <% end %>
- <% unless acts[5..16].nil? %> + <% unless acts[5..16].blank? %>
+ onblur="edit_file_description('<%= update_file_description_org_subfield_file_path(file.container,file)%>','<%= file.id %>');"><%= file.description %> <% else %>
From 7c729107cca630eb1f4478fb7fa48ae624fd788c Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 20 Jun 2016 09:40:21 +0800 Subject: [PATCH 12/75] =?UTF-8?q?KE=E5=A4=8D=E5=88=B6=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E4=BF=9D=E7=95=99=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E7=9A=84=E5=A4=96=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/kindeditor/pasteimg.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/public/assets/kindeditor/pasteimg.js b/public/assets/kindeditor/pasteimg.js index 97d5e33c5..d7ffead5b 100644 --- a/public/assets/kindeditor/pasteimg.js +++ b/public/assets/kindeditor/pasteimg.js @@ -371,7 +371,8 @@ function df(myself) { sstr += that.attr("src") + "|"; } else if (that.attr("src").indexOf("data:image") >= 0){ - that.parents().removeAttr("href"); //删除所有父节点的href + //去掉外链 +// that.parents().removeAttr("href"); //删除所有父节点的href } } }); @@ -421,10 +422,10 @@ function uploadpic(piclist,myself) { //复制过来带的链接class等都要去掉 和视频图片有关系 that.removeAttr("class"); - that.parent().removeAttr("class"); - that.parents().removeAttr("href"); //删除所有父节点的href -// that.parent().removeAttr("href"); - that.parent().removeAttr("data-ke-src"); + //去掉外链 +// that.parent().removeAttr("class"); +// that.parents().removeAttr("href"); //删除所有父节点的href +// that.parent().removeAttr("data-ke-src"); tIndex = tIndex + 1; } } From 36e47fa8b1e6554ae40f91af752bce65f523e8f4 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 20 Jun 2016 14:21:40 +0800 Subject: [PATCH 13/75] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E5=88=86=E6=9E=90=EF=BC=8C=E5=BC=B9=E6=A1=86=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 2 +- .../quality_analyses_controller.rb | 11 ++++ app/controllers/repositories_controller.rb | 52 ++++++++++++------- .../repositories/_quality_analyses.html.erb | 8 +-- config/routes.rb | 2 +- 5 files changed, 51 insertions(+), 24 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 7e1738842..c216491b1 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -393,7 +393,7 @@ class ProjectsController < ApplicationController unless @project.gpid.nil? g = Gitlab.client @gitlab_branches = g.branches(@project.gpid) - @branch_names = g.branches(@project.gpid).map{|b| b.name} + @branch_names = @gitlab_branches.map{|b| b.name} @gitlab_default_branch = g.project(@project.gpid).default_branch end end diff --git a/app/controllers/quality_analyses_controller.rb b/app/controllers/quality_analyses_controller.rb index 0ea288a91..8f9a51666 100644 --- a/app/controllers/quality_analyses_controller.rb +++ b/app/controllers/quality_analyses_controller.rb @@ -1,6 +1,17 @@ class QualityAnalysesController < ApplicationController before_filter :find_project_by_project_id#, :except => [:getattachtype] layout "base_projects" + include ApplicationHelper + + def new + + end + + def create + branch = params[:branch] + language = params[:language] + path = params[:path] + end def index diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index d41def4af..3f630ce51 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -35,6 +35,8 @@ class RepositoriesController < ApplicationController before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked, :project_archive] before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff, :project_archive, :quality_analyses] + # 链接gitlab + before_filter :connect_gitlab, :only => [:quality_analyses] accept_rss_auth :revisions # hidden repositories filter // 隐藏代码过滤器 before_filter :check_hidden_repo, :only => [:show, :stats, :revisions, :revision, :diff ] @@ -308,26 +310,30 @@ update end def quality_analyses - language = params[:language] - branch = params[:branch] - path = params[:path] - user_name = User.find(@project.user_id).try(:login) - rep_name = params[:repository_id] - host = "192.168.0.200" - port = "1125" - username = "git" - password = "123123" - server_cmd1 = "sh gitclone.sh" + " " + user_name + " " + rep_name - # 连接到远程主机 foobar - ssh = Net::SSH.start(host, username, :port => port, :password => password) do |ssh| - result = ssh.exec!(server_cmd1) - path = "/home/git/repo/" + user_name + "/" + rep_name - # sonar 分析 - # server_cmd2 - # 删除clone的版本库 - # server_cmd3 - end + gitlab_branches = @g.branches(@project.gpid) + @branch_names = gitlab_branches.map{|b| b.name} + @gitlab_default_branch = @g.project(@project.gpid).default_branch + # language = params[:language] + # branch = params[:branch] + # path = params[:path] + # user_name = User.find(@project.user_id).try(:login) + # rep_name = params[:repository_id] + # host = "192.168.0.200" + # port = "1125" + # username = "git" + # password = "123123" + # server_cmd1 = "sh gitclone.sh" + " " + user_name + " " + rep_name + # # 连接到远程主机 foobar + # ssh = Net::SSH.start(host, username, :port => port, :password => password) do |ssh| + # result = ssh.exec!(server_cmd1) + # path = "/home/git/repo/" + user_name + "/" + rep_name + # # sonar 分析 + # # server_cmd2 + # # 删除clone的版本库 + # # server_cmd3 + # end respond_to do |format| + format.js format.html{ render :layout => "base_projects" } @@ -643,6 +649,14 @@ update project.project_score.update_attribute(:commit_time, date.created_at) end + # 链接gitlab + def connect_gitlab + @g = Gitlab.client + unless @project.gpid.nil? + @g_project = @g.project(@project.gpid) + end + end + def find_repository @repository = Repository.find(params[:id]) @project = @repository.project diff --git a/app/views/repositories/_quality_analyses.html.erb b/app/views/repositories/_quality_analyses.html.erb index 7424e0369..56951f3b6 100644 --- a/app/views/repositories/_quality_analyses.html.erb +++ b/app/views/repositories/_quality_analyses.html.erb @@ -1,5 +1,7 @@ -<%= form_tag( url_for(:controller => 'repositories', :action => 'quality_analyses'), :remote => true , :method => 'post', :class => 'resourcesSearchloadBox mt10', :id => 'resource_search_form') do %> - +<%= form_tag( url_for(:controller => 'quality_analyses', :action => 'create', :project_id => @project.id), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> + <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch' %> - <%= select_tag :language, options_for_select(["Java","C"]), :id => 'branch' %> + <%= select_tag :language, options_for_select(["Java","C","PHP", "Web"]), :id => 'branch' %> + + <% end %> \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 17614f4b6..b32816673 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -782,7 +782,7 @@ RedmineApp::Application.routes.draw do end end - resources :quality_analyses, :only => [:index] do + resources :quality_analyses, :only => [:index, :new, :create] do collection do end member do From 96e00f7bf37ba8779d2a34f2c183c4275f21a4f4 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 20 Jun 2016 16:21:37 +0800 Subject: [PATCH 14/75] =?UTF-8?q?jenkins=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/quality_analyses_controller.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/controllers/quality_analyses_controller.rb b/app/controllers/quality_analyses_controller.rb index 8f9a51666..1cbcb14a8 100644 --- a/app/controllers/quality_analyses_controller.rb +++ b/app/controllers/quality_analyses_controller.rb @@ -8,9 +8,14 @@ class QualityAnalysesController < ApplicationController end def create + user_name = User.find(params[:user_id]).try(:login) branch = params[:branch] language = params[:language] path = params[:path] + @client = JenkinsApi::Client.new(:server_url => 'http://123.59.135.93:8890', + :username => user_name, + :password => '') + end def index From fde06a2327529901961e2742280b18da43ed754f Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 20 Jun 2016 16:35:16 +0800 Subject: [PATCH 15/75] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_show_attachment_history.html.erb | 12 ++--- app/views/files/_org_subfield_list.html.erb | 7 +-- app/views/files/_project_file_list.html.erb | 7 +-- app/views/files/_project_list.html.erb | 11 ++--- app/views/files/_resource_detail.html.erb | 7 +-- public/assets/kindeditor/pasteimg.js | 44 +++++++++---------- public/stylesheets/courses.css | 6 +++ public/stylesheets/new_user.css | 6 +++ public/stylesheets/project.css | 6 +++ 9 files changed, 56 insertions(+), 50 deletions(-) diff --git a/app/views/attachments/_show_attachment_history.html.erb b/app/views/attachments/_show_attachment_history.html.erb index 6e2994a8d..ee607cec4 100644 --- a/app/views/attachments/_show_attachment_history.html.erb +++ b/app/views/attachments/_show_attachment_history.html.erb @@ -39,19 +39,19 @@
+
+ (未选择文件) + 您可以上传小于50MB的文件 +
- +

描述:

- +
-
-
(未选择文件)
-
您可以上传小于50MB的文件
-
diff --git a/app/views/files/_org_subfield_list.html.erb b/app/views/files/_org_subfield_list.html.erb index fcf0e9982..1bbdc0e93 100644 --- a/app/views/files/_org_subfield_list.html.erb +++ b/app/views/files/_org_subfield_list.html.erb @@ -43,15 +43,12 @@
<%= render :partial => 'files/file_description', :locals => {:file => file} %>
-
<% else %>
- <% unless file.description.blank? %> -
-
资源描述:<%= file.description %>
- <% end %> + 资源描述:<% if file.description.blank? %>未添加<% else %><%= file.description %><% end %>
<% end %> diff --git a/app/views/files/_project_file_list.html.erb b/app/views/files/_project_file_list.html.erb index b8b38f7b9..4d3645a33 100644 --- a/app/views/files/_project_file_list.html.erb +++ b/app/views/files/_project_file_list.html.erb @@ -48,15 +48,12 @@
<%= render :partial => 'files/file_description', :locals => {:file => file} %>
- <% else %>
- <% unless file.description.blank? %> -
-
资源描述:<%= file.description %>
- <% end %> + 资源描述:<% if file.description.blank? %>未添加<% else %><%= file.description %><% end %>
<% end %>
diff --git a/app/views/files/_project_list.html.erb b/app/views/files/_project_list.html.erb index 48fb4c86f..36dc80a18 100644 --- a/app/views/files/_project_list.html.erb +++ b/app/views/files/_project_list.html.erb @@ -40,16 +40,13 @@
<%= render :partial => 'files/file_description', :locals => {:file => file} %>
-
<% else %> -
- <% unless file.description.blank? %> -
-
资源描述:<%= file.description %>
- <% end %> -
+
+ 资源描述:<% if file.description.blank? %>未添加<% else %><%= file.description %><% end %> +
<% end %>
diff --git a/app/views/files/_resource_detail.html.erb b/app/views/files/_resource_detail.html.erb index 8aedc3c03..0edf22e58 100644 --- a/app/views/files/_resource_detail.html.erb +++ b/app/views/files/_resource_detail.html.erb @@ -42,15 +42,12 @@
<%= render :partial => 'files/file_description', :locals => {:file => file} %>
-
<% else %>
- <% unless file.description.blank? %> -
-
资源描述:<%= file.description %>
- <% end %> + 资源描述:<% if file.description.blank? %>未添加<% else %><%= file.description %><% end %>
<% end %> <%# end %> diff --git a/public/assets/kindeditor/pasteimg.js b/public/assets/kindeditor/pasteimg.js index d7ffead5b..479b1101a 100644 --- a/public/assets/kindeditor/pasteimg.js +++ b/public/assets/kindeditor/pasteimg.js @@ -327,28 +327,28 @@ function enablePasteImg(_editor) { }; $(nodeBody).on('pasteImage', function(ev, data) { - console.log('pasteImage'); - console.log("dataURL: " + data.dataURL); - console.log("width: " + data.width); - console.log("height: " + data.height); - var blob = dataURItoBlob(data.dataURL); - if (data.blob !== null) { - var data = new FormData(); - data.append("imgFile",blob, "imageFilename.png"); - console.log(data); - $.ajax({ - url: '/kindeditor/upload?dir=image', - contentType: false, - type: 'POST', - data: data, - processData: false, - success: function(data) { - console.log(data); - editor.exec('insertimage', JSON.parse(data).url); - } - }); - } - + //粘贴图片时走这里会出现两张图片走df()即可 +// console.log('pasteImage'); +// console.log("dataURL: " + data.dataURL); +// console.log("width: " + data.width); +// console.log("height: " + data.height); +// var blob = dataURItoBlob(data.dataURL); +// if (data.blob !== null) { +// var data = new FormData(); +// data.append("imgFile",blob, "imageFilename.png"); +// console.log(data); +// $.ajax({ +// url: '/kindeditor/upload?dir=image', +// contentType: false, +// type: 'POST', +// data: data, +// processData: false, +// success: function(data) { +// console.log(data); +// editor.exec('insertimage', JSON.parse(data).url); +// } +// }); +// } }); return; }; diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css index 393903177..ed99217b8 100644 --- a/public/stylesheets/courses.css +++ b/public/stylesheets/courses.css @@ -1421,3 +1421,9 @@ a.pages-big{ width:50px;} /*未登录回复提示*/ .visitor-box {width:620px; height:33px; line-height:33px; text-align:center; vertical-align: middle; border:1px solid #ccc; background-color: #fff;} + +/*更新资源文件的描述框*/ +.H60 {height:60px !important;} +.W420 {width:420px;} +.W300 {width:300px !important;} +.W600{ width:600px;} \ No newline at end of file diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index 5fc6110fd..ee3ddf6df 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -1796,3 +1796,9 @@ input.new_loggin_input{ /*未登录回复提示*/ .visitor-box {width:620px; height:33px; line-height:33px; text-align:center; vertical-align: middle; border:1px solid #ccc; background-color: #fff;} + +/*更新资源文件的描述框*/ +.H60 {height:60px !important;} +.W420 {width:420px;} +.W300 {width:300px !important;} +.W600{ width:600px;} \ No newline at end of file diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index ac65d34c2..d8b8cc74a 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -1249,3 +1249,9 @@ a.pages-big{ width:50px;} /*未登录回复提示*/ .visitor-box {width:620px; height:33px; line-height:33px; text-align:center; vertical-align: middle; border:1px solid #ccc; background-color: #fff;} + +/*更新资源文件的描述框*/ +.H60 {height:60px !important;} +.W420 {width:420px;} +.W300 {width:300px !important;} +.W600{ width:600px;} \ No newline at end of file From d3f3f019a0c664871c31a060cfecf6e431087973 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 20 Jun 2016 16:40:56 +0800 Subject: [PATCH 16/75] =?UTF-8?q?=E4=B8=8B=E6=8B=89=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=9C=89=E6=97=B6=E5=80=99=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/public.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index ff71bf5c4..333c410ca 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -533,7 +533,7 @@ a.homepageSearchIcon:hover {background:url(../images/nav_icon.png) -49px 3px no- .homepageNewsIcon {background:url(../images/nav_icon.png) -5px -85px no-repeat; width:30px; height:35px; display:block;} .newsActive {width:16px; height:16px; border-radius:50%; background-color:#ff0000; position:absolute; left:17px; top:5px; text-align:center;font-size:12px; color:#ffffff !important;padding-bottom: 3px;padding-left: 2px;padding-right: 1px;font-weight: bold;} .navHomepageProfile {width:65px; display:block; float:right; margin-left:33px;} -.homepageProfileMenuIcon {background:url(../images/nav_icon.png) 30px -155px no-repeat; width:65px; height:50px; position:relative; display:inline-block;} +.homepageProfileMenuIcon {background:url(../images/nav_icon.png) 30px -155px no-repeat; width:65px; height:54px; position:relative; display:inline-block;} .homepageProfileMenuIcon:hover {background:url(../images/nav_icon.png) 30px -122px no-repeat;} .navHomepageProfile ul li ul {display:none;} .navHomepageProfile ul li:hover ul {display:block;} From a5ffd013b92fd55e3839b9010f12deae288ca2a1 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 20 Jun 2016 17:13:14 +0800 Subject: [PATCH 17/75] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=89=88=E6=9C=AC=E7=9A=84=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/attachments/_show_attachment_history.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/attachments/_show_attachment_history.html.erb b/app/views/attachments/_show_attachment_history.html.erb index ee607cec4..9764908ab 100644 --- a/app/views/attachments/_show_attachment_history.html.erb +++ b/app/views/attachments/_show_attachment_history.html.erb @@ -1,7 +1,7 @@ 更新资源版本 -
+
当前版本 From 40792ff22206f17e7a7217ef2253d25bdd4c8716 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 20 Jun 2016 17:34:35 +0800 Subject: [PATCH 18/75] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=8F=8F=E8=BF=B0=E9=BB=98=E8=AE=A4=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/attachments/_show_attachment_history.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/attachments/_show_attachment_history.html.erb b/app/views/attachments/_show_attachment_history.html.erb index 9764908ab..61ccef344 100644 --- a/app/views/attachments/_show_attachment_history.html.erb +++ b/app/views/attachments/_show_attachment_history.html.erb @@ -47,7 +47,7 @@

描述:

- +
From d5631defb5fc363d951b06cc32dd89bb7f405e9a Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 20 Jun 2016 17:53:56 +0800 Subject: [PATCH 19/75] added xml to jenkins and added some gems --- Gemfile | 2 + .../quality_analyses_controller.rb | 29 +- config.xml | 69 +++ db/schema.rb | 407 +++++++++++++++++- 4 files changed, 502 insertions(+), 5 deletions(-) create mode 100644 config.xml diff --git a/Gemfile b/Gemfile index 789c2011e..39234b05e 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,8 @@ unless RUBY_PLATFORM =~ /w32/ end gem 'net-ssh' +gem 'jenkins_api_client' +gem 'nokogiri' gem 'certified' diff --git a/app/controllers/quality_analyses_controller.rb b/app/controllers/quality_analyses_controller.rb index 1cbcb14a8..962ce2524 100644 --- a/app/controllers/quality_analyses_controller.rb +++ b/app/controllers/quality_analyses_controller.rb @@ -2,20 +2,41 @@ class QualityAnalysesController < ApplicationController before_filter :find_project_by_project_id#, :except => [:getattachtype] layout "base_projects" include ApplicationHelper + require 'jenkins_api_client' + require 'nokogiri' def new end def create + gitlab_address = Redmine::Configuration['gitlab_address'] user_name = User.find(params[:user_id]).try(:login) - branch = params[:branch] + branch = params[:branch].nil? ? "master" : params[:branch] language = params[:language] path = params[:path] + properties = "sonar.projectKey=#{user_name}:#{@project.name} + sonar.projectName=My #{@project.name} + sonar.projectVersion=1.11 + sonar.sources=#{path} + sonar.language=#{language} + sonar.sourceEncoding=utf-8" + git_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+@repository.identifier+"."+"git" @client = JenkinsApi::Client.new(:server_url => 'http://123.59.135.93:8890', - :username => user_name, - :password => '') - + :username => user_name, + :password => '') + + # modify config + @doc = Nokogiri::XML(File.open(File.join(Rails.root, 'tmp', 'config.xml'))) + @doc.at_xpath("//hudson.plugins.git.UserRemoteConfig/url").content = git_url + @doc.at_xpath("//hudson.plugins.git.BranchSpec/name").content = "*/#{branch}" + @doc.at_xpath("//hudson.plugins.git.BranchSpec/properties").content = properties + sonar_properties = @doc.xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").text #sonar-properties + + # replace config.xml of jenkins + @client = @client.job.create("tesc_create", File.read(File.join(Rails.root, 'tmp', 'config.xml'))) + + end def index diff --git a/config.xml b/config.xml new file mode 100644 index 000000000..7e0029986 --- /dev/null +++ b/config.xml @@ -0,0 +1,69 @@ + + + + + false + + + trustie-gitlab + + + + 2 + + + http://192.168.8.158:8889/root/badboy.git + + + + + */master + + + false + + + + true + false + false + false + + + + true + true + never + true + true + true + false + true + All + + + + false + + + false + + + + + sonar.projectKey=my:project985 + sonar.projectName=My project985 + sonar.projectVersion=1.11 + sonar.sources=src + sonar.language=java + sonar.sourceEncoding=utf-8 + + + + (Inherit From Job) + + + + + + diff --git a/db/schema.rb b/db/schema.rb index 95ffceef1..e8e7e25cb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160612043259) do +ActiveRecord::Schema.define(:version => 20160613065840) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -52,6 +52,28 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" + create_table "application_settings", :force => true do |t| + t.integer "default_projects_limit" + t.boolean "signup_enabled" + t.boolean "signin_enabled" + t.boolean "gravatar_enabled" + t.text "sign_in_text" + t.datetime "created_at" + t.datetime "updated_at" + t.string "home_page_url" + t.integer "default_branch_protection", :default => 2 + t.boolean "twitter_sharing_enabled", :default => true + t.text "restricted_visibility_levels" + t.boolean "version_check_enabled", :default => true + t.integer "max_attachment_size", :default => 10, :null => false + t.integer "default_project_visibility" + t.integer "default_snippet_visibility" + t.text "restricted_signup_domains" + t.boolean "user_oauth_applications", :default => true + t.string "after_sign_out_path" + t.integer "session_expire_delay", :default => 10080, :null => false + end + create_table "applied_projects", :force => true do |t| t.integer "project_id", :null => false t.integer "user_id", :null => false @@ -156,6 +178,20 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.string "typeName", :limit => 50 end + create_table "audit_events", :force => true do |t| + t.integer "author_id", :null => false + t.string "type", :null => false + t.integer "entity_id", :null => false + t.string "entity_type", :null => false + t.text "details" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "audit_events", ["author_id"], :name => "index_audit_events_on_author_id" + add_index "audit_events", ["entity_id", "entity_type"], :name => "index_audit_events_on_entity_id_and_entity_type" + add_index "audit_events", ["type"], :name => "index_audit_events_on_type" + create_table "auth_sources", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 60, :default => "", :null => false @@ -253,6 +289,17 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" add_index "boards", ["project_id"], :name => "boards_project_id" + create_table "broadcast_messages", :force => true do |t| + t.text "message", :null => false + t.datetime "starts_at" + t.datetime "ends_at" + t.integer "alert_type" + t.datetime "created_at" + t.datetime "updated_at" + t.string "color" + t.string "font" + end + create_table "bug_to_osps", :force => true do |t| t.integer "osp_id" t.integer "relative_memo_id" @@ -550,8 +597,11 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.integer "excellent_option", :default => 0 t.integer "is_copy", :default => 0 t.integer "visits", :default => 0 + t.integer "syllabus_id" end + add_index "courses", ["syllabus_id"], :name => "index_courses_on_syllabus_id" + create_table "custom_fields", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 30, :default => "", :null => false @@ -613,6 +663,15 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" + create_table "deploy_keys_projects", :force => true do |t| + t.integer "deploy_key_id", :null => false + t.integer "project_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "deploy_keys_projects", ["project_id"], :name => "index_deploy_keys_projects_on_project_id" + create_table "discuss_demos", :force => true do |t| t.string "title" t.text "body" @@ -662,6 +721,16 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "created_at" end + create_table "emails", :force => true do |t| + t.integer "user_id", :null => false + t.string "email", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "emails", ["email"], :name => "index_emails_on_email", :unique => true + add_index "emails", ["user_id"], :name => "index_emails_on_user_id" + create_table "enabled_modules", :force => true do |t| t.integer "project_id" t.string "name", :null => false @@ -684,6 +753,25 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" + create_table "events", :force => true do |t| + t.string "target_type" + t.integer "target_id" + t.string "title" + t.text "data" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "action" + t.integer "author_id" + end + + add_index "events", ["action"], :name => "index_events_on_action" + add_index "events", ["author_id"], :name => "index_events_on_author_id" + add_index "events", ["created_at"], :name => "index_events_on_created_at" + add_index "events", ["project_id"], :name => "index_events_on_project_id" + add_index "events", ["target_id"], :name => "index_events_on_target_id" + add_index "events", ["target_type"], :name => "index_events_on_target_type" + create_table "exercise_answers", :force => true do |t| t.integer "user_id" t.integer "exercise_question_id" @@ -786,6 +874,15 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type" add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at" + create_table "forked_project_links", :force => true do |t| + t.integer "forked_to_project_id", :null => false + t.integer "forked_from_project_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "forked_project_links", ["forked_to_project_id"], :name => "index_forked_project_links_on_forked_to_project_id", :unique => true + create_table "forums", :force => true do |t| t.string "name", :null => false t.text "description" @@ -915,6 +1012,17 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "updated_at", :null => false end + create_table "identities", :force => true do |t| + t.string "extern_uid" + t.string "provider" + t.integer "user_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "identities", ["created_at", "id"], :name => "index_identities_on_created_at_and_id" + add_index "identities", ["user_id"], :name => "index_identities_on_user_id" + create_table "invite_lists", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1058,6 +1166,20 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.integer "private", :default => 0 end + create_table "keys", :force => true do |t| + t.integer "user_id" + t.datetime "created_at" + t.datetime "updated_at" + t.text "key" + t.string "title" + t.string "type" + t.string "fingerprint" + t.boolean "public", :default => false, :null => false + end + + add_index "keys", ["created_at", "id"], :name => "index_keys_on_created_at_and_id" + add_index "keys", ["user_id"], :name => "index_keys_on_user_id" + create_table "kindeditor_assets", :force => true do |t| t.string "asset" t.integer "file_size" @@ -1069,6 +1191,27 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.integer "owner_type", :default => 0 end + create_table "label_links", :force => true do |t| + t.integer "label_id" + t.integer "target_id" + t.string "target_type" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "label_links", ["label_id"], :name => "index_label_links_on_label_id" + add_index "label_links", ["target_id", "target_type"], :name => "index_label_links_on_target_id_and_target_type" + + create_table "labels", :force => true do |t| + t.string "title" + t.string "color" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "labels", ["project_id"], :name => "index_labels_on_project_id" + create_table "member_roles", :force => true do |t| t.integer "member_id", :null => false t.integer "role_id", :null => false @@ -1119,6 +1262,47 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.integer "viewed_count", :default => 0 end + create_table "merge_request_diffs", :force => true do |t| + t.string "state" + t.text "st_commits", :limit => 2147483647 + t.text "st_diffs", :limit => 2147483647 + t.integer "merge_request_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "merge_request_diffs", ["merge_request_id"], :name => "index_merge_request_diffs_on_merge_request_id", :unique => true + + create_table "merge_requests", :force => true do |t| + t.string "target_branch", :null => false + t.string "source_branch", :null => false + t.integer "source_project_id", :null => false + t.integer "author_id" + t.integer "assignee_id" + t.string "title" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "milestone_id" + t.string "state" + t.string "merge_status" + t.integer "target_project_id", :null => false + t.integer "iid" + t.text "description" + t.integer "position", :default => 0 + t.datetime "locked_at" + end + + add_index "merge_requests", ["assignee_id"], :name => "index_merge_requests_on_assignee_id" + add_index "merge_requests", ["author_id"], :name => "index_merge_requests_on_author_id" + add_index "merge_requests", ["created_at", "id"], :name => "index_merge_requests_on_created_at_and_id" + add_index "merge_requests", ["created_at"], :name => "index_merge_requests_on_created_at" + add_index "merge_requests", ["milestone_id"], :name => "index_merge_requests_on_milestone_id" + add_index "merge_requests", ["source_branch"], :name => "index_merge_requests_on_source_branch" + add_index "merge_requests", ["source_project_id"], :name => "index_merge_requests_on_source_project_id" + add_index "merge_requests", ["target_branch"], :name => "index_merge_requests_on_target_branch" + add_index "merge_requests", ["target_project_id", "iid"], :name => "index_merge_requests_on_target_project_id_and_iid", :unique => true + add_index "merge_requests", ["title"], :name => "index_merge_requests_on_title" + create_table "message_alls", :force => true do |t| t.integer "user_id" t.integer "message_id" @@ -1153,6 +1337,39 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" add_index "messages", ["parent_id"], :name => "messages_parent_id" + create_table "milestones", :force => true do |t| + t.string "title", :null => false + t.integer "project_id", :null => false + t.text "description" + t.date "due_date" + t.datetime "created_at" + t.datetime "updated_at" + t.string "state" + t.integer "iid" + end + + add_index "milestones", ["created_at", "id"], :name => "index_milestones_on_created_at_and_id" + add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date" + add_index "milestones", ["project_id", "iid"], :name => "index_milestones_on_project_id_and_iid", :unique => true + add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id" + + create_table "namespaces", :force => true do |t| + t.string "name", :null => false + t.string "path", :null => false + t.integer "owner_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "type" + t.string "description", :default => "", :null => false + t.string "avatar" + end + + add_index "namespaces", ["created_at", "id"], :name => "index_namespaces_on_created_at_and_id" + add_index "namespaces", ["name"], :name => "index_namespaces_on_name", :unique => true + add_index "namespaces", ["owner_id"], :name => "index_namespaces_on_owner_id" + add_index "namespaces", ["path"], :name => "index_namespaces_on_path", :unique => true + add_index "namespaces", ["type"], :name => "index_namespaces_on_type" + create_table "news", :force => true do |t| t.integer "project_id" t.string "title", :limit => 60, :default => "", :null => false @@ -1178,6 +1395,31 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "updated_at", :null => false end + create_table "notes", :force => true do |t| + t.text "note" + t.string "noteable_type" + t.integer "author_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "project_id" + t.string "attachment" + t.string "line_code" + t.string "commit_id" + t.integer "noteable_id" + t.boolean "system", :default => false, :null => false + t.text "st_diff", :limit => 2147483647 + end + + add_index "notes", ["author_id"], :name => "index_notes_on_author_id" + add_index "notes", ["commit_id"], :name => "index_notes_on_commit_id" + add_index "notes", ["created_at", "id"], :name => "index_notes_on_created_at_and_id" + add_index "notes", ["created_at"], :name => "index_notes_on_created_at" + add_index "notes", ["noteable_id", "noteable_type"], :name => "index_notes_on_noteable_id_and_noteable_type" + add_index "notes", ["noteable_type"], :name => "index_notes_on_noteable_type" + add_index "notes", ["project_id", "noteable_type"], :name => "index_notes_on_project_id_and_noteable_type" + add_index "notes", ["project_id"], :name => "index_notes_on_project_id" + add_index "notes", ["updated_at"], :name => "index_notes_on_updated_at" + create_table "notificationcomments", :force => true do |t| t.string "notificationcommented_type" t.integer "notificationcommented_id" @@ -1187,6 +1429,49 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "updated_at", :null => false end + create_table "oauth_access_grants", :force => true do |t| + t.integer "resource_owner_id", :null => false + t.integer "application_id", :null => false + t.string "token", :null => false + t.integer "expires_in", :null => false + t.text "redirect_uri", :null => false + t.datetime "created_at", :null => false + t.datetime "revoked_at" + t.string "scopes" + end + + add_index "oauth_access_grants", ["token"], :name => "index_oauth_access_grants_on_token", :unique => true + + create_table "oauth_access_tokens", :force => true do |t| + t.integer "resource_owner_id" + t.integer "application_id" + t.string "token", :null => false + t.string "refresh_token" + t.integer "expires_in" + t.datetime "revoked_at" + t.datetime "created_at", :null => false + t.string "scopes" + end + + add_index "oauth_access_tokens", ["refresh_token"], :name => "index_oauth_access_tokens_on_refresh_token", :unique => true + add_index "oauth_access_tokens", ["resource_owner_id"], :name => "index_oauth_access_tokens_on_resource_owner_id" + add_index "oauth_access_tokens", ["token"], :name => "index_oauth_access_tokens_on_token", :unique => true + + create_table "oauth_applications", :force => true do |t| + t.string "name", :null => false + t.string "uid", :null => false + t.string "secret", :null => false + t.text "redirect_uri", :null => false + t.string "scopes", :default => "", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "owner_id" + t.string "owner_type" + end + + add_index "oauth_applications", ["owner_id", "owner_type"], :name => "index_oauth_applications_on_owner_id_and_owner_type" + add_index "oauth_applications", ["uid"], :name => "index_oauth_applications_on_uid", :unique => true + create_table "onclick_times", :force => true do |t| t.integer "user_id" t.datetime "onclick_time" @@ -1344,6 +1629,23 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.integer "allow_teacher", :default => 0 end + create_table "permissions", :force => true do |t| + t.string "controller", :limit => 30, :default => "", :null => false + t.string "action", :limit => 30, :default => "", :null => false + t.string "description", :limit => 60, :default => "", :null => false + t.boolean "is_public", :default => false, :null => false + t.integer "sort", :default => 0, :null => false + t.boolean "mail_option", :default => false, :null => false + t.boolean "mail_enabled", :default => false, :null => false + end + + create_table "permissions_roles", :id => false, :force => true do |t| + t.integer "permission_id", :default => 0, :null => false + t.integer "role_id", :default => 0, :null => false + end + + add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id" + create_table "phone_app_versions", :force => true do |t| t.string "version" t.text "description" @@ -1426,6 +1728,11 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "updated_at", :null => false end + create_table "project_import_data", :force => true do |t| + t.integer "project_id" + t.text "data" + end + create_table "project_infos", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1516,6 +1823,16 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" + create_table "protected_branches", :force => true do |t| + t.integer "project_id", :null => false + t.string "name", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "developers_can_push", :default => false, :null => false + end + + add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id" + create_table "queries", :force => true do |t| t.integer "project_id" t.string "name", :default => "", :null => false @@ -1650,6 +1967,25 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.integer "is_teacher_score", :default => 0 end + create_table "services", :force => true do |t| + t.string "type" + t.string "title" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "active", :default => false, :null => false + t.text "properties" + t.boolean "template", :default => false + t.boolean "push_events", :default => true + t.boolean "issues_events", :default => true + t.boolean "merge_requests_events", :default => true + t.boolean "tag_push_events", :default => true + t.boolean "note_events", :default => true, :null => false + end + + add_index "services", ["created_at", "id"], :name => "index_services_on_created_at_and_id" + add_index "services", ["project_id"], :name => "index_services_on_project_id" + create_table "settings", :force => true do |t| t.string "name", :default => "", :null => false t.text "value" @@ -1688,6 +2024,26 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "updated_at", :null => false end + create_table "snippets", :force => true do |t| + t.string "title" + t.text "content", :limit => 2147483647 + t.integer "author_id", :null => false + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "file_name" + t.datetime "expires_at" + t.string "type" + t.integer "visibility_level", :default => 0, :null => false + end + + add_index "snippets", ["author_id"], :name => "index_snippets_on_author_id" + add_index "snippets", ["created_at", "id"], :name => "index_snippets_on_created_at_and_id" + add_index "snippets", ["created_at"], :name => "index_snippets_on_created_at" + add_index "snippets", ["expires_at"], :name => "index_snippets_on_expires_at" + add_index "snippets", ["project_id"], :name => "index_snippets_on_project_id" + add_index "snippets", ["visibility_level"], :name => "index_snippets_on_visibility_level" + create_table "softapplications", :force => true do |t| t.string "name" t.text "description" @@ -1826,6 +2182,27 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "updated_at", :null => false end + create_table "subscriptions", :force => true do |t| + t.integer "user_id" + t.integer "subscribable_id" + t.string "subscribable_type" + t.boolean "subscribed" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id"], :name => "subscriptions_user_id_and_ref_fields", :unique => true + + create_table "syllabuses", :force => true do |t| + t.string "title" + t.text "description" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "syllabuses", ["user_id"], :name => "index_syllabuses_on_user_id" + create_table "system_messages", :force => true do |t| t.integer "user_id" t.string "content" @@ -2066,6 +2443,17 @@ ActiveRecord::Schema.define(:version => 20160612043259) do add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" add_index "users", ["type"], :name => "index_users_on_type" + create_table "users_star_projects", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "users_star_projects", ["project_id"], :name => "index_users_star_projects_on_project_id" + add_index "users_star_projects", ["user_id", "project_id"], :name => "index_users_star_projects_on_user_id_and_project_id", :unique => true + add_index "users_star_projects", ["user_id"], :name => "index_users_star_projects_on_user_id" + create_table "versions", :force => true do |t| t.integer "project_id", :default => 0, :null => false t.string "name", :default => "", :null => false @@ -2117,6 +2505,23 @@ ActiveRecord::Schema.define(:version => 20160612043259) do t.datetime "updated_at", :null => false end + create_table "web_hooks", :force => true do |t| + t.string "url" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "type", :default => "ProjectHook" + t.integer "service_id" + t.boolean "push_events", :default => true, :null => false + t.boolean "issues_events", :default => false, :null => false + t.boolean "merge_requests_events", :default => false, :null => false + t.boolean "tag_push_events", :default => false + t.boolean "note_events", :default => false, :null => false + end + + add_index "web_hooks", ["created_at", "id"], :name => "index_web_hooks_on_created_at_and_id" + add_index "web_hooks", ["project_id"], :name => "index_web_hooks_on_project_id" + create_table "wechat_logs", :force => true do |t| t.string "openid", :null => false t.text "request_raw" From 44334913ee21681bc370a878179ed638b09e8534 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 21 Jun 2016 14:28:26 +0800 Subject: [PATCH 20/75] =?UTF-8?q?=E6=9C=AA=E8=AF=BB=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=BC=8F=E4=BA=86=E4=B8=80=E6=9D=A1=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layouts/_show_messages_list.html.erb | 200 +++++++++--------- 1 file changed, 101 insertions(+), 99 deletions(-) diff --git a/app/views/layouts/_show_messages_list.html.erb b/app/views/layouts/_show_messages_list.html.erb index f67250e46..a4df961d3 100644 --- a/app/views/layouts/_show_messages_list.html.erb +++ b/app/views/layouts/_show_messages_list.html.erb @@ -5,18 +5,20 @@ From 7e25ec1a001138e96d7751e620fd7e3e7052f239 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 21 Jun 2016 15:07:37 +0800 Subject: [PATCH 21/75] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8A=A5500?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 29e6a4980..ba1a51343 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1489,8 +1489,8 @@ class UsersController < ApplicationController # 减少数据库交互 watched_user_ids = User.watched_by(@user.id).count == 0 ? " " : ("," + User.watched_by(@user.id).map{|u| u.id.to_s }.join(',')) user_ids = "(" + @user.id.to_s + watched_user_ids + ")" - watched_user_blog_ids = Blog.select("id").where("author_id in #{user_ids}").map { |blog| blog.id}.join(",") - blog_ids = "(" + watched_user_blog_ids + ")" + watched_user_blog_ids = Blog.select("id").where("author_id in #{user_ids}") + blog_ids = watched_user_blog_ids.empty? ? "(-1)" : "(" + watched_user_blog_ids.map { |blog| blog.id}.join(",") + ")" @user_activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" + "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+ From 26b7c3e70b5eae994a0667e838faa9a2e8c8a38b Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 21 Jun 2016 16:46:34 +0800 Subject: [PATCH 22/75] aqulity analysis --- .../quality_analyses_controller.rb | 49 +++++++++---- .../repositories/_quality_analyses.html.erb | 2 +- config.xml | 69 ------------------- 3 files changed, 35 insertions(+), 85 deletions(-) delete mode 100644 config.xml diff --git a/app/controllers/quality_analyses_controller.rb b/app/controllers/quality_analyses_controller.rb index 962ce2524..cba3cd537 100644 --- a/app/controllers/quality_analyses_controller.rb +++ b/app/controllers/quality_analyses_controller.rb @@ -1,46 +1,55 @@ class QualityAnalysesController < ApplicationController before_filter :find_project_by_project_id#, :except => [:getattachtype] + before_filter :authorize layout "base_projects" include ApplicationHelper require 'jenkins_api_client' require 'nokogiri' + require 'json' + require 'open-uri' def new end def create + @client = JenkinsApi::Client.new(:server_url => 'http://123.59.135.93:8890', + :username => "temp", + :password => '123123') + #@client.exists?(job_name) + @g = Gitlab.client gitlab_address = Redmine::Configuration['gitlab_address'] user_name = User.find(params[:user_id]).try(:login) branch = params[:branch].nil? ? "master" : params[:branch] language = params[:language] path = params[:path] - properties = "sonar.projectKey=#{user_name}:#{@project.name} - sonar.projectName=My #{@project.name} - sonar.projectVersion=1.11 + identifier = params[:identifier] + properties = "sonar.projectKey=#{user_name}:#{identifier} + sonar.projectName=#{user_name}:#{identifier} + sonar.projectVersion=1.0 sonar.sources=#{path} - sonar.language=#{language} + sonar.language=#{language.downcase} sonar.sourceEncoding=utf-8" - git_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+@repository.identifier+"."+"git" - @client = JenkinsApi::Client.new(:server_url => 'http://123.59.135.93:8890', - :username => user_name, - :password => '') + git_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+ identifier+"."+"git" + - # modify config + # # modify config @doc = Nokogiri::XML(File.open(File.join(Rails.root, 'tmp', 'config.xml'))) @doc.at_xpath("//hudson.plugins.git.UserRemoteConfig/url").content = git_url @doc.at_xpath("//hudson.plugins.git.BranchSpec/name").content = "*/#{branch}" - @doc.at_xpath("//hudson.plugins.git.BranchSpec/properties").content = properties - sonar_properties = @doc.xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").text #sonar-properties + @doc.at_xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").content = properties #sonar-properties # replace config.xml of jenkins - @client = @client.job.create("tesc_create", File.read(File.join(Rails.root, 'tmp', 'config.xml'))) - - + @client = @client.job.create("#{user_name}_#{identifier}", @doc.to_xml) + # relace gitlab hook + # genkins address + @g.add_project_hook(@project.gpid,"http://123.59.135.93:8890/project/#{user_name}_#{identifier}") end def index - + data = open('http://123.59.135.93:8891/api/resources/index?resource=my:project985&depth=-1&metrics=complexity,class_complexity,lines,comment_lines,blocker_violations').read + cc=JSON.parse(data) + p cc end # Find project of id params[:project_id] @@ -49,4 +58,14 @@ class QualityAnalysesController < ApplicationController rescue ActiveRecord::RecordNotFound render_404 end + + # Authorize the user for the requested action + def authorize(ctrl = params[:controller], action = params[:action], global = false) + unless @project.archived? && @project.gpid.nil? + true + else + render_403 :message => :notice_not_authorized_archived_project + end + end + end diff --git a/app/views/repositories/_quality_analyses.html.erb b/app/views/repositories/_quality_analyses.html.erb index 56951f3b6..7809c5e36 100644 --- a/app/views/repositories/_quality_analyses.html.erb +++ b/app/views/repositories/_quality_analyses.html.erb @@ -1,4 +1,4 @@ -<%= form_tag( url_for(:controller => 'quality_analyses', :action => 'create', :project_id => @project.id), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> +<%= form_tag( url_for(:controller => 'quality_analyses', :action => 'create', :project_id => @project.id, :identifier => @repository.identifier, :user_id => User.current.id), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch' %> <%= select_tag :language, options_for_select(["Java","C","PHP", "Web"]), :id => 'branch' %> diff --git a/config.xml b/config.xml deleted file mode 100644 index 7e0029986..000000000 --- a/config.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - false - - - trustie-gitlab - - - - 2 - - - http://192.168.8.158:8889/root/badboy.git - - - - - */master - - - false - - - - true - false - false - false - - - - true - true - never - true - true - true - false - true - All - - - - false - - - false - - - - - sonar.projectKey=my:project985 - sonar.projectName=My project985 - sonar.projectVersion=1.11 - sonar.sources=src - sonar.language=java - sonar.sourceEncoding=utf-8 - - - - (Inherit From Job) - - - - - - From e3b6bd19e13742316117ac5a1ac361ef5121f6eb Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 21 Jun 2016 16:50:45 +0800 Subject: [PATCH 23/75] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E5=88=86=E6=94=AF=E6=8E=A7=E5=88=B6=E5=99=A8=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- ...analyses_controller.rb => quality_analysis_controller.rb} | 2 +- app/helpers/quality_analyses_helper.rb | 2 -- app/helpers/quality_analysis_helper.rb | 2 ++ .../{quality_analyses => quality_analysis}/index.html.erb | 0 app/views/repositories/_quality_analyses.html.erb | 2 +- config/routes.rb | 4 ++-- spec/controllers/quality_analyses_controller_spec.rb | 5 ----- spec/controllers/quality_analysis_controller_spec.rb | 5 +++++ 9 files changed, 12 insertions(+), 12 deletions(-) rename app/controllers/{quality_analyses_controller.rb => quality_analysis_controller.rb} (96%) delete mode 100644 app/helpers/quality_analyses_helper.rb create mode 100644 app/helpers/quality_analysis_helper.rb rename app/views/{quality_analyses => quality_analysis}/index.html.erb (100%) delete mode 100644 spec/controllers/quality_analyses_controller_spec.rb create mode 100644 spec/controllers/quality_analysis_controller_spec.rb diff --git a/Gemfile b/Gemfile index 39234b05e..37ce76624 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ gem 'net-ssh' gem 'jenkins_api_client' gem 'nokogiri' -gem 'certified' +# gem 'certified' gem 'wechat',path: 'lib/wechat' gem 'grack', path:'lib/grack' diff --git a/app/controllers/quality_analyses_controller.rb b/app/controllers/quality_analysis_controller.rb similarity index 96% rename from app/controllers/quality_analyses_controller.rb rename to app/controllers/quality_analysis_controller.rb index 962ce2524..0eff67be7 100644 --- a/app/controllers/quality_analyses_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -1,4 +1,4 @@ -class QualityAnalysesController < ApplicationController +class QualityAnalysisController < ApplicationController before_filter :find_project_by_project_id#, :except => [:getattachtype] layout "base_projects" include ApplicationHelper diff --git a/app/helpers/quality_analyses_helper.rb b/app/helpers/quality_analyses_helper.rb deleted file mode 100644 index a47f571bb..000000000 --- a/app/helpers/quality_analyses_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module QualityAnalysesHelper -end diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb new file mode 100644 index 000000000..f2a1effba --- /dev/null +++ b/app/helpers/quality_analysis_helper.rb @@ -0,0 +1,2 @@ +module QualityAnalysisHelper +end diff --git a/app/views/quality_analyses/index.html.erb b/app/views/quality_analysis/index.html.erb similarity index 100% rename from app/views/quality_analyses/index.html.erb rename to app/views/quality_analysis/index.html.erb diff --git a/app/views/repositories/_quality_analyses.html.erb b/app/views/repositories/_quality_analyses.html.erb index 56951f3b6..bf45ba167 100644 --- a/app/views/repositories/_quality_analyses.html.erb +++ b/app/views/repositories/_quality_analyses.html.erb @@ -1,4 +1,4 @@ -<%= form_tag( url_for(:controller => 'quality_analyses', :action => 'create', :project_id => @project.id), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> +<%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch' %> <%= select_tag :language, options_for_select(["Java","C","PHP", "Web"]), :id => 'branch' %> diff --git a/config/routes.rb b/config/routes.rb index b32816673..52629604c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -782,7 +782,7 @@ RedmineApp::Application.routes.draw do end end - resources :quality_analyses, :only => [:index, :new, :create] do + resources :quality_analysis, :only => [:index, :new, :create] do collection do end member do @@ -909,7 +909,7 @@ RedmineApp::Application.routes.draw do # repositories routes get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats', :as => "stats_repository_project" - get 'projects/:id/repository/:repository_id/quality_analyses', :to => 'repositories#quality_analyses', :as => "quality_analyses" + get 'projects/:id/repository/:repository_id/quality_analysis', :to => 'repositories#quality_analysis', :as => "quality_analysis" get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph' get 'projects/:id/repository/:repository_id/changes(/*path(.:ext))', :to => 'repositories#changes' diff --git a/spec/controllers/quality_analyses_controller_spec.rb b/spec/controllers/quality_analyses_controller_spec.rb deleted file mode 100644 index c5076c53f..000000000 --- a/spec/controllers/quality_analyses_controller_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe QualityAnalysesController, :type => :controller do - -end diff --git a/spec/controllers/quality_analysis_controller_spec.rb b/spec/controllers/quality_analysis_controller_spec.rb new file mode 100644 index 000000000..d25575a85 --- /dev/null +++ b/spec/controllers/quality_analysis_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe QualityAnalysisController, :type => :controller do + +end From 494b69c89baa0008facc6591f852206924e56a6b Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 22 Jun 2016 09:12:57 +0800 Subject: [PATCH 24/75] =?UTF-8?q?sonar=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/quality_analysis_controller.rb | 4 ++-- app/views/quality_analysis/index.html.erb | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 21e094407..be3dee0dd 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -48,8 +48,8 @@ class QualityAnalysisController < ApplicationController def index data = open('http://123.59.135.93:8891/api/resources/index?resource=my:project985&depth=-1&metrics=complexity,class_complexity,lines,comment_lines,blocker_violations').read - cc=JSON.parse(data) - p cc + @cc =JSON.parse(data) + end # Find project of id params[:project_id] diff --git a/app/views/quality_analysis/index.html.erb b/app/views/quality_analysis/index.html.erb index e69de29bb..1f70644db 100644 --- a/app/views/quality_analysis/index.html.erb +++ b/app/views/quality_analysis/index.html.erb @@ -0,0 +1,3 @@ +<% @cc.each do |c| %> + <%= c %> +<% end %> \ No newline at end of file From 9e7cde60563795c2c9d2e740f86a63ecdb26bd5f Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 22 Jun 2016 11:25:59 +0800 Subject: [PATCH 25/75] stable version for sonar --- app/controllers/quality_analysis_controller.rb | 8 ++++---- app/controllers/repositories_controller.rb | 8 ++++---- app/models/quality_analysis.rb | 3 +++ ...y_analyses.html.erb => _quality_analysis.html.erb} | 2 +- ...uality_analyses.js.erb => quality_analysis.js.erb} | 2 +- app/views/repositories/show.html.erb | 2 +- db/migrate/20160622015019_create_quality_analyses.rb | 11 +++++++++++ db/schema.rb | 10 +++++++++- spec/factories/quality_analyses.rb | 7 +++++++ spec/models/quality_analysis_spec.rb | 5 +++++ 10 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 app/models/quality_analysis.rb rename app/views/repositories/{_quality_analyses.html.erb => _quality_analysis.html.erb} (77%) rename app/views/repositories/{quality_analyses.js.erb => quality_analysis.js.erb} (89%) create mode 100644 db/migrate/20160622015019_create_quality_analyses.rb create mode 100644 spec/factories/quality_analyses.rb create mode 100644 spec/models/quality_analysis_spec.rb diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 21e094407..77acdfd05 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -30,20 +30,20 @@ class QualityAnalysisController < ApplicationController sonar.sources=#{path} sonar.language=#{language.downcase} sonar.sourceEncoding=utf-8" - git_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+ identifier+"."+"git" + git_url = gitlab_address.to_s+"/"+@project.owner.to_s+"/"+ identifier + "."+"git" - - # # modify config + # # # modify config @doc = Nokogiri::XML(File.open(File.join(Rails.root, 'tmp', 'config.xml'))) @doc.at_xpath("//hudson.plugins.git.UserRemoteConfig/url").content = git_url @doc.at_xpath("//hudson.plugins.git.BranchSpec/name").content = "*/#{branch}" @doc.at_xpath("//hudson.plugins.sonar.SonarRunnerBuilder/properties").content = properties #sonar-properties - + # # replace config.xml of jenkins @client = @client.job.create("#{user_name}_#{identifier}", @doc.to_xml) # relace gitlab hook # genkins address @g.add_project_hook(@project.gpid,"http://123.59.135.93:8890/project/#{user_name}_#{identifier}") + QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier) end def index diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 3f630ce51..cbb5b2f69 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -30,13 +30,13 @@ class RepositoriesController < ApplicationController menu_item :settings, :only => [:new, :create, :edit, :update, :destroy, :committers] default_search_scope :changesets - before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo, :stats, :quality_analyses] + before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo, :stats, :quality_analysis] before_filter :find_repository, :only => [:edit, :update, :destroy, :committers] before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked, :project_archive] before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] - before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff, :project_archive, :quality_analyses] + before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff, :project_archive, :quality_analysis] # 链接gitlab - before_filter :connect_gitlab, :only => [:quality_analyses] + before_filter :connect_gitlab, :only => [:quality_analysis] accept_rss_auth :revisions # hidden repositories filter // 隐藏代码过滤器 before_filter :check_hidden_repo, :only => [:show, :stats, :revisions, :revision, :diff ] @@ -309,7 +309,7 @@ update end end - def quality_analyses + def quality_analysis gitlab_branches = @g.branches(@project.gpid) @branch_names = gitlab_branches.map{|b| b.name} @gitlab_default_branch = @g.project(@project.gpid).default_branch diff --git a/app/models/quality_analysis.rb b/app/models/quality_analysis.rb new file mode 100644 index 000000000..45778ff3f --- /dev/null +++ b/app/models/quality_analysis.rb @@ -0,0 +1,3 @@ +class QualityAnalysis < ActiveRecord::Base + attr_accessible :author_login, :project_id, :rep_identifier +end diff --git a/app/views/repositories/_quality_analyses.html.erb b/app/views/repositories/_quality_analysis.html.erb similarity index 77% rename from app/views/repositories/_quality_analyses.html.erb rename to app/views/repositories/_quality_analysis.html.erb index bf45ba167..64dd837b7 100644 --- a/app/views/repositories/_quality_analyses.html.erb +++ b/app/views/repositories/_quality_analysis.html.erb @@ -1,4 +1,4 @@ -<%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> +<%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id, :user_id => User.current.id, :identifier => @repository.identifier), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch' %> <%= select_tag :language, options_for_select(["Java","C","PHP", "Web"]), :id => 'branch' %> diff --git a/app/views/repositories/quality_analyses.js.erb b/app/views/repositories/quality_analysis.js.erb similarity index 89% rename from app/views/repositories/quality_analyses.js.erb rename to app/views/repositories/quality_analysis.js.erb index 89d8685cf..c9427c246 100644 --- a/app/views/repositories/quality_analyses.js.erb +++ b/app/views/repositories/quality_analysis.js.erb @@ -1,4 +1,4 @@ -$('#ajax-modal').html('<%= escape_javascript( render :partial => 'repositories/quality_analyses', :locals => {}) %>'); +$('#ajax-modal').html('<%= escape_javascript( render :partial => 'repositories/quality_analysis', :locals => {}) %>'); showModal('ajax-modal', '615px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before(""); diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index d1c041d73..1e874544a 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -2,7 +2,7 @@

<%= render :partial => 'breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>

ZIP下载 - <%= link_to "质量分析", quality_analyses_path(:id => @project.id, :repository_id => @repository.identifier), :remote => true, :class => "btn_zipdown fr" %> + <%= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier), :remote => true, :class => "btn_zipdown fr" %>
diff --git a/db/migrate/20160622015019_create_quality_analyses.rb b/db/migrate/20160622015019_create_quality_analyses.rb new file mode 100644 index 000000000..6316d5764 --- /dev/null +++ b/db/migrate/20160622015019_create_quality_analyses.rb @@ -0,0 +1,11 @@ +class CreateQualityAnalyses < ActiveRecord::Migration + def change + create_table :quality_analyses do |t| + t.integer :project_id + t.string :author_login + t.string :rep_identifier + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index e8e7e25cb..51e0682d0 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160613065840) do +ActiveRecord::Schema.define(:version => 20160622015019) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1833,6 +1833,14 @@ ActiveRecord::Schema.define(:version => 20160613065840) do add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id" + create_table "quality_analyses", :force => true do |t| + t.integer "project_id" + t.string "author_login" + t.string "rep_identifier" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "queries", :force => true do |t| t.integer "project_id" t.string "name", :default => "", :null => false diff --git a/spec/factories/quality_analyses.rb b/spec/factories/quality_analyses.rb new file mode 100644 index 000000000..a48e6e33f --- /dev/null +++ b/spec/factories/quality_analyses.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :quality_analyasis, class: 'QualityAnalysis' do + project_id 1 + author_login "MyString" + rep_identifier "MyString" + end +end diff --git a/spec/models/quality_analysis_spec.rb b/spec/models/quality_analysis_spec.rb new file mode 100644 index 000000000..d18ede452 --- /dev/null +++ b/spec/models/quality_analysis_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe QualityAnalysis, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end From ce6e6116b5836819c65338cb1739ad3a7d8678db Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 22 Jun 2016 17:09:54 +0800 Subject: [PATCH 26/75] get data from sonar API --- .../quality_analysis_controller.rb | 25 ++++++++++++++----- app/models/quality_analysis.rb | 2 +- app/models/sonar_analysis.rb | 3 +++ app/views/quality_analysis/index.html.erb | 13 +++++++--- app/views/quality_analysis/show.html.erb | 0 ...20160622033322_create_quality_analyses.rb} | 0 ...4138_add_jk_version_to_quality_analysis.rb | 5 ++++ db/schema.rb | 8 +++--- 8 files changed, 43 insertions(+), 13 deletions(-) create mode 100644 app/models/sonar_analysis.rb create mode 100644 app/views/quality_analysis/show.html.erb rename db/migrate/{20160622015019_create_quality_analyses.rb => 20160622033322_create_quality_analyses.rb} (100%) create mode 100644 db/migrate/20160622074138_add_jk_version_to_quality_analysis.rb diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 1cf38308e..6be51da70 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -8,7 +8,7 @@ class QualityAnalysisController < ApplicationController require 'json' require 'open-uri' - def new + def show end @@ -24,9 +24,11 @@ class QualityAnalysisController < ApplicationController language = params[:language] path = params[:path] identifier = params[:identifier] + qa = QualityAnalysis.where(:project_id => @project.id).first + version = qa.sonar_version + 1 properties = "sonar.projectKey=#{user_name}:#{identifier} sonar.projectName=#{user_name}:#{identifier} - sonar.projectVersion=1.0 + sonar.projectVersion=#{version} sonar.sources=#{path} sonar.language=#{language.downcase} sonar.sourceEncoding=utf-8" @@ -43,13 +45,24 @@ class QualityAnalysisController < ApplicationController # relace gitlab hook # genkins address @g.add_project_hook(@project.gpid,"http://123.59.135.93:8890/project/#{user_name}_#{identifier}") - QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier) + if qa.nil? + QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier, :version => version) + else + qa.update_attribute(:version, version) + end end def index - data = open('http://123.59.135.93:8891/api/resources/index?resource=my:project985&depth=-1&metrics=complexity,class_complexity,lines,comment_lines,blocker_violations').read - @cc =JSON.parse(data) - + if params[:name].nil? + @name_flag = true + projects_date = open("http://123.59.135.93:8891/api/projects/index").read + @results = JSON.parse(projects_date) + else + @name_flag = false + project_key = params[:name] + data = open("http://123.59.135.93:8891/api/resources/index?resource=#{project_key}&depth=-1&metrics=complexity,class_complexity,lines,comment_lines,blocker_violations").read + @cc =JSON.parse(data) + end end # Find project of id params[:project_id] diff --git a/app/models/quality_analysis.rb b/app/models/quality_analysis.rb index 45778ff3f..09803467e 100644 --- a/app/models/quality_analysis.rb +++ b/app/models/quality_analysis.rb @@ -1,3 +1,3 @@ class QualityAnalysis < ActiveRecord::Base - attr_accessible :author_login, :project_id, :rep_identifier + attr_accessible :author_login, :project_id, :rep_identifier, :sonar_version end diff --git a/app/models/sonar_analysis.rb b/app/models/sonar_analysis.rb new file mode 100644 index 000000000..0bb2089de --- /dev/null +++ b/app/models/sonar_analysis.rb @@ -0,0 +1,3 @@ +class SonarAnalysis < ActiveRecord::Base + attr_accessible :author_login, :project_id, :rep_identifier +end diff --git a/app/views/quality_analysis/index.html.erb b/app/views/quality_analysis/index.html.erb index 1f70644db..627d33d96 100644 --- a/app/views/quality_analysis/index.html.erb +++ b/app/views/quality_analysis/index.html.erb @@ -1,3 +1,10 @@ -<% @cc.each do |c| %> - <%= c %> -<% end %> \ No newline at end of file +<% if @name_flag %> + <%= @results.each do |result| %> +

+ <%=link_to result["k"], project_quality_analysis_path(:name => result["k"]) %> +

+ <% end %> +<% else %> + <%= @cc %> +<% end %> + diff --git a/app/views/quality_analysis/show.html.erb b/app/views/quality_analysis/show.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/db/migrate/20160622015019_create_quality_analyses.rb b/db/migrate/20160622033322_create_quality_analyses.rb similarity index 100% rename from db/migrate/20160622015019_create_quality_analyses.rb rename to db/migrate/20160622033322_create_quality_analyses.rb diff --git a/db/migrate/20160622074138_add_jk_version_to_quality_analysis.rb b/db/migrate/20160622074138_add_jk_version_to_quality_analysis.rb new file mode 100644 index 000000000..838d6d896 --- /dev/null +++ b/db/migrate/20160622074138_add_jk_version_to_quality_analysis.rb @@ -0,0 +1,5 @@ +class AddJkVersionToQualityAnalysis < ActiveRecord::Migration + def change + add_column :quality_analyses, :sonar_version, :integer, :default => false + end +end diff --git a/db/schema.rb b/db/schema.rb index 51e0682d0..01a001769 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160622015019) do +ActiveRecord::Schema.define(:version => 20160622074138) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1837,8 +1837,10 @@ ActiveRecord::Schema.define(:version => 20160622015019) do t.integer "project_id" t.string "author_login" t.string "rep_identifier" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.float "version", :default => 0.0 + t.integer "sonar_version", :default => 1 end create_table "queries", :force => true do |t| From 9f15a8aa4e41d0d19f86447be297669d5a08f81e Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 22 Jun 2016 17:40:13 +0800 Subject: [PATCH 27/75] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E5=88=86=E6=9E=90=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality_analysis/_result_list.html.erb | 0 app/views/quality_analysis/_show.html.erb | 148 ++++++++++++++++++ app/views/quality_analysis/index.html.erb | 2 +- .../repositories/_quality_analysis.html.erb | 32 +++- public/images/code-analysis-icon.png | Bin 0 -> 1682 bytes public/stylesheets/project.css | 22 +++ public/stylesheets/public.css | 3 + 7 files changed, 199 insertions(+), 8 deletions(-) create mode 100644 app/views/quality_analysis/_result_list.html.erb create mode 100644 app/views/quality_analysis/_show.html.erb create mode 100644 public/images/code-analysis-icon.png diff --git a/app/views/quality_analysis/_result_list.html.erb b/app/views/quality_analysis/_result_list.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb new file mode 100644 index 000000000..4cb86f22c --- /dev/null +++ b/app/views/quality_analysis/_show.html.erb @@ -0,0 +1,148 @@ +
+
+

SonarQube质量分析

+
+
+
+ + 分支: + +
+
+ 开始分析 +
+
项目代码质量分析报告
+
概要信息
+
+
+

质量等级

+

A正常

+
+
+

复杂度

+

44正常

+
+
+

重复

+

44%正常

+
+
+

注释率

+

12%偏低

+
+
+
质量等级2/5分可定性评价为:质量中等
+
+
技术债务14天查看详情
+
质量问题130问题分类如下:
+
+
阻断4
+
严重75
+
主要428
+
次要225
+
信息114
+
+
+
代码规模可定性评价为:规模中等
+
+
+

代码行数

+

9,337

+
+
+

文件

+

10

+
+
+

目录

+

6

+
+
+

+

15

+
+
+

方法

+

36

+
+
+
贡献统计
+
+
    +
  •  
  • +
  • 代码行数
  • +
  • 引入质量问题数
  • +
  • 引入质量问题数/代码行数
  • +
    +
+
    +
  • +
    + +
    +
  • +
  • 18340
  • +
  • 230
  • +
  • .012540
  • +
    +
+
    +
  • +
    + +
    +
  • +
  • 834
  • +
  • 34
  • +
  • .04077
  • +
    +
+
    +
  • +
    + +
    +
  • +
  • 134
  • +
  • 10
  • +
  • .07462
  • +
    +
+
+
\ No newline at end of file diff --git a/app/views/quality_analysis/index.html.erb b/app/views/quality_analysis/index.html.erb index 627d33d96..3ce1a8e4a 100644 --- a/app/views/quality_analysis/index.html.erb +++ b/app/views/quality_analysis/index.html.erb @@ -5,6 +5,6 @@

<% end %> <% else %> - <%= @cc %> + <%= render "show" %> <% end %> diff --git a/app/views/repositories/_quality_analysis.html.erb b/app/views/repositories/_quality_analysis.html.erb index 64dd837b7..bf1b9ea41 100644 --- a/app/views/repositories/_quality_analysis.html.erb +++ b/app/views/repositories/_quality_analysis.html.erb @@ -1,7 +1,25 @@ -<%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id, :user_id => User.current.id, :identifier => @repository.identifier), :remote => true , :class => 'resourcesSearchloadBox mt10', :id => 'quality_analyses_form') do %> - - <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch' %> - <%= select_tag :language, options_for_select(["Java","C","PHP", "Web"]), :id => 'branch' %> - - -<% end %> \ No newline at end of file +
+
代码质量分析
+
+ <%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id, :user_id => User.current.id, :identifier => @repository.identifier), :remote => true, :id => 'quality_analyses_form') do %> +
+
+ +
+
+
+ <%= select_tag :branch, options_for_select(["#{@gitlab_default_branch}"]+ @branch_names, @rev), :id => 'branch', :class => "analysis-option-box" %> +
+
+
+
+ <%= select_tag :language, options_for_select(["Java","C","PHP", "Web"]), :id => 'branch', :class => "analysis-option-box" %> +
+
+ + +
+
+ <% end %> +
+
\ No newline at end of file diff --git a/public/images/code-analysis-icon.png b/public/images/code-analysis-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..18869da0e413a92e76acb80a4b2fa2c7ea4dbb62 GIT binary patch literal 1682 zcmb_dX;2eq7~Y0)ro$AgGCH1}HC7u?a*{|=!j(-Vl|)S97!O*OWQ9mJ8#fCi(5l6Q zqUdz2C~8I9A0BmTbwKKfU=>mEsMRq;00Y`01T-9iNgyQY1_Aq{^jE*x{jPbQ=Y78S zdv~@tRlXuDbZ#gB0AbQ(NI{M>$hYYI5VBuZJyc2#a|p4TP-2^iJQzoSL@kzqfKn9B zL=*_DwQOlXVgVq8s#B>6wJb%T!B9FJ#L&&Ckz@lvY`obBYqAjn%s?`A1|hY#`Wh9~ zX@%6aTp3el6d_r<+hOO1~MW6c6m07VEGG^2WhNnjRIM|B0{Jh;uE zf};>3TS$FtN-awTMHr5NTskL8!(_2Q9*@q7=JI%~Wgwf$Vl$ZJ!;4}?3%EQ1dpS7P zsAM!;yGfvcBxAA2m5`c65Jmxmk(ZZ8&*RWBJd?rV^Z7vyHam($M42oG0yak(OpC@9 zAjG7>bw)ym8Ni?-oPp&KLMrL>?GaGpgsj0dmL@V`3^QzGu;|R-k;Z{C*?&V(bOLQ6 z6v#Wj|0--!S&RrnftauyTti;mrbWR}Mu7-NU;@Kc7^WZ3VrmvfV5Th02#SbCQbE5CHYB=q^79E{WaGEet&a!z1P_@ zJmPMWud~COeQu9UqBwdBF29p?_Mv5PsAr`A^>A0Wl_%;sU+Fk-q`T}yi}Le*wJB~} zbFZtz@AtnM>ig~K@!pEd0iW-{^)AQm-EGbXuRSjZ>hHAoS*?y5 zug`P$`MHC2>fsli1D;on2`Np|HN%cB|Im=%?`ssTay@B$+;Mrhv#V8Wc!uT{UzH3# zeEcU~aOma+k9V+r+it(tYfDx($<$W9_^+>a^|>7#eYPj0y*KRx4G)Gp90ML_W8BKu zH*U4U+1}p1{%du9@5u9>KZ>eFPdEvI(YE9E2|Jkw6`_zT-|qacJ)m^sj{xAkaw(Lk zGB>{}U5njdPTO7qmLzQ7X=Q&FF=ah%$`yBOU7SC#t!u%SlGSbIGwVy0#Qu1@bbtJY zM@!n0yy83e#nh(C!oje(Fxg>Ro#l(7xXvTfoN(d?&nQKe3H;5J*@|-sUeDIkb)2c0 zlp2MVzY(sTMO*23RRsfXyXsZuZi(;3=^0J?X%BQ|qV0EQm zsPu(bS$?@avt^0hsfs+cv3CA+AcNDAtUqSE@0w>TFG{)SGZcJZ;JSC!2`07tu^;M)y!Lw@}fDE#kPopk)<=#%OX}kEu3-S zGL$1J`9`m2XFz4)txmT5N?HnH`E{@4!p;Y2^;MdWzuR3=S#!qOF#EKVcd8${6vo7k z4ecBe)#u*Z6LRzC4fQVJx9e%NDj&s139Z#%ga Tpie)c2mcaMu^c*|lwSBZiC*=^ literal 0 HcmV?d00001 diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index 90a94b52f..0774fa892 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -1246,3 +1246,25 @@ a.pages-big{ width:50px;} .red-cir-btn{ background:#e74c3c; padding:1px 5px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal;font-size:12px;} .green-cir-btn{ background:#28be6c; padding:1px 5px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal;font-size:12px;} + +/*20160622质量分析*/ +.analysis-tag-wrap {width:100%; color:#000; height:20px; line-height:20px; vertical-align:middle;} +.analysis-tag {width:10px; height:20px; background-color:#777;} +.analysis-block {padding:15px; border:1px solid #d9d9d9;} +.flex {display:flex;} +.analysis-genral {flex:1; display:block; text-align:center;} +.analysis-block-icon {background:url(../images/code-analysis-icon.png) -2px -8px no-repeat; width:14px; height:14px; display:inline-block; vertical-align:middle;} +.analysis-serious-icon {background:url(../images/code-analysis-icon.png) -2px -34px no-repeat; width:14px; height:14px; display:inline-block; vertical-align:middle;} +.analysis-main-icon {background:url(../images/code-analysis-icon.png) -2px -59px no-repeat; width:14px; height:14px; display:inline-block; vertical-align:middle;} +.analysis-secondary-icon {background:url(../images/code-analysis-icon.png) -2px -85px no-repeat; width:14px; height:14px; display:inline-block; vertical-align:middle;} +.analysis-info-icon {background:url(../images/code-analysis-icon.png) -2px -111px no-repeat; width:14px; height:14px; display:inline-block; vertical-align:middle;} +.quality-percentage {width:320px; height:14px; display:inline-block;} +.quality-percentage-rate {width:50%; height:14px; background-color:#0a6c99; display:inline-block;} +.image-cir {border-radius:50%;} +.analysis-genral-icon {position:absolute; padding:1px 5px; display:inline-block; top:5px;} +.contribute-list-avatar {width:80px; vertical-align:middle; text-align:center;} +.contribute-list-code {width:160px; vertical-align:middle; text-align:center;} +.contribute-list-problem {width:170px; vertical-align:middle; text-align:center;} +.contribute-list-rate {width:228px; vertical-align:middle; text-align:center;} +.contribute-list-height {height:80px;} +.contribute-list-line-height {line-height:80px;} \ No newline at end of file diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index d9306fa0b..e33ac601e 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -1161,3 +1161,6 @@ a.st_down{ display: block; width:8px; float:left; height:13px; background:url(.. .shadowbox_news_list li:hover{ background-color:#eee;} span.shadowbox_news_user{ color:#3b94d6;} a.shadowbox_news_all{ display:block; width:305px; height:40px; line-height:40px; color:#3b94d6; text-align:center;border-top:1px solid #eee;} + +/*20160622代码分析弹窗*/ +.analysis-option-box {width:100%; border:1px solid #ccc; padding:3px 5px;} From 3fe5d9a1a31d164cd12376a4524ac9b5d218e97b Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 23 Jun 2016 11:24:58 +0800 Subject: [PATCH 28/75] get date froma sonar --- .../quality_analysis_controller.rb | 8 +-- app/views/quality_analysis/_show.html.erb | 70 +++++-------------- app/views/quality_analysis/index.html.erb | 2 +- .../repositories/_quality_analysis.html.erb | 12 ++-- .../repositories/quality_analysis.js.erb | 2 +- 5 files changed, 30 insertions(+), 64 deletions(-) diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 6be51da70..fd000aa72 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -53,15 +53,15 @@ class QualityAnalysisController < ApplicationController end def index - if params[:name].nil? + if params[:resource_id].nil? @name_flag = true projects_date = open("http://123.59.135.93:8891/api/projects/index").read @results = JSON.parse(projects_date) else @name_flag = false - project_key = params[:name] - data = open("http://123.59.135.93:8891/api/resources/index?resource=#{project_key}&depth=-1&metrics=complexity,class_complexity,lines,comment_lines,blocker_violations").read - @cc =JSON.parse(data) + resource_id = params[:resource_id] + complexity_date = open("http://123.59.135.93:8891/api/resources/index?resource=139&depth=0&metrics=complexity,function_complexity,class_complexity,file_complexity,lines,file_line,files,functions,classes,directories").read + @complexity =JSON.parse(complexity_date).first end end diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 4cb86f22c..46a5e2e3d 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -1,51 +1,20 @@ -
+

lines: <%= @complexity["msr"][0]["frmt_val"] %>

+

files: <%= @complexity["msr"][2]["frmt_val"] %>

+

directories: <%= @complexity["msr"][3]["frmt_val"] %>

+

classes: <%= @complexity["msr"][1]["frmt_val"] %>

+

function: <%= @complexity["msr"][4]["frmt_val"] %>

+

total Complexity: <%= @complexity["msr"][5]["frmt_val"] %>

+

file_complexity: <%= @complexity["msr"][6]["frmt_val"] %>

+

class_complexity: <%= @complexity["msr"][7]["frmt_val"] %>

+

function_complexity: <%= @complexity["msr"][8]["frmt_val"] %>

+ + + +

SonarQube质量分析

-
-
- - 分支: - -
-
- 开始分析 + branch:master
项目代码质量分析报告
概要信息
@@ -83,23 +52,23 @@

代码行数

-

9,337

+

<%= @complexity["msr"][0]["frmt_val"] %>

文件

-

10

+

<%= @complexity["msr"][2]["frmt_val"] %>

目录

-

6

+

<%= @complexity["msr"][3]["frmt_val"] %>

-

15

+

<%= @complexity["msr"][1]["frmt_val"] %>

方法

-

36

+

<%= @complexity["msr"][4]["frmt_val"] %>

贡献统计
@@ -145,4 +114,3 @@
-
\ No newline at end of file diff --git a/app/views/quality_analysis/index.html.erb b/app/views/quality_analysis/index.html.erb index 3ce1a8e4a..e8fd5f8e2 100644 --- a/app/views/quality_analysis/index.html.erb +++ b/app/views/quality_analysis/index.html.erb @@ -1,7 +1,7 @@ <% if @name_flag %> <%= @results.each do |result| %>

- <%=link_to result["k"], project_quality_analysis_path(:name => result["k"]) %> + <%=link_to result["k"], project_quality_analysis_path(:resource_id => result["id"]) %>

<% end %> <% else %> diff --git a/app/views/repositories/_quality_analysis.html.erb b/app/views/repositories/_quality_analysis.html.erb index bf1b9ea41..7f6ab7ea1 100644 --- a/app/views/repositories/_quality_analysis.html.erb +++ b/app/views/repositories/_quality_analysis.html.erb @@ -1,7 +1,6 @@ -
-
代码质量分析
-
- <%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id, :user_id => User.current.id, :identifier => @repository.identifier), :remote => true, :id => 'quality_analyses_form') do %> +
代码质量分析
+
+ <%= form_tag( url_for(:controller => 'quality_analysis', :action => 'create', :project_id => @project.id, :user_id => User.current.id, :identifier => @repository.identifier), :remote => true, :id => 'quality_analyses_form') do %>
@@ -20,6 +19,5 @@
- <% end %> -
-
\ No newline at end of file + <% end %> +
diff --git a/app/views/repositories/quality_analysis.js.erb b/app/views/repositories/quality_analysis.js.erb index c9427c246..eff2825f6 100644 --- a/app/views/repositories/quality_analysis.js.erb +++ b/app/views/repositories/quality_analysis.js.erb @@ -2,7 +2,7 @@ $('#ajax-modal').html('<%= escape_javascript( render :partial => 'repositories/q showModal('ajax-modal', '615px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before(""); -$('#ajax-modal').parent().css("top","20%").css("left","42%").css("border","3px solid #269ac9"); +$('#ajax-modal').parent().css("top","20%").css("left","30%").css("border","3px solid #269ac9"); $('#ajax-modal').parent().addClass("popbox_polls"); From ad6e3c3364726eaffc3ddfe3f320268e319c8782 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 23 Jun 2016 13:52:03 +0800 Subject: [PATCH 29/75] =?UTF-8?q?=E8=B4=A8=E9=87=8F=E5=88=86=E6=9E=90?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/repositories/show.html.erb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index 1e874544a..d3ffdb5b9 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -2,8 +2,11 @@

<%= render :partial => 'breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>

ZIP下载 - <%= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier), :remote => true, :class => "btn_zipdown fr" %> - + <% if is_project_manager?(User.current, @project.id) && QualityAnalysis.where(:project_id => @project.id).first.nil? %> + <%= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier), :remote => true, :class => "btn_zipdown fr" %> + <% else %> + <%= link_to "质量分析", project_quality_analysis_path(:project_id => @project.id), :remote => true, :class => "btn_zipdown fr" %> + <% end %>
<% if @entries.nil? %> From 723540044d30d500f4c9be084ff21ae77e1a0ea6 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 23 Jun 2016 13:59:45 +0800 Subject: [PATCH 30/75] =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality_analysis/_result_list.html.erb | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/app/views/quality_analysis/_result_list.html.erb b/app/views/quality_analysis/_result_list.html.erb index e69de29bb..114c054a3 100644 --- a/app/views/quality_analysis/_result_list.html.erb +++ b/app/views/quality_analysis/_result_list.html.erb @@ -0,0 +1,39 @@ +
+
+

分析结果

+
+
    +
  • NAME
  • +
  • VERSION
  • +
  • LOC
  • +
  • TECHNICAL DEBT
  • +
  • LAST ANALYSIS
  • +
    +
+ + + + +
+
\ No newline at end of file From 8438bc7bcd81037abb9ba5005f89c9ca1bb420c8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 23 Jun 2016 14:31:23 +0800 Subject: [PATCH 31/75] somethint to added --- .../quality_analysis/_result_list.html.erb | 45 +++++-------------- app/views/quality_analysis/index.html.erb | 6 +-- app/views/repositories/show.html.erb | 2 +- public/stylesheets/project.css | 13 +++++- 4 files changed, 25 insertions(+), 41 deletions(-) diff --git a/app/views/quality_analysis/_result_list.html.erb b/app/views/quality_analysis/_result_list.html.erb index 114c054a3..4008bf6e5 100644 --- a/app/views/quality_analysis/_result_list.html.erb +++ b/app/views/quality_analysis/_result_list.html.erb @@ -2,38 +2,15 @@

分析结果

-
    -
  • NAME
  • -
  • VERSION
  • -
  • LOC
  • -
  • TECHNICAL DEBT
  • -
  • LAST ANALYSIS
  • -
    -
- - - - + <% @results.each do |result| %> +
    +
  • <%=link_to result["k"], project_quality_analysis_path(:resource_id => result["id"]), :class => "analysis-result-name fl fontBlue2" %>
  • +
  • 1.0
  • +
  • LOC
  • +
  • TECHNICAL DEBT
  • +
  • LAST ANALYSIS
  • +
    +
+ <% end %>
-
\ No newline at end of file + diff --git a/app/views/quality_analysis/index.html.erb b/app/views/quality_analysis/index.html.erb index e8fd5f8e2..9b06e6483 100644 --- a/app/views/quality_analysis/index.html.erb +++ b/app/views/quality_analysis/index.html.erb @@ -1,9 +1,5 @@ <% if @name_flag %> - <%= @results.each do |result| %> -

- <%=link_to result["k"], project_quality_analysis_path(:resource_id => result["id"]) %> -

- <% end %> + <%= render :partial => "result_list" %> <% else %> <%= render "show" %> <% end %> diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index d3ffdb5b9..c639bcb6e 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -5,7 +5,7 @@ <% if is_project_manager?(User.current, @project.id) && QualityAnalysis.where(:project_id => @project.id).first.nil? %> <%= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier), :remote => true, :class => "btn_zipdown fr" %> <% else %> - <%= link_to "质量分析", project_quality_analysis_path(:project_id => @project.id), :remote => true, :class => "btn_zipdown fr" %> + <%= link_to "质量分析", project_quality_analysis_path(:project_id => @project.id), :class => "btn_zipdown fr" %> <% end %>
diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index 0774fa892..0d1c4fe85 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -1267,4 +1267,15 @@ a.pages-big{ width:50px;} .contribute-list-problem {width:170px; vertical-align:middle; text-align:center;} .contribute-list-rate {width:228px; vertical-align:middle; text-align:center;} .contribute-list-height {height:80px;} -.contribute-list-line-height {line-height:80px;} \ No newline at end of file +.contribute-list-line-height {line-height:80px;} + +/*20160623分析结果*/ +.analysis-result-list {padding:5px;} +.analysis-result-list:nth-of-type(odd){background:#fff;}/*奇数行*/ +.analysis-result-list:nth-of-type(even){background:#f5f5f5;}/*偶数行*/ +.analysis-result-name {width:200px; cursor:pointer;} +.analysis-result-version {width:90px; text-align:right; cursor:pointer;} +.analysis-result-loc {width:60px; text-align:right; cursor:pointer;} +.analysis-result-debt {width:160px; text-align:right; cursor:pointer;} +.analysis-result-time {width:150px; text-align:right; cursor:pointer;} +.analysis-name-icon {background:url(../images/code-analysis-icon.png) -2px -148px no-repeat; width:16px; height:16px; display:inline-block; vertical-align:middle;} \ No newline at end of file From 5cf108030f7095e6696caf637264ce696119fd84 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 23 Jun 2016 14:48:55 +0800 Subject: [PATCH 32/75] =?UTF-8?q?hight=20char=E9=92=9F=E8=A1=A8=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/quality_analysis/_show.html.erb | 119 +++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 46a5e2e3d..17865ad32 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -8,6 +8,123 @@

class_complexity: <%= @complexity["msr"][7]["frmt_val"] %>

function_complexity: <%= @complexity["msr"][8]["frmt_val"] %>

+ @@ -23,7 +140,7 @@

质量等级

A正常

-
+

复杂度

44正常

From 3964631ed1d5c0c5080f25f3cd830fe6fadf62db Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 23 Jun 2016 14:58:09 +0800 Subject: [PATCH 33/75] hight charts --- app/views/quality_analysis/_show.html.erb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 17865ad32..cf81680b0 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -7,10 +7,9 @@

file_complexity: <%= @complexity["msr"][6]["frmt_val"] %>

class_complexity: <%= @complexity["msr"][7]["frmt_val"] %>

function_complexity: <%= @complexity["msr"][8]["frmt_val"] %>

- +<%= javascript_include_tag 'highcharts','highcharts-more' %> \ No newline at end of file diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index cf81680b0..674507c4c 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -1,132 +1,19 @@

lines: <%= @complexity["msr"][0]["frmt_val"] %>

+

classes: <%= @complexity["msr"][1]["frmt_val"] %>

files: <%= @complexity["msr"][2]["frmt_val"] %>

directories: <%= @complexity["msr"][3]["frmt_val"] %>

-

classes: <%= @complexity["msr"][1]["frmt_val"] %>

function: <%= @complexity["msr"][4]["frmt_val"] %>

-

total Complexity: <%= @complexity["msr"][5]["frmt_val"] %>

-

file_complexity: <%= @complexity["msr"][6]["frmt_val"] %>

-

class_complexity: <%= @complexity["msr"][7]["frmt_val"] %>

-

function_complexity: <%= @complexity["msr"][8]["frmt_val"] %>

-<%= javascript_include_tag 'highcharts','highcharts-more' %> - +

comment_lines_density: <%= @complexity["msr"][5]["frmt_val"] %>

+

function_complexity: <%= @complexity["msr"][6]["frmt_val"] %>

+

duplicated_lines_density: <%= @complexity["msr"][7]["frmt_val"] %>

+

sqale_index: <%= @complexity["msr"][8]["frmt_val"] %>

+

sqale_rating: <%= @complexity["msr"][9]["frmt_val"] %>

+<%dd %> +<%= javascript_include_tag 'highcharts','highcharts-more' %> + <%= render :partial => "hightchars" %>

SonarQube质量分析

@@ -134,23 +21,30 @@
项目代码质量分析报告
概要信息
-
-
-

质量等级

-

A正常

-
-
-

复杂度

-

复杂度

-

44正常

-
-
-

重复

-

44%正常

+
+
+
+

+

质量等级

+

A正常

+
+
+

+

复杂度

+

44正常

+
-
-

注释率

-

12%偏低

+
+
+

+

重复

+

44%正常

+
+
+

+

注释率

+

12%偏低

+
质量等级2/5分可定性评价为:质量中等
From eca189335b844dd1579af189f11c402334be6d82 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 23 Jun 2016 17:40:27 +0800 Subject: [PATCH 35/75] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality_analysis/_hightchars.html.erb | 196 ++++++++++++++---- app/views/quality_analysis/_show.html.erb | 8 +- 2 files changed, 158 insertions(+), 46 deletions(-) diff --git a/app/views/quality_analysis/_hightchars.html.erb b/app/views/quality_analysis/_hightchars.html.erb index 5acb0e20f..cea38f691 100644 --- a/app/views/quality_analysis/_hightchars.html.erb +++ b/app/views/quality_analysis/_hightchars.html.erb @@ -1,6 +1,7 @@ \ No newline at end of file diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 674507c4c..24fd990df 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -24,24 +24,24 @@
-

+

质量等级

A正常

-

+

复杂度

44正常

-

+

重复

44%正常

-

+

注释率

12%偏低

From 0dc1a1c047f985d9a8af77dd83cf0e27c27c430e Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 23 Jun 2016 18:24:22 +0800 Subject: [PATCH 36/75] get status --- app/helpers/quality_analysis_helper.rb | 43 +++++++++++++++++++ .../quality_analysis/_hightchars.html.erb | 17 +++----- app/views/quality_analysis/_show.html.erb | 13 +++--- 3 files changed, 56 insertions(+), 17 deletions(-) diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb index f2a1effba..62993ea1b 100644 --- a/app/helpers/quality_analysis_helper.rb +++ b/app/helpers/quality_analysis_helper.rb @@ -1,2 +1,45 @@ module QualityAnalysisHelper + + def sqale_rating_status val + if val.to_i > 0 && val.to_i < 5 + "henhao" + elsif val.to_i > 5 && val.to_i < 10 + + elsif val.to_i > 10 && val.to_i < 20 + elsif val.to_i > 20 && val.to_i < 50 + "yiban" + elsif val.to_i > 20 + "cha" + end + end + + def complexity_status val + if val.to_i < 10 + "zhengchang" + elsif val.to_i > 10 && val.to_i < 15 + "yiban" + elsif val.to_i > 15 + "cha" + end + end + + def duplicated_lines_density_status val + if val.to_i < 30 + "zhengchang" + elsif val.to_i > 30 && val.to_i < 50 + "jiaogao" + elsif val.to_i > 50 + "gao" + end + end + + def comment_lines_density_status val + if val.to_i < 20 + "paindi" + elsif val.to_i > 20 && val.to_i < 50 + "jiaohao" + elsif val.to_i > 50 + "hao" + end + end end diff --git a/app/views/quality_analysis/_hightchars.html.erb b/app/views/quality_analysis/_hightchars.html.erb index cea38f691..620e2d4fb 100644 --- a/app/views/quality_analysis/_hightchars.html.erb +++ b/app/views/quality_analysis/_hightchars.html.erb @@ -44,12 +44,6 @@ }] }, - xAxis: { - style:{ - fontSize: '18px' - } - }, - // the value axis yAxis: { min: 0, @@ -100,7 +94,7 @@ }, series: [{ name: '代码质量', - data: [<%= @complexity["msr"][9]["frmt_val"] %>] + data: [<%= @complexity["msr"][9]["val"] %>] // tooltip: { // valueSuffix: ' km/h' // } @@ -127,6 +121,7 @@ }); }); + // function_complexity $(function () { $('#container_function_complexity').highcharts({ @@ -175,7 +170,7 @@ // the value axis yAxis: { min: 0, - max: 100, + max: 30, minorTickInterval: 'auto', minorTickWidth: 1, minorTickLength: 10, @@ -214,7 +209,7 @@ }, series: [{ name: '复杂度', - data: [<%= @complexity["msr"][5]["frmt_val"] %>] + data: [<%= @complexity["msr"][5]["val"] %>] // tooltip: { // valueSuffix: ' km/h' // } @@ -334,7 +329,7 @@ }, series: [{ name: '重复率', - data: [<%= @complexity["msr"][7]["frmt_val"] %>] + data: [<%= @complexity["msr"][7]["val"] %>] // tooltip: { // valueSuffix: ' km/h' // } @@ -459,7 +454,7 @@ }, series: [{ name: '质量等级', - data: [<%= @complexity["msr"][5]["frmt_val"] %>] + data: [<%= @complexity["msr"][5]["val"] %>] // tooltip: { // valueSuffix: ' km/h' // } diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 24fd990df..4265a6e6c 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -8,12 +8,13 @@

duplicated_lines_density: <%= @complexity["msr"][7]["frmt_val"] %>

sqale_index: <%= @complexity["msr"][8]["frmt_val"] %>

sqale_rating: <%= @complexity["msr"][9]["frmt_val"] %>

- -<%dd %> +<%# DD %> <%= javascript_include_tag 'highcharts','highcharts-more' %> <%= render :partial => "hightchars" %> + +

SonarQube质量分析

@@ -26,24 +27,24 @@

质量等级

-

A正常

+

<%= @complexity["msr"][9]["frmt_val"] %><%= sqale_rating_status(@complexity["msr"][9]["val"]) %>

复杂度

-

44正常

+

<%= @complexity["msr"][6]["val"] %><%= complexity_status(@complexity["msr"][6]["val"]) %>

重复

-

44%正常

+

<%= @complexity["msr"][7]["frmt_val"] %><%= duplicated_lines_density_status(@complexity["msr"][7]["val"]) %>

注释率

-

12%偏低

+

<%= @complexity["msr"][5]["frmt_val"] %><%=comment_lines_density_status(@complexity["msr"][5]["val"]) %>

From e6b263feb5774d3c68cf7e864fe544f08d219e32 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 09:58:51 +0800 Subject: [PATCH 37/75] issues from sonar --- .../quality_analysis_controller.rb | 4 ++- app/helpers/quality_analysis_helper.rb | 32 +++++++++++++++++-- app/views/quality_analysis/_show.html.erb | 20 ++++++------ 3 files changed, 43 insertions(+), 13 deletions(-) diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 58ae02add..99d63dfe3 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -60,8 +60,10 @@ class QualityAnalysisController < ApplicationController else @name_flag = false resource_id = params[:resource_id] - complexity_date = open("http://123.59.135.93:8891/api/resources/index?resource=139&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read + complexity_date = open("http://123.59.135.93:8891/api/resources/index?resource=#{resource_id}&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read @complexity =JSON.parse(complexity_date).first + issue_date = open("http://123.59.135.93:8891/api/resources/index?resource=#{resource_id}&depth=0&metrics=blocker_violations,critical_violations,major_violations,minor_violations,info_violations,violations").read + @sonar_issues = JSON.parse(issue_date).first end end diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb index 62993ea1b..98b5cadd7 100644 --- a/app/helpers/quality_analysis_helper.rb +++ b/app/helpers/quality_analysis_helper.rb @@ -4,12 +4,13 @@ module QualityAnalysisHelper if val.to_i > 0 && val.to_i < 5 "henhao" elsif val.to_i > 5 && val.to_i < 10 - + "jiaohao" elsif val.to_i > 10 && val.to_i < 20 + "zhongdeng" elsif val.to_i > 20 && val.to_i < 50 - "yiban" + "jiaocha" elsif val.to_i > 20 - "cha" + "hencha" end end @@ -42,4 +43,29 @@ module QualityAnalysisHelper "hao" end end + + def score_sqale_rating val + if val.to_i > 0 && val.to_i < 5 + "5" + elsif val.to_i > 5 && val.to_i < 10 + "4" + elsif val.to_i > 10 && val.to_i < 20 + "3" + elsif val.to_i > 20 && val.to_i < 50 + "2" + elsif val.to_i > 20 + "1" + end + end + + def lines_scale val + if val.to_i < 5000 + "zhongdeng" + elsif val.to_i >5000 && val.to_i < 50000 + "zhongdneg" + else + "da" + end + end + end diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 4265a6e6c..522b004a8 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -8,6 +8,8 @@

duplicated_lines_density: <%= @complexity["msr"][7]["frmt_val"] %>

sqale_index: <%= @complexity["msr"][8]["frmt_val"] %>

sqale_rating: <%= @complexity["msr"][9]["frmt_val"] %>

+ +

issues: <%= @sonar_issues["msr"][0]["frmt_val"] %>

<%# DD %> @@ -48,19 +50,19 @@
-
质量等级2/5分可定性评价为:质量中等
+
质量等级<%= score_sqale_rating(@complexity["msr"][9]["val"]) %>/5分可定性评价为:质量<%= sqale_rating_status(@complexity["msr"][9]["val"]) %>
-
技术债务14天查看详情
-
质量问题130问题分类如下:
+
技术债务<%= @complexity["msr"][8]["frmt_val"] %>查看详情
+
质量问题<%= @sonar_issues["msr"][0]["frmt_val"] %>问题分类如下:
-
阻断4
-
严重75
-
主要428
-
次要225
-
信息114
+
阻断<%= @sonar_issues["msr"][1]["frmt_val"] %>
+
严重<%= @sonar_issues["msr"][2]["frmt_val"] %>
+
主要<%= @sonar_issues["msr"][3]["frmt_val"] %>
+
次要<%= @sonar_issues["msr"][4]["frmt_val"] %>
+
信息<%= @sonar_issues["msr"][5]["frmt_val"] %>
-
代码规模可定性评价为:规模中等
+
代码规模可定性评价为:<%= lines_scale(@complexity["msr"][0]["frmt_val"]) %>

代码行数

From dcd2aa7848457244e1ad34526729ae4ee7173935 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 24 Jun 2016 10:05:49 +0800 Subject: [PATCH 38/75] =?UTF-8?q?=E5=8F=82=E8=80=83=E4=B8=B4=E7=95=8C?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/quality_analysis_helper.rb | 34 +++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb index 98b5cadd7..68ceb0996 100644 --- a/app/helpers/quality_analysis_helper.rb +++ b/app/helpers/quality_analysis_helper.rb @@ -2,45 +2,45 @@ module QualityAnalysisHelper def sqale_rating_status val if val.to_i > 0 && val.to_i < 5 - "henhao" + "很好" elsif val.to_i > 5 && val.to_i < 10 - "jiaohao" + "较好" elsif val.to_i > 10 && val.to_i < 20 - "zhongdeng" + "中等" elsif val.to_i > 20 && val.to_i < 50 - "jiaocha" + "较差" elsif val.to_i > 20 - "hencha" + "很差" end end def complexity_status val if val.to_i < 10 - "zhengchang" + "良好" elsif val.to_i > 10 && val.to_i < 15 - "yiban" + "较高" elsif val.to_i > 15 - "cha" + "很高" end end def duplicated_lines_density_status val if val.to_i < 30 - "zhengchang" + "良好" elsif val.to_i > 30 && val.to_i < 50 - "jiaogao" + "较高" elsif val.to_i > 50 - "gao" + "很高" end end def comment_lines_density_status val if val.to_i < 20 - "paindi" + "较低" elsif val.to_i > 20 && val.to_i < 50 - "jiaohao" + "正常" elsif val.to_i > 50 - "hao" + "较高" end end @@ -60,11 +60,11 @@ module QualityAnalysisHelper def lines_scale val if val.to_i < 5000 - "zhongdeng" + "小型" elsif val.to_i >5000 && val.to_i < 50000 - "zhongdneg" + "中型" else - "da" + "大型" end end From a0635bbb2daac1e1218f8bf5dc87c19b5785635f Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 24 Jun 2016 10:47:21 +0800 Subject: [PATCH 39/75] =?UTF-8?q?=E6=89=80=E5=8D=A0=E7=99=BE=E5=88=86?= =?UTF-8?q?=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/quality_analysis_helper.rb | 7 +++++++ app/views/quality_analysis/_show.html.erb | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb index 68ceb0996..0454a6943 100644 --- a/app/helpers/quality_analysis_helper.rb +++ b/app/helpers/quality_analysis_helper.rb @@ -68,4 +68,11 @@ module QualityAnalysisHelper end end + #统计答题百分比,统计结果保留两位小数 + def statistics_result_percentage(e, t) + e = e.to_f + t = t.to_f + t == 0 ? 0 : format("%.2f", e*100/t) + end + end diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 522b004a8..d3dc277bc 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -55,8 +55,8 @@
技术债务<%= @complexity["msr"][8]["frmt_val"] %>查看详情
质量问题<%= @sonar_issues["msr"][0]["frmt_val"] %>问题分类如下:
-
阻断<%= @sonar_issues["msr"][1]["frmt_val"] %>
-
严重<%= @sonar_issues["msr"][2]["frmt_val"] %>
+
阻断<%= @sonar_issues["msr"][1]["frmt_val"] %>%;">
+
严重<%= @sonar_issues["msr"][2]["frmt_val"] %>
主要<%= @sonar_issues["msr"][3]["frmt_val"] %>
次要<%= @sonar_issues["msr"][4]["frmt_val"] %>
信息<%= @sonar_issues["msr"][5]["frmt_val"] %>
From 05eb71036ded75dbaf4b4b46c47f31fd957f09bb Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 10:47:24 +0800 Subject: [PATCH 40/75] some css to added --- app/views/quality_analysis/_show.html.erb | 21 ++------------------- public/stylesheets/public.css | 9 +++++++++ 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 522b004a8..828b5a98d 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -1,26 +1,9 @@ -

lines: <%= @complexity["msr"][0]["frmt_val"] %>

-

classes: <%= @complexity["msr"][1]["frmt_val"] %>

-

files: <%= @complexity["msr"][2]["frmt_val"] %>

-

directories: <%= @complexity["msr"][3]["frmt_val"] %>

-

function: <%= @complexity["msr"][4]["frmt_val"] %>

-

comment_lines_density: <%= @complexity["msr"][5]["frmt_val"] %>

-

function_complexity: <%= @complexity["msr"][6]["frmt_val"] %>

-

duplicated_lines_density: <%= @complexity["msr"][7]["frmt_val"] %>

-

sqale_index: <%= @complexity["msr"][8]["frmt_val"] %>

-

sqale_rating: <%= @complexity["msr"][9]["frmt_val"] %>

- -

issues: <%= @sonar_issues["msr"][0]["frmt_val"] %>

-<%# DD %> - - <%= javascript_include_tag 'highcharts','highcharts-more' %> <%= render :partial => "hightchars" %> - -

SonarQube质量分析

- branch:master +
项目代码质量分析报告
概要信息
@@ -40,7 +23,7 @@

-

重复

+

重复

<%= @complexity["msr"][7]["frmt_val"] %><%= duplicated_lines_density_status(@complexity["msr"][7]["val"]) %>

diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index e33ac601e..c6d7853e5 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -27,6 +27,7 @@ a.btn_message_free{ background:#ff5722; display:block; text-align:center; color h2{ font-size:18px; } h3{ font-size:14px; } h4{ font-size:14px; } +.f8 {font-size:8px;} .f12{font-size:12px; font-weight:normal;} .f14{font-size:14px;} .f16{font-size:16px;} @@ -130,6 +131,7 @@ h4{ font-size:14px; } .mt12 { margin-top:12px !important;} .mt15 {margin-top:15px;} .mt19 {margin-top:19px !important;} +.mt35 {margin-top:35px;} .ml70{margin-left: 70px;} .mb0 {margin-bottom: 0px !important;} .mb4{ margin-bottom:4px;} @@ -137,6 +139,8 @@ h4{ font-size:14px; } .mb8 {margin-bottom:8px;} .mb10{ margin-bottom:10px !important;} .mb20{ margin-bottom:20px;} +.mb30 {margin-bottom:30px;} +.mb40 {margin-bottom:40px;} .pl10 {padding-left:10px;} .pl15{ padding-left:15px;} .pl5{ padding-left:5px;} @@ -228,6 +232,7 @@ a.c_green{ color:#28be6c;} .b_grey{ background: #F5F5F5;} .b_dgrey{ background: #CCC;} +.c_white {color:#fff;} .c_orange{color:#e8770d;} .c_dark{ color:#2d2d2d;} .c_lorange{ color:#ff9900;} @@ -239,6 +244,8 @@ a.c_green{ color:#28be6c;} .c_dblue{ color:#09658c;} .b_blue{background:#64bdd9;} .b_green{background:#28be6c;} +.b_green2 {background:#63c360;} +.b_red {background:#d60308;} .b_w{ background:#fff !important;} /*add by Tim*/ @@ -341,6 +348,8 @@ a:hover.bgreen_n_btn{background:#08a384;} .orange_btn_cir{ background:#e67e22; padding:1px 10px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal; font-size:12px;white-space:nowrap;} .bgreen_btn_cir{ background:#1abc9c; padding:1px 10px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal; font-size:12px;white-space:nowrap;} .grey_border{border:1px solid #dddddd !important;} +.borderRadius {border-radius:5px;} +.tac {text-align:center;} /* commonpic */ .pic_date{ display:block; background:url(../images/new_project/public_icon.png) -31px 0 no-repeat; width:16px; height:15px; float:left;} .pic_add{ display:block; background:url(../images/new_project/public_icon.png) -31px -273px no-repeat; width:16px; height:15px; float:left;} From e17aa4c5d881537dbb8259449d0c4f2f38a0a54b Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 11:20:39 +0800 Subject: [PATCH 41/75] color --- app/helpers/quality_analysis_helper.rb | 50 ++++++++++++++++------- app/views/quality_analysis/_show.html.erb | 22 +++++----- public/stylesheets/public.css | 3 ++ 3 files changed, 50 insertions(+), 25 deletions(-) diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb index 0454a6943..8356c476b 100644 --- a/app/helpers/quality_analysis_helper.rb +++ b/app/helpers/quality_analysis_helper.rb @@ -1,47 +1,69 @@ module QualityAnalysisHelper def sqale_rating_status val + arr = [] if val.to_i > 0 && val.to_i < 5 - "很好" + arr << "很好" + arr << "b_green2" elsif val.to_i > 5 && val.to_i < 10 - "较好" + arr << "较好" + arr << "b_slow_yellow" elsif val.to_i > 10 && val.to_i < 20 - "中等" + arr << "中等" + arr << "b_yellow" elsif val.to_i > 20 && val.to_i < 50 - "较差" + arr << "较差" + arr << "b_slow_red" elsif val.to_i > 20 - "很差" + arr << "很差" + arr << "b_red" end + arr.first end def complexity_status val + arr = [] if val.to_i < 10 - "良好" + arr << "良好" + arr << "b_green2" elsif val.to_i > 10 && val.to_i < 15 - "较高" + arr << "较高" + arr << "b_yellow" elsif val.to_i > 15 - "很高" + arr << "很高" + arr << "b_red" end + arr.first end def duplicated_lines_density_status val + arr = [] if val.to_i < 30 - "良好" + arr << "良好" + arr << "b_green2" elsif val.to_i > 30 && val.to_i < 50 - "较高" + arr << "较高" + arr << "b_yellow" elsif val.to_i > 50 - "很高" + arr << "很高" + arr << "b_red" end + arr.first end def comment_lines_density_status val + arr = [] if val.to_i < 20 - "较低" + arr << "较低" + arr << "b_yellow" elsif val.to_i > 20 && val.to_i < 50 - "正常" + arr << "正常" + arr << "b_green2" elsif val.to_i > 50 - "较高" + arr << "较高" + arr << "b_red" end + arr.first end def score_sqale_rating val diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 3b80d775c..86ff6782b 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -10,39 +10,39 @@
-

+

质量等级

-

<%= @complexity["msr"][9]["frmt_val"] %><%= sqale_rating_status(@complexity["msr"][9]["val"]) %>

+

<%= @complexity["msr"][9]["frmt_val"] %>} borderRadius"><%= sqale_rating_status(@complexity["msr"][9]["val"]) %>

-

+

复杂度

<%= @complexity["msr"][6]["val"] %><%= complexity_status(@complexity["msr"][6]["val"]) %>

-

+

重复

<%= @complexity["msr"][7]["frmt_val"] %><%= duplicated_lines_density_status(@complexity["msr"][7]["val"]) %>

-

+

注释率

<%= @complexity["msr"][5]["frmt_val"] %><%=comment_lines_density_status(@complexity["msr"][5]["val"]) %>

-
质量等级<%= score_sqale_rating(@complexity["msr"][9]["val"]) %>/5分可定性评价为:质量<%= sqale_rating_status(@complexity["msr"][9]["val"]) %>
+
质量等级<%= score_sqale_rating(@complexity["msr"][9]["val"]) %>/5分可定性评价为:质量<%= sqale_rating_status(@complexity["msr"][9]["val"])[0] %>
技术债务<%= @complexity["msr"][8]["frmt_val"] %>查看详情
质量问题<%= @sonar_issues["msr"][0]["frmt_val"] %>问题分类如下:
-
阻断<%= @sonar_issues["msr"][1]["frmt_val"] %>%;">
-
严重<%= @sonar_issues["msr"][2]["frmt_val"] %>
-
主要<%= @sonar_issues["msr"][3]["frmt_val"] %>
-
次要<%= @sonar_issues["msr"][4]["frmt_val"] %>
-
信息<%= @sonar_issues["msr"][5]["frmt_val"] %>
+
阻断<%= @sonar_issues["msr"][1]["frmt_val"] %>%;">
+
严重<%= @sonar_issues["msr"][2]["frmt_val"] %>%;">
+
主要<%= @sonar_issues["msr"][3]["frmt_val"] %>%;">
+
次要<%= @sonar_issues["msr"][4]["frmt_val"] %>%;">
+
信息<%= @sonar_issues["msr"][5]["frmt_val"] %>%;">
代码规模可定性评价为:<%= lines_scale(@complexity["msr"][0]["frmt_val"]) %>
diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index c6d7853e5..743c81014 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -244,6 +244,9 @@ a.c_green{ color:#28be6c;} .c_dblue{ color:#09658c;} .b_blue{background:#64bdd9;} .b_green{background:#28be6c;} +.b_slow_yellow{background:#adde18;} +.b_yellow{background:#DDDF0D;} +.b_slow_red{background:#df8538;} .b_green2 {background:#63c360;} .b_red {background:#d60308;} .b_w{ background:#fff !important;} From 2a971c3bc6e436c8d01e5a6719001ed9429522b5 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Fri, 24 Jun 2016 11:24:48 +0800 Subject: [PATCH 42/75] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=89=E7=9A=84?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=B7=BB=E5=8A=A0=E6=88=90=E5=91=98=E7=9A=84?= =?UTF-8?q?BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/organizations/setting.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/organizations/setting.html.erb b/app/views/organizations/setting.html.erb index ebf3f5445..3a5a8c175 100644 --- a/app/views/organizations/setting.html.erb +++ b/app/views/organizations/setting.html.erb @@ -112,7 +112,7 @@ <%= form_tag url_for(:controller => 'org_member', :action => 'create', :org => @organization),:id=>'org_member_add_form',:remote=>true do |f|%> <%# if @organization.secdomain_name.nil? %> - <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript host_with_protocol + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# else %> <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript secdomain_with_protocol(@organization.secdomain_name) + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# end %> From e4e0e7b16625850bbd9f7261f195887c0d964f04 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 12:17:05 +0800 Subject: [PATCH 43/75] helper --- app/helpers/quality_analysis_helper.rb | 4 ---- app/views/quality_analysis/_hightchars.html.erb | 4 ++-- app/views/quality_analysis/_show.html.erb | 8 ++++---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb index 8356c476b..e13882f6f 100644 --- a/app/helpers/quality_analysis_helper.rb +++ b/app/helpers/quality_analysis_helper.rb @@ -18,7 +18,6 @@ module QualityAnalysisHelper arr << "很差" arr << "b_red" end - arr.first end def complexity_status val @@ -33,7 +32,6 @@ module QualityAnalysisHelper arr << "很高" arr << "b_red" end - arr.first end def duplicated_lines_density_status val @@ -48,7 +46,6 @@ module QualityAnalysisHelper arr << "很高" arr << "b_red" end - arr.first end def comment_lines_density_status val @@ -63,7 +60,6 @@ module QualityAnalysisHelper arr << "较高" arr << "b_red" end - arr.first end def score_sqale_rating val diff --git a/app/views/quality_analysis/_hightchars.html.erb b/app/views/quality_analysis/_hightchars.html.erb index 620e2d4fb..c4d884287 100644 --- a/app/views/quality_analysis/_hightchars.html.erb +++ b/app/views/quality_analysis/_hightchars.html.erb @@ -436,11 +436,11 @@ plotBands: [{ from: 0, to: 20, - color: '#55BF3B' // green + color: '#DDDF0D' // green }, { from: 21, to: 50, - color: '#DDDF0D' // red + color: '#55BF3B' // red }, { from: 51, to: 100, diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index 86ff6782b..f44bb9325 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -12,24 +12,24 @@

质量等级

-

<%= @complexity["msr"][9]["frmt_val"] %>} borderRadius"><%= sqale_rating_status(@complexity["msr"][9]["val"]) %>

+

<%= @complexity["msr"][9]["frmt_val"] %> borderRadius"><%= sqale_rating_status(@complexity["msr"][9]["val"])[0] %>

复杂度

-

<%= @complexity["msr"][6]["val"] %><%= complexity_status(@complexity["msr"][6]["val"]) %>

+

<%= @complexity["msr"][6]["val"] %> borderRadius"><%= complexity_status(@complexity["msr"][6]["val"])[0] %>

重复

-

<%= @complexity["msr"][7]["frmt_val"] %><%= duplicated_lines_density_status(@complexity["msr"][7]["val"]) %>

+

<%= @complexity["msr"][7]["frmt_val"] %> borderRadius"><%= duplicated_lines_density_status(@complexity["msr"][7]["val"])[0] %>

注释率

-

<%= @complexity["msr"][5]["frmt_val"] %><%=comment_lines_density_status(@complexity["msr"][5]["val"]) %>

+

<%= @complexity["msr"][5]["frmt_val"] %> borderRadius"><%=comment_lines_density_status(@complexity["msr"][5]["val"])[0] %>

From de80403e8dc9aaeb23840ae3475b2b9eca25979f Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 12:38:39 +0800 Subject: [PATCH 44/75] add address to config --- app/controllers/quality_analysis_controller.rb | 10 ++++++---- app/views/quality_analysis/_hightchars.html.erb | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 99d63dfe3..ac31ee198 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -19,6 +19,7 @@ class QualityAnalysisController < ApplicationController #@client.exists?(job_name) @g = Gitlab.client gitlab_address = Redmine::Configuration['gitlab_address'] + jenkins_address = Redmine::Configuration['jenkins_address'] user_name = User.find(params[:user_id]).try(:login) branch = params[:branch].nil? ? "master" : params[:branch] language = params[:language] @@ -44,7 +45,7 @@ class QualityAnalysisController < ApplicationController @client = @client.job.create("#{user_name}_#{identifier}", @doc.to_xml) # relace gitlab hook # genkins address - @g.add_project_hook(@project.gpid,"http://123.59.135.93:8890/project/#{user_name}_#{identifier}") + @g.add_project_hook(@project.gpid, (jenkins_address + "/project/#{user_name}_#{identifier}")) if qa.nil? QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier, :version => version) else @@ -53,16 +54,17 @@ class QualityAnalysisController < ApplicationController end def index + @sonar_address = Redmine::Configuration['sonar_address'] if params[:resource_id].nil? @name_flag = true - projects_date = open("http://123.59.135.93:8891/api/projects/index").read + projects_date = open(sonar_address + "/api/projects/index").read @results = JSON.parse(projects_date) else @name_flag = false resource_id = params[:resource_id] - complexity_date = open("http://123.59.135.93:8891/api/resources/index?resource=#{resource_id}&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read + complexity_date = open(@sonar_address + "/api/resources/index?resource=#{resource_id}&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read @complexity =JSON.parse(complexity_date).first - issue_date = open("http://123.59.135.93:8891/api/resources/index?resource=#{resource_id}&depth=0&metrics=blocker_violations,critical_violations,major_violations,minor_violations,info_violations,violations").read + issue_date = open(@sonar_address + "/api/resources/index?resource=#{resource_id}&depth=0&metrics=blocker_violations,critical_violations,major_violations,minor_violations,info_violations,violations").read @sonar_issues = JSON.parse(issue_date).first end end diff --git a/app/views/quality_analysis/_hightchars.html.erb b/app/views/quality_analysis/_hightchars.html.erb index c4d884287..6e63bcecd 100644 --- a/app/views/quality_analysis/_hightchars.html.erb +++ b/app/views/quality_analysis/_hightchars.html.erb @@ -209,7 +209,7 @@ }, series: [{ name: '复杂度', - data: [<%= @complexity["msr"][5]["val"] %>] + data: [<%= @complexity["msr"][6]["val"] %>] // tooltip: { // valueSuffix: ' km/h' // } From 128f6721be7117513de59ec92075487b825de766 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 13:00:02 +0800 Subject: [PATCH 45/75] stoped the zhizhen --- .../quality_analysis_controller.rb | 6 +- .../quality_analysis/_hightchars.html.erb | 120 +++++++++--------- app/views/quality_analysis/_show.html.erb | 93 +++++++------- 3 files changed, 110 insertions(+), 109 deletions(-) diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index ac31ee198..152335dd8 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -61,10 +61,10 @@ class QualityAnalysisController < ApplicationController @results = JSON.parse(projects_date) else @name_flag = false - resource_id = params[:resource_id] - complexity_date = open(@sonar_address + "/api/resources/index?resource=#{resource_id}&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read + @resource_id = params[:resource_id] + complexity_date = open(@sonar_address + "/api/resources/index?resource=#{@resource_id}&depth=0&metrics=sqale_rating,function_complexity,duplicated_lines_density,comment_lines_density,sqale_index,lines,file_line,files,functions,classes,directories").read @complexity =JSON.parse(complexity_date).first - issue_date = open(@sonar_address + "/api/resources/index?resource=#{resource_id}&depth=0&metrics=blocker_violations,critical_violations,major_violations,minor_violations,info_violations,violations").read + issue_date = open(@sonar_address + "/api/resources/index?resource=#{@resource_id}&depth=0&metrics=blocker_violations,critical_violations,major_violations,minor_violations,info_violations,violations").read @sonar_issues = JSON.parse(issue_date).first end end diff --git a/app/views/quality_analysis/_hightchars.html.erb b/app/views/quality_analysis/_hightchars.html.erb index 6e63bcecd..fb60eaed3 100644 --- a/app/views/quality_analysis/_hightchars.html.erb +++ b/app/views/quality_analysis/_hightchars.html.erb @@ -103,21 +103,21 @@ }, // Add some life function (chart) { - if (!chart.renderer.forExport) { - setInterval(function () { - var point = chart.series[0].points[0], - newVal, - inc = Math.round((Math.random() - 0.5) * 20); - - newVal = point.y + inc; - if (newVal < 0 || newVal > 200) { - newVal = point.y - inc; - } - - point.update(newVal); - - }, 3000); - } +// if (!chart.renderer.forExport) { +// setInterval(function () { +// var point = chart.series[0].points[0], +// newVal, +// inc = Math.round((Math.random() - 0.5) * 20); +// +// newVal = point.y + inc; +// if (newVal < 0 || newVal > 200) { +// newVal = point.y - inc; +// } +// +// point.update(newVal); +// +// }, 3000); +// } }); }); @@ -218,21 +218,21 @@ }, // Add some life function (chart) { - if (!chart.renderer.forExport) { - setInterval(function () { - var point = chart.series[0].points[0], - newVal, - inc = Math.round((Math.random() - 0.5) * 20); - - newVal = point.y + inc; - if (newVal < 0 || newVal > 200) { - newVal = point.y - inc; - } - - point.update(newVal); - - }, 3000); - } +// if (!chart.renderer.forExport) { +// setInterval(function () { +// var point = chart.series[0].points[0], +//// newVal, +//// inc = Math.round((Math.random() - 0.5) * 20); +// +//// newVal = point.y + inc; +//// if (newVal < 0 || newVal > 200) { +//// newVal = point.y - inc; +//// } +// +//// point.update(newVal); +// +// }, 3000); +// } }); }); @@ -338,21 +338,21 @@ }, // Add some life function (chart) { - if (!chart.renderer.forExport) { - setInterval(function () { - var point = chart.series[0].points[0], - newVal, - inc = Math.round((Math.random() - 0.5) * 20); - - newVal = point.y + inc; - if (newVal < 0 || newVal > 200) { - newVal = point.y - inc; - } - - point.update(newVal); - - }, 3000); - } +// if (!chart.renderer.forExport) { +// setInterval(function () { +// var point = chart.series[0].points[0], +// newVal, +// inc = Math.round((Math.random() - 0.5) * 20); +// +// newVal = point.y + inc; +// if (newVal < 0 || newVal > 200) { +// newVal = point.y - inc; +// } +// +// point.update(newVal); +// +// }, 3000); +// } }); }); @@ -463,21 +463,21 @@ }, // Add some life function (chart) { - if (!chart.renderer.forExport) { - setInterval(function () { - var point = chart.series[0].points[0], - newVal, - inc = Math.round((Math.random() - 0.5) * 20); - - newVal = point.y + inc; - if (newVal < 0 || newVal > 200) { - newVal = point.y - inc; - } - - point.update(newVal); - - }, 3000); - } +// if (!chart.renderer.forExport) { +// setInterval(function () { +// var point = chart.series[0].points[0], +// newVal, +// inc = Math.round((Math.random() - 0.5) * 20); +// +// newVal = point.y + inc; +// if (newVal < 0 || newVal > 200) { +// newVal = point.y - inc; +// } +// +// point.update(newVal); +// +// }, 3000); +// } }); }); \ No newline at end of file diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index f44bb9325..b49cbb03f 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -1,7 +1,7 @@ <%= javascript_include_tag 'highcharts','highcharts-more' %> <%= render :partial => "hightchars" %>
-

SonarQube质量分析

+

质量分析

@@ -35,8 +35,9 @@
质量等级<%= score_sqale_rating(@complexity["msr"][9]["val"]) %>/5分可定性评价为:质量<%= sqale_rating_status(@complexity["msr"][9]["val"])[0] %>
-
技术债务<%= @complexity["msr"][8]["frmt_val"] %>查看详情
-
质量问题<%= @sonar_issues["msr"][0]["frmt_val"] %>问题分类如下:
+
技术债务<%= @complexity["msr"][8]["frmt_val"] %>查看详情
+
质量问题 + <%= @sonar_issues["msr"][0]["frmt_val"] %>问题分类如下:
阻断<%= @sonar_issues["msr"][1]["frmt_val"] %>%;">
严重<%= @sonar_issues["msr"][2]["frmt_val"] %>%;">
@@ -68,46 +69,46 @@

<%= @complexity["msr"][4]["frmt_val"] %>

-
贡献统计
-
-
    -
  •  
  • -
  • 代码行数
  • -
  • 引入质量问题数
  • -
  • 引入质量问题数/代码行数
  • -
    -
-
    -
  • -
    - -
    -
  • -
  • 18340
  • -
  • 230
  • -
  • .012540
  • -
    -
-
    -
  • -
    - -
    -
  • -
  • 834
  • -
  • 34
  • -
  • .04077
  • -
    -
-
    -
  • -
    - -
    -
  • -
  • 134
  • -
  • 10
  • -
  • .07462
  • -
    -
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 64d87b73988657765cd4852b287ea4ffbe87bb95 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Fri, 24 Jun 2016 13:50:28 +0800 Subject: [PATCH 46/75] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=90=E5=91=98=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 8 +++++++ .../org_member_autocomplete.js.erb | 23 +++++++++++++++++++ app/views/organizations/setting.html.erb | 3 ++- config/routes.rb | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 app/views/organizations/org_member_autocomplete.js.erb diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index b36ef592d..e052ec20f 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -642,4 +642,12 @@ class OrganizationsController < ApplicationController OrgMessage.create(:user_id => params[:user_id], :organization_id => @organization.id, :message_type => 'AgreeApplySubdomain', :message_id => @organization.id, :sender_id => User.current.id, :viewed => 0, :content => params[:org_domain]) end end + + def org_member_autocomplete + @org = Organization.find(params[:org]) + @flag = params[:flag] || false + respond_to do |format| + format.js + end + end end diff --git a/app/views/organizations/org_member_autocomplete.js.erb b/app/views/organizations/org_member_autocomplete.js.erb new file mode 100644 index 000000000..1dbb972f8 --- /dev/null +++ b/app/views/organizations/org_member_autocomplete.js.erb @@ -0,0 +1,23 @@ +<% if @org%> +var checked = $("#principals_for_new_member input:checked").size(); +if(checked > 0) +{ + alert('翻页或搜索后将丢失当前选择的用户数据!'); +} +<% if @flag == "true"%> +$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); +<% else%> +$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); +<% end%> + +<%end%> +var collection=$("#principals_for_new_member").children("#principals").children("label"); +collection.css("text-overflow","ellipsis"); +collection.css("white-space","nowrap"); +collection.css("width","200px"); +collection.css("overflow","hidden"); +for(i=0;i 'org_member', :action => 'create', :org => @organization),:id=>'org_member_add_form',:remote=>true do |f|%> <%# if @organization.secdomain_name.nil? %> - <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript host_with_protocol + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{url_for(:controller => 'organizations', :action => 'org_member_autocomplete', :org=> @organization.id)}')" %> <%# else %> <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript secdomain_with_protocol(@organization.secdomain_name) + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# end %> diff --git a/config/routes.rb b/config/routes.rb index ec8fa2337..7008b3ab7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -104,6 +104,7 @@ RedmineApp::Application.routes.draw do post 'agree_apply_subdomain' post 'update_field_by_admin' post 'reset_update_field_by_admin' + get 'org_member_autocomplete' end end From 86a5eccae6731968f43c80cdca011e62f3e2f726 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Fri, 24 Jun 2016 14:16:39 +0800 Subject: [PATCH 47/75] =?UTF-8?q?=E7=BB=84=E7=BB=87=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=E6=88=90=E5=91=98BUG=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 8 ------- .../org_member_autocomplete.js.erb | 23 ------------------- app/views/organizations/setting.html.erb | 4 ++-- config/routes.rb | 1 - public/javascripts/application.js | 1 + 5 files changed, 3 insertions(+), 34 deletions(-) delete mode 100644 app/views/organizations/org_member_autocomplete.js.erb diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index e052ec20f..b36ef592d 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -642,12 +642,4 @@ class OrganizationsController < ApplicationController OrgMessage.create(:user_id => params[:user_id], :organization_id => @organization.id, :message_type => 'AgreeApplySubdomain', :message_id => @organization.id, :sender_id => User.current.id, :viewed => 0, :content => params[:org_domain]) end end - - def org_member_autocomplete - @org = Organization.find(params[:org]) - @flag = params[:flag] || false - respond_to do |format| - format.js - end - end end diff --git a/app/views/organizations/org_member_autocomplete.js.erb b/app/views/organizations/org_member_autocomplete.js.erb deleted file mode 100644 index 1dbb972f8..000000000 --- a/app/views/organizations/org_member_autocomplete.js.erb +++ /dev/null @@ -1,23 +0,0 @@ -<% if @org%> -var checked = $("#principals_for_new_member input:checked").size(); -if(checked > 0) -{ - alert('翻页或搜索后将丢失当前选择的用户数据!'); -} -<% if @flag == "true"%> -$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); -<% else%> -$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); -<% end%> - -<%end%> -var collection=$("#principals_for_new_member").children("#principals").children("label"); -collection.css("text-overflow","ellipsis"); -collection.css("white-space","nowrap"); -collection.css("width","200px"); -collection.css("overflow","hidden"); -for(i=0;i 'org_member', :action => 'create', :org => @organization),:id=>'org_member_add_form',:remote=>true do |f|%> <%# if @organization.secdomain_name.nil? %> - <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript host_with_protocol + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> - <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{url_for(:controller => 'organizations', :action => 'org_member_autocomplete', :org=> @organization.id)}')" %> + <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{url_for(:controller => 'organizations', :action => 'org_member_autocomplete', :org=> @organization.id)}')" %> <%# else %> <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript secdomain_with_protocol(@organization.secdomain_name) + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# end %> diff --git a/config/routes.rb b/config/routes.rb index 7008b3ab7..ec8fa2337 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -104,7 +104,6 @@ RedmineApp::Application.routes.draw do post 'agree_apply_subdomain' post 'update_field_by_admin' post 'reset_update_field_by_admin' - get 'org_member_autocomplete' end end diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 22483c1d5..a2f14332d 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -547,6 +547,7 @@ function observeSearchfield(fieldId, targetId, url) { $.ajax({ url: url, type: 'get', + dataType: 'jsonp', data: {q: $this.val()}, success: function(data){ if(targetId) $('#'+targetId).html(data); }, beforeSend: function(){ $this.addClass('ajax-loading'); }, From 06fe02890fb8ba2a522d7baea010b681b2919c31 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 14:59:17 +0800 Subject: [PATCH 48/75] index for sonar result --- .../quality_analysis_controller.rb | 13 ++++---- app/models/quality_analysis.rb | 2 +- .../projects/_development_group.html.erb | 4 +++ .../quality_analysis/_result_list.html.erb | 30 ++++++++++--------- .../repositories/_quality_analysis.html.erb | 2 +- app/views/repositories/show.html.erb | 8 +++-- ...24054614_add_column_to_quality_analyses.rb | 6 ++++ ...4055127_add_languae_to_quality_analyses.rb | 5 ++++ db/schema.rb | 5 +++- 9 files changed, 49 insertions(+), 26 deletions(-) create mode 100644 db/migrate/20160624054614_add_column_to_quality_analyses.rb create mode 100644 db/migrate/20160624055127_add_languae_to_quality_analyses.rb diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb index 152335dd8..45d5a0ebf 100644 --- a/app/controllers/quality_analysis_controller.rb +++ b/app/controllers/quality_analysis_controller.rb @@ -25,8 +25,8 @@ class QualityAnalysisController < ApplicationController language = params[:language] path = params[:path] identifier = params[:identifier] - qa = QualityAnalysis.where(:project_id => @project.id).first - version = qa.sonar_version + 1 + qa = QualityAnalysis.where(:project_id => @project.id, :author_login => user_name).first + version = qa.nil? ? 1 : qa.sonar_version + 1 properties = "sonar.projectKey=#{user_name}:#{identifier} sonar.projectName=#{user_name}:#{identifier} sonar.projectVersion=#{version} @@ -47,9 +47,9 @@ class QualityAnalysisController < ApplicationController # genkins address @g.add_project_hook(@project.gpid, (jenkins_address + "/project/#{user_name}_#{identifier}")) if qa.nil? - QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier, :version => version) + QualityAnalysis.create(:project_id => @project.id, :author_login => user_name, :rep_identifier => identifier, :sonar_version => version, :path => path, :branch => branch, :language => language) else - qa.update_attribute(:version, version) + qa.update_attribute(:sonar_version, version) end end @@ -57,8 +57,9 @@ class QualityAnalysisController < ApplicationController @sonar_address = Redmine::Configuration['sonar_address'] if params[:resource_id].nil? @name_flag = true - projects_date = open(sonar_address + "/api/projects/index").read - @results = JSON.parse(projects_date) + @quality_analyses = QualityAnalysis.where(:project_id => @project.id) + # projects_date = open(@sonar_address + "/api/projects/index").read + # @results = JSON.parse(projects_date) else @name_flag = false @resource_id = params[:resource_id] diff --git a/app/models/quality_analysis.rb b/app/models/quality_analysis.rb index 09803467e..40a0d82e9 100644 --- a/app/models/quality_analysis.rb +++ b/app/models/quality_analysis.rb @@ -1,3 +1,3 @@ class QualityAnalysis < ActiveRecord::Base - attr_accessible :author_login, :project_id, :rep_identifier, :sonar_version + attr_accessible :author_login, :project_id, :rep_identifier, :sonar_version, :branch, :path, :rep_identifier end diff --git a/app/views/projects/_development_group.html.erb b/app/views/projects/_development_group.html.erb index 2c7d36fb5..298416fd1 100644 --- a/app/views/projects/_development_group.html.erb +++ b/app/views/projects/_development_group.html.erb @@ -56,6 +56,10 @@ <% end %>
<% end %> + +
<% if @quality_analyses.count >0 %> <% @quality_analyses.each do |qa| %> -
-
-

分析结果

-
-
    -
  • -
  • VERSION
  • -
  • LOC
  • -
  • TECHNICAL DEBT
  • -
  • LAST ANALYSIS
  • -
    -
- - - - +
+

分析结果

    -
  • <%=link_to "#{qa.author_login}:#{qa.rep_identifier}", project_quality_analysis_path(:resource_id => qa.author_login+":"+qa.rep_identifier, :branch => qa.branch.nil? ? "master" : qa.branch), :class => "analysis-result-name fl fontBlue2" %>
  • +
  • 名称
  • +
  • 版本
  • +
  • 分支
  • +
  • 语言
  • +
  • 时间
  • +
    +
+
    +
  • <%=link_to "#{qa.author_login}:#{qa.rep_identifier}", project_quality_analysis_path(:resource_id => qa.author_login+":"+qa.rep_identifier, :branch => qa.branch.nil? ? "master" : qa.branch), :class => "analysis-result-name fl fontBlue2" %>
  • 1.0
  • <%= qa.branch %>
  • <%= qa.language %>
  • -
  • <%= qa.author_login %>
  • +
  • <%= format_time(qa.created_at) %>
<% end %> From e5ad64831a22aa13fe566c75e96202efe86d2efb Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 24 Jun 2016 17:50:26 +0800 Subject: [PATCH 64/75] 0 --- app/views/quality_analysis/_result_list.html.erb | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/views/quality_analysis/_result_list.html.erb b/app/views/quality_analysis/_result_list.html.erb index 73b5ebd3f..a674d143b 100644 --- a/app/views/quality_analysis/_result_list.html.erb +++ b/app/views/quality_analysis/_result_list.html.erb @@ -3,9 +3,6 @@
<% if @quality_analyses.count >0 %> <% @quality_analyses.each do |qa| %> -
-

分析结果

-
  • 名称
  • 版本
  • From 4f342142e6f87caf7805d22bea5ae32fb4d2f184 Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 24 Jun 2016 17:58:50 +0800 Subject: [PATCH 65/75] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E7=9A=84=E5=B1=95=E5=BC=80=E6=9B=B4=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_reply_banner.html.erb | 2 +- public/javascripts/application.js | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/views/users/_reply_banner.html.erb b/app/views/users/_reply_banner.html.erb index 0d7e0b2bd..25175542f 100644 --- a/app/views/users/_reply_banner.html.erb +++ b/app/views/users/_reply_banner.html.erb @@ -10,7 +10,7 @@
    <%#= format_date(activity.updated_on) %>
    <%if count>3 %> diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 06304a8b0..a04df39ac 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1290,7 +1290,24 @@ function clear_data(k,mdu){ } } -function expand_reply(container, btnid, id, type, div_id) { +function expand_reply(container,btnid){ + var target = $(container).children(); + var btn = $(btnid); + if(btn.data('init')=='0'){ + btn.data('init',1); + btn.html('收起回复'); + target.show(); + }else{ + btn.data('init',0); + btn.html('展开更多'); + target.hide(); + target.eq(0).show(); + target.eq(1).show(); + target.eq(2).show(); + } +} + +function expand_all_reply(container, btnid, id, type, div_id) { var target = $(container); var btn = $(btnid); if (btn.data('init') == '0') { From 8d5501615c6d2d4c324c58399fdd44050f391056 Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 24 Jun 2016 18:09:18 +0800 Subject: [PATCH 66/75] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E7=9A=84=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/courses/_join_private_course.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/courses/_join_private_course.html.erb b/app/views/courses/_join_private_course.html.erb index 0799953bf..96c9a2b7d 100644 --- a/app/views/courses/_join_private_course.html.erb +++ b/app/views/courses/_join_private_course.html.erb @@ -49,7 +49,7 @@
    -

    快速进入课程通道

    +

    快速加入课程通道

    只要持有课程邀请码,就可以快速加入所在课程。课程页面搜索不到的私有课程只能从此通道进入哦!

    @@ -68,7 +68,7 @@
  • 课程邀请码是所在课程页面中显示的邀请码
  • - 身      份: + <% if User.current.logged? && User.current.extensions && User.current.extensions.identity == 0%>