Merge branch 'dev_newproject' of https://git.trustie.net/jacknudt/trustieforge into dev_newproject
This commit is contained in:
commit
a40d6933f6
|
@ -14,7 +14,7 @@ class PullRequestsController < ApplicationController
|
||||||
# project_menu_type 为了控制base顶部导航
|
# project_menu_type 为了控制base顶部导航
|
||||||
@project_menu_type = 6
|
@project_menu_type = 6
|
||||||
# 不符合pullrequest条件的给出提示
|
# 不符合pullrequest条件的给出提示
|
||||||
@allow_to_pull_request = allow_pull_request(@project) > 0 && allow_show_pull_request(@project) > 0
|
@allow_to_pull_request = allow_pull_request(@project) > 0
|
||||||
|
|
||||||
type = params[:type]
|
type = params[:type]
|
||||||
case type
|
case type
|
||||||
|
|
|
@ -380,8 +380,7 @@ update
|
||||||
# 顶部导航
|
# 顶部导航
|
||||||
@project_menu_type = 5
|
@project_menu_type = 5
|
||||||
|
|
||||||
## TODO: the below will move to filter, done.
|
# TODO: the below will move to filter, done.
|
||||||
|
|
||||||
# 获取版本库目录结构
|
# 获取版本库目录结构
|
||||||
@entries = @repository.entries(@path, @rev)
|
@entries = @repository.entries(@path, @rev)
|
||||||
if request.xhr?
|
if request.xhr?
|
||||||
|
|
|
@ -902,12 +902,6 @@ module ApplicationHelper
|
||||||
atts.count > 0 ? true :false
|
atts.count > 0 ? true :false
|
||||||
end
|
end
|
||||||
|
|
||||||
# 如果Pull Request数量为0就显示在更多中
|
|
||||||
def allow_show_pull_request project
|
|
||||||
g = Gitlab.client
|
|
||||||
count = g.merge_requests(project.gpid).count
|
|
||||||
end
|
|
||||||
|
|
||||||
# 必须是项目成员,项目必须提交过代码
|
# 必须是项目成员,项目必须提交过代码
|
||||||
def allow_pull_request project
|
def allow_pull_request project
|
||||||
return 0 if project.gpid.nil?
|
return 0 if project.gpid.nil?
|
||||||
|
|
|
@ -47,11 +47,13 @@
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<!--Pull Request-->
|
<!--Pull Request-->
|
||||||
<li id="project_menu_06">
|
<% unless @project.gpid.nil? %>
|
||||||
<%= link_to project_score.pull_request_num >0 ? "Pull Requests <span class='issues_nav_tag ml5'>#{switch_integer_into_k project_score.pull_request_num}</span>".html_safe : "Pull Requests", project_pull_requests_path(@project), :class => "pro_new_proname", :title => "#{project_score.pull_request_num}" %>
|
<li id="project_menu_06">
|
||||||
<% if project_score.pull_request_num >0 %>
|
<%= link_to project_score.pull_request_num >0 ? "Pull Requests <span class='issues_nav_tag ml5'>#{switch_integer_into_k project_score.pull_request_num}</span>".html_safe : "Pull Requests", project_pull_requests_path(@project), :class => "pro_new_proname", :title => "#{project_score.pull_request_num}" %>
|
||||||
<% end %>
|
<% if project_score.pull_request_num >0 %>
|
||||||
</li>
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
<!--里程碑-->
|
<!--里程碑-->
|
||||||
<li id="project_menu_07">
|
<li id="project_menu_07">
|
||||||
<%= link_to @project.versions.count >0 ? "#{l(:label_roadmap)}<span class='issues_nav_tag ml5'>#{switch_integer_into_k @project.versions.count}</span>".html_safe : l(:label_roadmap) ,project_roadmap_path(@project), :class => "pro_new_proname" %>
|
<%= link_to @project.versions.count >0 ? "#{l(:label_roadmap)}<span class='issues_nav_tag ml5'>#{switch_integer_into_k @project.versions.count}</span>".html_safe : l(:label_roadmap) ,project_roadmap_path(@project), :class => "pro_new_proname" %>
|
||||||
|
|
|
@ -41,6 +41,10 @@
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>不符合条件,内容待补充</p>
|
<div class="new_roadmap_conbox mb10" >
|
||||||
|
<div class="new_roadmap_navbox clear">
|
||||||
|
版本库中还没有提交代码,请先提交代码
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
|
@ -15,14 +15,5 @@
|
||||||
$("#changed-files-detail").hide();
|
$("#changed-files-detail").hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".merge-record li a").click(function(){
|
|
||||||
$(".merge-record li a").removeClass("active");
|
|
||||||
$(this).addClass("active");
|
|
||||||
|
|
||||||
var index = $(".merge-record li a").index(this);
|
|
||||||
|
|
||||||
$("#merge_record_0, #merge_record_1").hide();
|
|
||||||
$("#merge_record_" + index).show();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -2,41 +2,37 @@
|
||||||
// $("#ajax-indicator span").text("载入中...");
|
// $("#ajax-indicator span").text("载入中...");
|
||||||
$("#ajax-indicator").show();
|
$("#ajax-indicator").show();
|
||||||
</script>
|
</script>
|
||||||
<div class="project_r_h" style="width:730px;">
|
<div class="container-big mb10">
|
||||||
<h2 class="project_h2">分析结果</h2>
|
<div class="project_r_h" style="width:970px;">
|
||||||
</div>
|
<h2 class="project_h2">分析结果</h2>
|
||||||
<ul class="analysis-result-list">
|
</div>
|
||||||
<li class="analysis-result-name fl fontBlue2" >名称</li>
|
<ul class="analysis-result-list">
|
||||||
<li class="analysis-result-version fl fontBlue2" >分支</li>
|
<li class="analysis-result-name fl fontBlue2" >名称</li>
|
||||||
<li class="analysis-result-loc fl fontBlue2" >语言</li>
|
<li class="analysis-result-version fl fontBlue2" >分支</li>
|
||||||
<li class="analysis-result-debt fl fontBlue2" >路径</li>
|
<li class="analysis-result-loc fl fontBlue2" >语言</li>
|
||||||
<li class="analysis-result-time fl fontBlue2" >最近更新</li>
|
<li class="analysis-result-debt fl fontBlue2" >路径</li>
|
||||||
<li class="analysis-result-edit fl fontBlue2" ></li>
|
<li class="analysis-result-time fl fontBlue2" >最近更新</li>
|
||||||
<div class="cl"></div>
|
<li class="analysis-result-edit fl fontBlue2" ></li>
|
||||||
</ul>
|
<div class="cl"></div>
|
||||||
<% if @quality_analyses && @quality_analyses.count >0 %>
|
</ul>
|
||||||
<% @quality_analyses.each do |qa| %>
|
<% if @quality_analyses && @quality_analyses.count >0 %>
|
||||||
<ul class="analysis-result-list">
|
<% @quality_analyses.each do |qa| %>
|
||||||
<li title="<%= qa.author_login+ ':' +qa.rep_identifier %>"><%=link_to "#{qa.author_login}:#{qa.rep_identifier}", project_quality_analysis_path(:resource_id => qa.sonar_name, :branch => (qa.branch.nil? ? "master" : qa.branch)), :class => "analysis-result-name fl fontBlue2 hidden" %></li>
|
<ul class="analysis-result-list">
|
||||||
<li class="analysis-result-version fl fontBlue2 hidden" title="<%= qa.branch %>"><%= qa.branch %></li>
|
<li title="<%= qa.author_login+ ':' +qa.rep_identifier %>"><%=link_to "#{qa.author_login}:#{qa.rep_identifier}", project_quality_analysis_path(:resource_id => qa.sonar_name, :branch => (qa.branch.nil? ? "master" : qa.branch)), :class => "analysis-result-name fl fontBlue2 hidden" %></li>
|
||||||
<li class="analysis-result-loc fl fontBlue2 hidden" title="<%= qa.language %>"><%= qa.language %></li>
|
<li class="analysis-result-version fl fontBlue2 hidden" title="<%= qa.branch %>"><%= qa.branch %></li>
|
||||||
<li class="analysis-result-debt fl fontBlue2 hidden" title="<%= qa.path %>"><%= qa.path %></li>
|
<li class="analysis-result-loc fl fontBlue2 hidden" title="<%= qa.language %>"><%= qa.language %></li>
|
||||||
<li class="analysis-result-time fl fontBlue2 hidden" title="<%= sonar_time(qa.sonar_name).blank? ? qa.created_at : sonar_time(qa.sonar_name) %>"><%= format_time(sonar_time(qa.sonar_name).blank? ? qa.created_at : sonar_time(qa.sonar_name)) %></li>
|
<li class="analysis-result-debt fl fontBlue2 hidden" title="<%= qa.path %>"><%= qa.path %></li>
|
||||||
<% if User.current.try(:login) == qa.author_login || User.current.admin? || is_project_manager?(User.current.id, @project.id) %>
|
<li class="analysis-result-time fl fontBlue2 hidden" title="<%= sonar_time(qa.sonar_name).blank? ? qa.created_at : sonar_time(qa.sonar_name) %>"><%= format_time(sonar_time(qa.sonar_name).blank? ? qa.created_at : sonar_time(qa.sonar_name)) %></li>
|
||||||
<li class="analysis-result-edit fl fontBlue2 hidden" title="<%= qa.path %>">
|
<% if User.current.try(:login) == qa.author_login || User.current.admin? || is_project_manager?(User.current.id, @project.id) %>
|
||||||
<%=link_to "编辑", edit_project_quality_analysi_path(qa, :project_id => @project.id), :remote => true, :class => "fontBlue2" %><span style="color: #888"> / </span>
|
<li class="analysis-result-edit fl fontBlue2 hidden" title="<%= qa.path %>">
|
||||||
<%=link_to "删除", delete_project_quality_analysi_path(qa, :project_id => @project.id), :method => "delete", :confirm => "删除会一并删除分析结果,确定删除吗?", :class => "fontBlue2" %>
|
<%=link_to "删除", delete_project_quality_analysi_path(qa, :project_id => @project.id), :method => "delete", :confirm => "删除会一并删除分析结果,确定删除吗?", :class => "fontBlue2" %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</ul>
|
</ul>
|
||||||
|
<% end %>
|
||||||
|
<% else %>
|
||||||
|
<%#= 数据为空时候界面,待完善 %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% else %>
|
</div>
|
||||||
<%#= 数据为空时候界面,待完善 %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
$(".project_r_h").parent().css({"width":"730px","background-color":"#fff","padding":"10px","margin-left":"10px","margin-bottom":"10px"});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,167 +1,162 @@
|
||||||
<%= javascript_include_tag 'highcharts','highcharts-more' %>
|
<%= javascript_include_tag 'highcharts','highcharts-more' %>
|
||||||
<div class="project_r_h" style="width:730px;">
|
<div class="container-big mb10">
|
||||||
<h2 class="project_h2" style="width:180px;">质量分析</h2>
|
<div class="project_r_h" style="width:970px;">
|
||||||
|
<h2 class="project_h2" style="width:180px;">质量分析</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="button-rep">当前分支:<%= params[:branch] %></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="tac f20 fb mt35 mb30">项目代码质量分析报告</div>
|
||||||
|
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl">概要信息</span></div>
|
||||||
|
<%= render :partial => "hightchars" %>
|
||||||
|
<div class="analysis-block mt10 mb40 f14">
|
||||||
|
<div class="flex mb10">
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p id="container_sqale_rating" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
||||||
|
<p class="fontGrey3">质量等级</p>
|
||||||
|
<p class="fontBlue2 pr"><%= sqale_rating_status(@ha["sqale_rating"].to_i)[2] %>
|
||||||
|
<span class="f10 c_white analysis-genral-icon <%= sqale_rating_status(@ha["sqale_rating"].to_i)[1] %> borderRadius">
|
||||||
|
<%= @ha["sqale_rating"].nil? ? "很好" : sqale_rating_status(@ha["sqale_rating"].to_i)[0] %>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-genral" >
|
||||||
|
<p id="container_function_complexity" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
||||||
|
<p class="fontGrey3">复杂度</p>
|
||||||
|
<p class="fontBlue2 pr"><%= @ha["function_complexity"].to_i == 0 ? 0 : @ha["function_complexity"] %>
|
||||||
|
<span class="f10 c_white analysis-genral-icon <%= complexity_status(@ha["function_complexity"].to_i)[1] %> borderRadius">
|
||||||
|
<%= @ha["function_complexity"].nil? ? "良好" : complexity_status(@ha["function_complexity"].to_i)[0] %>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p id="container_duplicated_lines_density" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
||||||
|
<p class="fontGrey3">代码重复度</p>
|
||||||
|
<p class="fontBlue2 pr"><%= @ha["duplicated_lines_density"].to_i == 0 ? 0 : @ha["duplicated_lines_density"] %>
|
||||||
|
<span class="f10 c_white analysis-genral-icon <%= duplicated_lines_density_status(@ha["duplicated_lines_density"].to_i)[1] %> borderRadius">
|
||||||
|
<%= @ha["duplicated_lines_density"].nil? ? "良好" : duplicated_lines_density_status(@ha["duplicated_lines_density"].to_i)[0] %>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p id="container_comment_lines_density" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
||||||
|
<p class="fontGrey3">注释率</p>
|
||||||
|
<p class="fontBlue2 pr"><%= @ha["comment_lines_density"].to_i == 0 ? 0 : @ha["comment_lines_density"] %>
|
||||||
|
<span class="f10 c_white analysis-genral-icon <%= comment_lines_density_status(@ha["comment_lines_density"].to_i)[1] %> borderRadius">
|
||||||
|
<%= @ha["comment_lines_density"].nil? ? "较低" : comment_lines_density_status(@ha["comment_lines_density"].to_i)[0] %>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="analysis-tag-wrap f16">
|
||||||
|
<span class="analysis-tag fl mr15"></span>
|
||||||
|
<span class="fb fl mr10">质量等级</span>
|
||||||
|
<span class="mr10 fontGrey2"><span class="c_red f18" style="margin-top:-5px; display:inline-block;"><%= @ha["sqale_rating"].nil? ? 0 : score_sqale_rating(@ha["sqale_rating"].to_i) %></span>/5分</span>
|
||||||
|
<span class="fontGrey2">可定性评价为:<span class="c_red">质量<%= @ha["sqale_rating"].nil? ? "很好" : sqale_rating_status(@ha["sqale_rating"].to_i)[0] %></span></span></div>
|
||||||
|
<div class="analysis-block mt10 mb40 f14">
|
||||||
|
<div><span class="fontGrey3 mr30">技术债务</span>
|
||||||
|
<span class="w100 pInline">
|
||||||
|
<% if @ha["sqale_index"].to_i == 0 %>
|
||||||
|
0天
|
||||||
|
<% else %>
|
||||||
|
<%= /[0-9]*/.match(@ha["sqale_index"])[0] %>天
|
||||||
|
<%= / [0-9]*/.match(@ha["sqale_index"]).nil? ? "" : (/ [0-9]*/.match(@ha["sqale_index"]).to_s + "小时") %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<span class="fontGrey2"><a class="linkBlue2" target="_blank" href="<%= @sonar_address %>/drilldown/measures/<%= @resource_id %>?metric=sqale_index">查看详情</a></span></div>
|
||||||
|
<div><span class="fontGrey3 mr30 fl"> 质量问题</span>
|
||||||
|
<span class="fontBlue2 w100 pInline">
|
||||||
|
<a class="fontBlue2 w70 pInline" target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false">
|
||||||
|
<%= @ha["violations"].to_i %>
|
||||||
|
</a>
|
||||||
|
</span><span class="fontGrey2"> 问题分类如下:</span></div>
|
||||||
|
<div class="ml90 mt15">
|
||||||
|
<div class="mb10"><span class="analysis-block-icon mr5"></span><span class="fontGrey3 mr45">阻断</span>
|
||||||
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=BLOCKER" class="fontBlue2 w70 pInline">
|
||||||
|
<%= @ha["blocker_violations"].to_i %>
|
||||||
|
</a>
|
||||||
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@ha["blocker_violations"].nil? ? 0 : statistics_result_percentage(@ha["blocker_violations"].to_i, 3000) %>%;"></span></span></div>
|
||||||
|
<div class="mb10"><span class="analysis-serious-icon mr5"></span><span class="fontGrey3 mr45">严重</span>
|
||||||
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=CRITICAL" class="fontBlue2 w70 pInline">
|
||||||
|
<%= @ha["critical_violations"].to_i %>
|
||||||
|
</a>
|
||||||
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["critical_violations"].nil? ? 0 : statistics_result_percentage(@ha["critical_violations"].to_i, 3000) %>%;"></span></span></div>
|
||||||
|
<div class="mb10"><span class="analysis-main-icon mr5"></span><span class="fontGrey3 mr45">主要</span>
|
||||||
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=MAJOR" class="fontBlue2 w70 pInline">
|
||||||
|
<%= @ha["major_violations"].to_i %>
|
||||||
|
</a>
|
||||||
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["major_violations"].nil? ? 0 : statistics_result_percentage(@ha["major_violations"].to_i, 3000) %>%;"></span></span></div>
|
||||||
|
<div class="mb10"><span class="analysis-secondary-icon mr5"></span><span class="fontGrey3 mr45">次要</span>
|
||||||
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=MINOR" class="fontBlue2 w70 pInline">
|
||||||
|
<%= @ha["minor_violations"].to_i %>
|
||||||
|
</a>
|
||||||
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["minor_violations"].nil? ? 0 : statistics_result_percentage(@ha["minor_violations"].to_i, 3000) %>%;"></span></span></div>
|
||||||
|
<div><span class="analysis-info-icon mr5"></span><span class="fontGrey3 mr45">信息</span>
|
||||||
|
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=INFO" class="fontBlue2 w70 pInline">
|
||||||
|
<%= @ha["info_violations"].to_i %>
|
||||||
|
</a>
|
||||||
|
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["info_violations"].nil? ? 0 : statistics_result_percentage(@ha["info_violations"].to_i, 3000) %>%;"></span></span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-tag-wrap f16">
|
||||||
|
<span class="analysis-tag fl mr15"></span>
|
||||||
|
<span class="fb fl mr10">代码规模</span><span class="fontGrey2">可定性评价为:<span class="c_red"><%= @ha["lines"].nil? ? 0 : lines_scale(@ha["lines"].to_i) %></span></span></div>
|
||||||
|
<div class="analysis-block mt10 mb40 flex f14">
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p class="fontGrey3">代码行数</p>
|
||||||
|
<p class="fontBlue2"><%= @ha["lines"].to_i %></p>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p class="fontGrey3">文件</p>
|
||||||
|
<p class="fontBlue2"><%= @ha["files"].to_i %></p>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p class="fontGrey3">目录</p>
|
||||||
|
<p class="fontBlue2"><%= @ha["directories"].to_i %></p>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p class="fontGrey3">类</p>
|
||||||
|
<p class="fontBlue2"><%= @ha["classes"].to_i %></p>
|
||||||
|
</div>
|
||||||
|
<div class="analysis-genral">
|
||||||
|
<p class="fontGrey3">方法</p>
|
||||||
|
<p class="fontBlue2"><%= @ha["functions"].to_i %></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% if !@user_quality_infos.blank? %>
|
||||||
|
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl">贡献统计</span></div>
|
||||||
|
<div class="analysis-block mt10 f12">
|
||||||
|
<ul class="contribute-list">
|
||||||
|
<li class="fl fontGrey2 contribute-list-avatar"> </li>
|
||||||
|
<li class="fl fontGrey2 contribute-list-code">代码行数</li>
|
||||||
|
<li class="fl fontGrey2 contribute-list-problem">引入质量问题总数</li>
|
||||||
|
<li class="fl fontGrey2 contribute-list-problem">未解决质量问题数</li>
|
||||||
|
<li class="fl fontGrey2 contribute-list-rate">引入质量问题数/代码行数</li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<% @user_quality_infos.each do |author_info| %>
|
||||||
|
<% user = get_user_by_mail(author_info[:email]) %>
|
||||||
|
<%# unless author_info[:changes] == 0 %>
|
||||||
|
<ul class="contribute-list">
|
||||||
|
<li class="fl fontGrey2 contribute-list-avatar contribute-list-height">
|
||||||
|
<div class="mt8">
|
||||||
|
<%=link_to image_tag(url_to_avatar(user), :width => "50", :height => "50", :class => "image-cir"), user_path(user), :target => '_blank' %>
|
||||||
|
<p class="fontGrey2 hidden"><%=link_to (user.id == 2 ? author_info[:email] : user.show_name), user_path(user) %></p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="fl fontGrey2 contribute-list-code contribute-list-height contribute-list-line-height"><%= author_info[:changes] %></li>
|
||||||
|
<li class="fl fontGrey2 contribute-list-problem contribute-list-height contribute-list-line-height"><%= author_info[:all_issue_count] %></li>
|
||||||
|
<li class="fl fontGrey2 contribute-list-problem contribute-list-height contribute-list-line-height c_red"><%= author_info[:unresolved_issue_count] %></li>
|
||||||
|
<li class="fl contribute-list-rate fontBlue2 contribute-list-height contribute-list-line-height"><%= author_info[:ratio] %></li>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</ul>
|
||||||
|
<%# end %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="button-rep">当前分支:<%= params[:branch] %></div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
<div class="tac f20 fb mt35 mb30">项目代码质量分析报告</div>
|
|
||||||
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl">概要信息</span></div>
|
|
||||||
<%= render :partial => "hightchars" %>
|
|
||||||
<div class="analysis-block mt10 mb40 f14">
|
|
||||||
<div class="flex mb10">
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p id="container_sqale_rating" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
|
||||||
<p class="fontGrey3">质量等级</p>
|
|
||||||
<p class="fontBlue2 pr"><%= sqale_rating_status(@ha["sqale_rating"].to_i)[2] %>
|
|
||||||
<span class="f10 c_white analysis-genral-icon <%= sqale_rating_status(@ha["sqale_rating"].to_i)[1] %> borderRadius">
|
|
||||||
<%= @ha["sqale_rating"].nil? ? "很好" : sqale_rating_status(@ha["sqale_rating"].to_i)[0] %>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="analysis-genral" >
|
|
||||||
<p id="container_function_complexity" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
|
||||||
<p class="fontGrey3">复杂度</p>
|
|
||||||
<p class="fontBlue2 pr"><%= @ha["function_complexity"].to_i == 0 ? 0 : @ha["function_complexity"] %>
|
|
||||||
<span class="f10 c_white analysis-genral-icon <%= complexity_status(@ha["function_complexity"].to_i)[1] %> borderRadius">
|
|
||||||
<%= @ha["function_complexity"].nil? ? "良好" : complexity_status(@ha["function_complexity"].to_i)[0] %>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex">
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p id="container_duplicated_lines_density" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
|
||||||
<p class="fontGrey3">代码重复度</p>
|
|
||||||
<p class="fontBlue2 pr"><%= @ha["duplicated_lines_density"].to_i == 0 ? 0 : @ha["duplicated_lines_density"] %>
|
|
||||||
<span class="f10 c_white analysis-genral-icon <%= duplicated_lines_density_status(@ha["duplicated_lines_density"].to_i)[1] %> borderRadius">
|
|
||||||
<%= @ha["duplicated_lines_density"].nil? ? "良好" : duplicated_lines_density_status(@ha["duplicated_lines_density"].to_i)[0] %>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p id="container_comment_lines_density" style="max-width:200px;min-height:200px;width:200px; margin:0 auto;"></p>
|
|
||||||
<p class="fontGrey3">注释率</p>
|
|
||||||
<p class="fontBlue2 pr"><%= @ha["comment_lines_density"].to_i == 0 ? 0 : @ha["comment_lines_density"] %>
|
|
||||||
<span class="f10 c_white analysis-genral-icon <%= comment_lines_density_status(@ha["comment_lines_density"].to_i)[1] %> borderRadius">
|
|
||||||
<%= @ha["comment_lines_density"].nil? ? "较低" : comment_lines_density_status(@ha["comment_lines_density"].to_i)[0] %>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="analysis-tag-wrap f16">
|
|
||||||
<span class="analysis-tag fl mr15"></span>
|
|
||||||
<span class="fb fl mr10">质量等级</span>
|
|
||||||
<span class="mr10 fontGrey2"><span class="c_red f18" style="margin-top:-5px; display:inline-block;"><%= @ha["sqale_rating"].nil? ? 0 : score_sqale_rating(@ha["sqale_rating"].to_i) %></span>/5分</span>
|
|
||||||
<span class="fontGrey2">可定性评价为:<span class="c_red">质量<%= @ha["sqale_rating"].nil? ? "很好" : sqale_rating_status(@ha["sqale_rating"].to_i)[0] %></span></span></div>
|
|
||||||
<div class="analysis-block mt10 mb40 f14">
|
|
||||||
<div><span class="fontGrey3 mr30">技术债务</span>
|
|
||||||
<span class="w100 pInline">
|
|
||||||
<% if @ha["sqale_index"].to_i == 0 %>
|
|
||||||
0天
|
|
||||||
<% else %>
|
|
||||||
<%= /[0-9]*/.match(@ha["sqale_index"])[0] %>天
|
|
||||||
<%= / [0-9]*/.match(@ha["sqale_index"]).nil? ? "" : (/ [0-9]*/.match(@ha["sqale_index"]).to_s + "小时") %>
|
|
||||||
<% end %>
|
|
||||||
</span>
|
|
||||||
<span class="fontGrey2"><a class="linkBlue2" target="_blank" href="<%= @sonar_address %>/drilldown/measures/<%= @resource_id %>?metric=sqale_index">查看详情</a></span></div>
|
|
||||||
<div><span class="fontGrey3 mr30 fl"> 质量问题</span>
|
|
||||||
<span class="fontBlue2 w100 pInline">
|
|
||||||
<a class="fontBlue2 w70 pInline" target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false">
|
|
||||||
<%= @ha["violations"].to_i %>
|
|
||||||
</a>
|
|
||||||
</span><span class="fontGrey2"> 问题分类如下:</span></div>
|
|
||||||
<div class="ml90 mt15">
|
|
||||||
<div class="mb10"><span class="analysis-block-icon mr5"></span><span class="fontGrey3 mr45">阻断</span>
|
|
||||||
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=BLOCKER" class="fontBlue2 w70 pInline">
|
|
||||||
<%= @ha["blocker_violations"].to_i %>
|
|
||||||
</a>
|
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%=@ha["blocker_violations"].nil? ? 0 : statistics_result_percentage(@ha["blocker_violations"].to_i, 3000) %>%;"></span></span></div>
|
|
||||||
<div class="mb10"><span class="analysis-serious-icon mr5"></span><span class="fontGrey3 mr45">严重</span>
|
|
||||||
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=CRITICAL" class="fontBlue2 w70 pInline">
|
|
||||||
<%= @ha["critical_violations"].to_i %>
|
|
||||||
</a>
|
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["critical_violations"].nil? ? 0 : statistics_result_percentage(@ha["critical_violations"].to_i, 3000) %>%;"></span></span></div>
|
|
||||||
<div class="mb10"><span class="analysis-main-icon mr5"></span><span class="fontGrey3 mr45">主要</span>
|
|
||||||
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=MAJOR" class="fontBlue2 w70 pInline">
|
|
||||||
<%= @ha["major_violations"].to_i %>
|
|
||||||
</a>
|
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["major_violations"].nil? ? 0 : statistics_result_percentage(@ha["major_violations"].to_i, 3000) %>%;"></span></span></div>
|
|
||||||
<div class="mb10"><span class="analysis-secondary-icon mr5"></span><span class="fontGrey3 mr45">次要</span>
|
|
||||||
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=MINOR" class="fontBlue2 w70 pInline">
|
|
||||||
<%= @ha["minor_violations"].to_i %>
|
|
||||||
</a>
|
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["minor_violations"].nil? ? 0 : statistics_result_percentage(@ha["minor_violations"].to_i, 3000) %>%;"></span></span></div>
|
|
||||||
<div><span class="analysis-info-icon mr5"></span><span class="fontGrey3 mr45">信息</span>
|
|
||||||
<a target="_blank" href="<%= @sonar_address %>/component_issues?id=<%= @resource_id %>#resolved=false|severities=INFO" class="fontBlue2 w70 pInline">
|
|
||||||
<%= @ha["info_violations"].to_i %>
|
|
||||||
</a>
|
|
||||||
<span class="quality-percentage"><span class="quality-percentage-rate" style="width:<%= @ha["info_violations"].nil? ? 0 : statistics_result_percentage(@ha["info_violations"].to_i, 3000) %>%;"></span></span></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="analysis-tag-wrap f16">
|
|
||||||
<span class="analysis-tag fl mr15"></span>
|
|
||||||
<span class="fb fl mr10">代码规模</span><span class="fontGrey2">可定性评价为:<span class="c_red"><%= @ha["lines"].nil? ? 0 : lines_scale(@ha["lines"].to_i) %></span></span></div>
|
|
||||||
<div class="analysis-block mt10 mb40 flex f14">
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p class="fontGrey3">代码行数</p>
|
|
||||||
<p class="fontBlue2"><%= @ha["lines"].to_i %></p>
|
|
||||||
</div>
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p class="fontGrey3">文件</p>
|
|
||||||
<p class="fontBlue2"><%= @ha["files"].to_i %></p>
|
|
||||||
</div>
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p class="fontGrey3">目录</p>
|
|
||||||
<p class="fontBlue2"><%= @ha["directories"].to_i %></p>
|
|
||||||
</div>
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p class="fontGrey3">类</p>
|
|
||||||
<p class="fontBlue2"><%= @ha["classes"].to_i %></p>
|
|
||||||
</div>
|
|
||||||
<div class="analysis-genral">
|
|
||||||
<p class="fontGrey3">方法</p>
|
|
||||||
<p class="fontBlue2"><%= @ha["functions"].to_i %></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<% if !@user_quality_infos.blank? %>
|
|
||||||
<div class="analysis-tag-wrap f16"> <span class="analysis-tag fl mr15"></span> <span class="fb fl">贡献统计</span></div>
|
|
||||||
<div class="analysis-block mt10 f12">
|
|
||||||
<ul class="contribute-list">
|
|
||||||
<li class="fl fontGrey2 contribute-list-avatar"> </li>
|
|
||||||
<li class="fl fontGrey2 contribute-list-code">代码行数</li>
|
|
||||||
<li class="fl fontGrey2 contribute-list-problem">引入质量问题总数</li>
|
|
||||||
<li class="fl fontGrey2 contribute-list-problem">未解决质量问题数</li>
|
|
||||||
<li class="fl fontGrey2 contribute-list-rate">引入质量问题数/代码行数</li>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<% @user_quality_infos.each do |author_info| %>
|
|
||||||
<% user = get_user_by_mail(author_info[:email]) %>
|
|
||||||
<%# unless author_info[:changes] == 0 %>
|
|
||||||
<ul class="contribute-list">
|
|
||||||
<li class="fl fontGrey2 contribute-list-avatar contribute-list-height">
|
|
||||||
<div class="mt8">
|
|
||||||
<%=link_to image_tag(url_to_avatar(user), :width => "50", :height => "50", :class => "image-cir"), user_path(user), :target => '_blank' %>
|
|
||||||
<p class="fontGrey2 hidden"><%=link_to (user.id == 2 ? author_info[:email] : user.show_name), user_path(user) %></p>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="fl fontGrey2 contribute-list-code contribute-list-height contribute-list-line-height"><%= author_info[:changes] %></li>
|
|
||||||
<li class="fl fontGrey2 contribute-list-problem contribute-list-height contribute-list-line-height"><%= author_info[:all_issue_count] %></li>
|
|
||||||
<li class="fl fontGrey2 contribute-list-problem contribute-list-height contribute-list-line-height c_red"><%= author_info[:unresolved_issue_count] %></li>
|
|
||||||
<li class="fl contribute-list-rate fontBlue2 contribute-list-height contribute-list-line-height"><%= author_info[:ratio] %></li>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</ul>
|
|
||||||
<%# end %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
$(".project_r_h").parent().css({"width":"730px","background-color":"#fff","padding":"10px","margin-left":"10px","margin-bottom":"10px"});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
<div class="project_r_h">
|
<div class="container-big mb10">
|
||||||
<h2 class="project_h2" style="width:180px;">质量分析</h2>
|
<div class="project_r_h">
|
||||||
</div>
|
<h2 class="project_h2" style="width:180px;">质量分析</h2>
|
||||||
<div>
|
</div>
|
||||||
<div class="c_red">本次分析失败,原因如下:</div>
|
<div>
|
||||||
<% if @build_console_result == false %>
|
<div class="c_red">本次分析失败,原因如下:</div>
|
||||||
分析超时
|
<% if @build_console_result == false %>
|
||||||
<% elsif params[:message] %>
|
分析超时
|
||||||
<%= params[:message] %>
|
<% elsif params[:message] %>
|
||||||
<% else %>
|
<%= params[:message] %>
|
||||||
<%= h @error_list.try(:output).html_safe %>
|
<% else %>
|
||||||
<% end %>
|
<%= h @error_list.try(:output).html_safe %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,59 +1,57 @@
|
||||||
<div class="project_r_h" style="width:730px;">
|
<div class="container-big">
|
||||||
<div class="fl"><h2 class="project_h2_repository"><%= render :partial => 'breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %></h2></div>
|
<div class="project_r_h" style="width:970px;">
|
||||||
</div>
|
<div class="fl"><h2 class="project_h2_repository"><%= render :partial => 'breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %></h2></div>
|
||||||
<!--<script>-->
|
</div>
|
||||||
<!--// $(document).ready(function(){-->
|
<!--<script>-->
|
||||||
<!--// $("#changed-files").click(function(){-->
|
<!--// $(document).ready(function(){-->
|
||||||
<!--// $("#changed-files-detail").toggle();-->
|
<!--// $("#changed-files").click(function(){-->
|
||||||
<!--// });-->
|
<!--// $("#changed-files-detail").toggle();-->
|
||||||
<!--// });-->
|
<!--// });-->
|
||||||
<!--</script>-->
|
<!--// });-->
|
||||||
<div class="showing-changes-info fontGrey2"> Commit <a href="javascript:void()" class="linkGrey3">
|
<!--</script>-->
|
||||||
<%= @commit_details.id %></a><br />
|
<div class="showing-changes-info fontGrey2"> Commit <a href="javascript:void()" class="linkGrey3">
|
||||||
<li class="commit js-toggle-container">
|
<%= @commit_details.id %></a><br />
|
||||||
<%= render :partial => 'commit_details', :locals => {:changeset => @commit_details} %>
|
<li class="commit js-toggle-container">
|
||||||
</li>
|
<%= render :partial => 'commit_details', :locals => {:changeset => @commit_details} %>
|
||||||
</div>
|
</li>
|
||||||
<div class="showing-changes-project f14"><%= @commit_details.message %></div>
|
</div>
|
||||||
<!--<div class="showing-changes-row fontGrey2">Showing <a href="javascript:void()" class="linkGrey3" id="changed-files">3 changed files</a> with <span class="c_green">3 additions</span> and <span class="c_red">3 deletions</span>-->
|
<div class="showing-changes-project f14"><%= @commit_details.message %></div>
|
||||||
|
<!--<div class="showing-changes-row fontGrey2">Showing <a href="javascript:void()" class="linkGrey3" id="changed-files">3 changed files</a> with <span class="c_green">3 additions</span> and <span class="c_red">3 deletions</span>-->
|
||||||
<!--<ol class="mt10" id="changed-files-detail">-->
|
<!--<ol class="mt10" id="changed-files-detail">-->
|
||||||
<!--<li><a href="javascript:void()" class="linkGrey3" id="changed-files">app/views/organizations/_org_course_homework.html.erb</a> </li>-->
|
<!--<li><a href="javascript:void()" class="linkGrey3" id="changed-files">app/views/organizations/_org_course_homework.html.erb</a> </li>-->
|
||||||
<!--<li><a href="javascript:void()" class="linkGrey3" id="changed-files">app/views/users/_course_homework.html.erb</a> </li>-->
|
<!--<li><a href="javascript:void()" class="linkGrey3" id="changed-files">app/views/users/_course_homework.html.erb</a> </li>-->
|
||||||
<!--<li><a href="javascript:void()" class="linkGrey3" id="changed-files">app/views/users/_user_homework_detail.html.erb</a> </li>-->
|
<!--<li><a href="javascript:void()" class="linkGrey3" id="changed-files">app/views/users/_user_homework_detail.html.erb</a> </li>-->
|
||||||
<!--</ol>-->
|
<!--</ol>-->
|
||||||
<!--</div>-->
|
<!--</div>-->
|
||||||
|
|
||||||
<% @commit_diff.each do |cd| %>
|
<% @commit_diff.each do |cd| %>
|
||||||
<div class="showing-changes-row fontGrey2">
|
<div class="showing-changes-row fontGrey2">
|
||||||
<a href="javascript:void()" class="linkGrey3" id="changed-files">
|
<a href="javascript:void()" class="linkGrey3" id="changed-files">
|
||||||
<img src="/images/vlicon/file.png" width="18" height="20" style="vertical-align:middle;" class="mr5" /><%= cd.new_path %>
|
<img src="/images/vlicon/file.png" width="18" height="20" style="vertical-align:middle;" class="mr5" /><%= cd.new_path %>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="autoscroll">
|
<div class="autoscroll">
|
||||||
<table class="filecontent syntaxhl" style="width:100%;" >
|
<table class="filecontent syntaxhl" style="width:100%;" >
|
||||||
<tbody>
|
<tbody>
|
||||||
<% line_num = diff_line_num(cd.diff) %>
|
<% line_num = diff_line_num(cd.diff) %>
|
||||||
<% diff_content = diff_content(cd.diff) %>
|
<% diff_content = diff_content(cd.diff) %>
|
||||||
<% syntax_highlight_lines(cd.new_path, Redmine::CodesetUtil.to_utf8_by_setting(diff_content)).each do |line| %>
|
<% syntax_highlight_lines(cd.new_path, Redmine::CodesetUtil.to_utf8_by_setting(diff_content)).each do |line| %>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="line-num" id="L<%= line_num %>" style="vertical-align: top;">
|
<th class="line-num" id="L<%= line_num %>" style="vertical-align: top;">
|
||||||
<a href="#L<%= line_num %>" style="padding-top: 0px;"><%= line_num %></a>
|
<a href="#L<%= line_num %>" style="padding-top: 0px;"><%= line_num %></a>
|
||||||
</th>
|
</th>
|
||||||
<% if line[0,1] == "-" %>
|
<% if line[0,1] == "-" %>
|
||||||
<td class="line-code diff_out"><pre style="width:auto;white-space: nowrap; "><%= line.html_safe %></pre></td>
|
<td class="line-code diff_out"><pre style="width:auto;white-space: nowrap; "><%= line.html_safe %></pre></td>
|
||||||
<% elsif line[0,1] == "+" %>
|
<% elsif line[0,1] == "+" %>
|
||||||
<td class="line-code diff_in"><pre style="width:auto;white-space: nowrap; "><%= line.html_safe %></pre></td>
|
<td class="line-code diff_in"><pre style="width:auto;white-space: nowrap; "><%= line.html_safe %></pre></td>
|
||||||
<% else%>
|
<% else%>
|
||||||
<td class="line-code"><pre style="width:auto;white-space: nowrap; "><%= line.html_safe %></pre></td>
|
<td class="line-code"><pre style="width:auto;white-space: nowrap; "><%= line.html_safe %></pre></td>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tr>
|
</tr>
|
||||||
<% line_num += 1 %>
|
<% line_num += 1 %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
</div>
|
||||||
<script>
|
|
||||||
$(".project_r_h").parent().css({"width":"730px","background-color":"#fff","padding":"10px","margin-left":"10px","margin-bottom":"10px"});
|
|
||||||
</script>
|
|
||||||
|
|
|
@ -1,241 +0,0 @@
|
||||||
# = Redmine configuration file
|
|
||||||
#
|
|
||||||
# Each environment has it's own configuration options. If you are only
|
|
||||||
# running in production, only the production block needs to be configured.
|
|
||||||
# Environment specific configuration options override the default ones.
|
|
||||||
#
|
|
||||||
# Note that this file needs to be a valid YAML file.
|
|
||||||
# DO NOT USE TABS! Use 2 spaces instead of tabs for identation.
|
|
||||||
#
|
|
||||||
# == Outgoing email settings (email_delivery setting)
|
|
||||||
#
|
|
||||||
# === Common configurations
|
|
||||||
#
|
|
||||||
# ==== Sendmail command
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# email_delivery:
|
|
||||||
# delivery_method: :sendmail
|
|
||||||
#
|
|
||||||
# ==== Simple SMTP server at localhost
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# email_delivery:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# address: smtp.163.com
|
|
||||||
# port: 25
|
|
||||||
#
|
|
||||||
# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# email_delivery:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# address: smtp.gmail.com
|
|
||||||
# port: 587
|
|
||||||
# authentication: :login
|
|
||||||
# domain: 'foo.com'
|
|
||||||
# user_name: senluowanxiangt@gmail.com
|
|
||||||
# password: 1913TXBja
|
|
||||||
#
|
|
||||||
# ==== SMTP server at example.com using PLAIN authentication
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# email_delivery:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# address: smtp.gmail.com
|
|
||||||
# port: 587
|
|
||||||
# authentication: :plain
|
|
||||||
# domain: 'example.com'
|
|
||||||
# user_name: senluowanxiangt@gmail.com
|
|
||||||
# password: 1913TXBja
|
|
||||||
#
|
|
||||||
# ==== SMTP server at using TLS (GMail)
|
|
||||||
#
|
|
||||||
# This might require some additional configuration. See the guides at:
|
|
||||||
# http://www.redmine.org/projects/redmine/wiki/EmailConfiguration
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# email_delivery:
|
|
||||||
# delivery_method: :smtp
|
|
||||||
# smtp_settings:
|
|
||||||
# enable_starttls_auto: true
|
|
||||||
# address: smtp.gmail.com
|
|
||||||
# port: 587
|
|
||||||
# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
|
|
||||||
# authentication: :plain
|
|
||||||
# user_name: senluowanxiangt@gmail.com
|
|
||||||
# password: 1913TXBja
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# === More configuration options
|
|
||||||
#
|
|
||||||
# See the "Configuration options" at the following website for a list of the
|
|
||||||
# full options allowed:
|
|
||||||
#
|
|
||||||
# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
|
||||||
email_delivery:
|
|
||||||
delivery_method: :smtp
|
|
||||||
smtp_settings:
|
|
||||||
address: mail.trustie.net
|
|
||||||
port: 25
|
|
||||||
domain: mail.trustie.net
|
|
||||||
authentication: :login
|
|
||||||
user_name: "mail@trustie.net"
|
|
||||||
password: "loong2010"
|
|
||||||
|
|
||||||
# Absolute path to the directory where attachments are stored.
|
|
||||||
# The default is the 'files' directory in your Redmine instance.
|
|
||||||
# Your Redmine instance needs to have write permission on this
|
|
||||||
# directory.
|
|
||||||
# Examples:
|
|
||||||
# attachments_storage_path: /var/redmine/files
|
|
||||||
# attachments_storage_path: D:/redmine/files
|
|
||||||
attachments_storage_path:
|
|
||||||
|
|
||||||
# Configuration of the autologin cookie.
|
|
||||||
# autologin_cookie_name: the name of the cookie (default: autologin)
|
|
||||||
# autologin_cookie_path: the cookie path (default: /)
|
|
||||||
# autologin_cookie_secure: true sets the cookie secure flag (default: false)
|
|
||||||
autologin_cookie_name: "autologin_trustie"
|
|
||||||
autologin_cookie_path:
|
|
||||||
autologin_cookie_secure:
|
|
||||||
|
|
||||||
# Configuration of SCM executable command.
|
|
||||||
#
|
|
||||||
# Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
|
|
||||||
# On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
|
|
||||||
#
|
|
||||||
# On Windows + JRuby 1.6.2, path which contains spaces does not work.
|
|
||||||
# For example, "C:\Program Files\TortoiseHg\hg.exe".
|
|
||||||
# If you want to this feature, you need to install to the path which does not contains spaces.
|
|
||||||
# For example, "C:\TortoiseHg\hg.exe".
|
|
||||||
#
|
|
||||||
# Examples:
|
|
||||||
# scm_subversion_command: svn # (default: svn)
|
|
||||||
# scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg)
|
|
||||||
# scm_git_command: /usr/local/bin/git # (default: git)
|
|
||||||
# scm_cvs_command: cvs # (default: cvs)
|
|
||||||
# scm_bazaar_command: bzr.exe # (default: bzr)
|
|
||||||
# scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
|
|
||||||
#
|
|
||||||
scm_subversion_command:
|
|
||||||
scm_mercurial_command:
|
|
||||||
scm_git_command:
|
|
||||||
scm_cvs_command:
|
|
||||||
scm_bazaar_command:
|
|
||||||
scm_darcs_command:
|
|
||||||
|
|
||||||
# Absolute path to the SCM commands errors (stderr) log file.
|
|
||||||
# The default is to log in the 'log' directory of your Redmine instance.
|
|
||||||
# Example:
|
|
||||||
# scm_stderr_log_file: /var/log/redmine_scm_stderr.log
|
|
||||||
scm_stderr_log_file:
|
|
||||||
|
|
||||||
# Key used to encrypt sensitive data in the database (SCM and LDAP passwords).
|
|
||||||
# If you don't want to enable data encryption, just leave it blank.
|
|
||||||
# WARNING: losing/changing this key will make encrypted data unreadable.
|
|
||||||
#
|
|
||||||
# If you want to encrypt existing passwords in your database:
|
|
||||||
# * set the cipher key here in your configuration file
|
|
||||||
# * encrypt data using 'rake db:encrypt RAILS_ENV=production'
|
|
||||||
#
|
|
||||||
# If you have encrypted data and want to change this key, you have to:
|
|
||||||
# * decrypt data using 'rake db:decrypt RAILS_ENV=production' first
|
|
||||||
# * change the cipher key here in your configuration file
|
|
||||||
# * encrypt data using 'rake db:encrypt RAILS_ENV=production'
|
|
||||||
database_cipher_key:
|
|
||||||
|
|
||||||
# Set this to false to disable plugins' assets mirroring on startup.
|
|
||||||
# You can use `rake redmine:plugins:assets` to manually mirror assets
|
|
||||||
# to public/plugin_assets when you install/upgrade a Redmine plugin.
|
|
||||||
#
|
|
||||||
#mirror_plugins_assets_on_startup: false
|
|
||||||
|
|
||||||
# Your secret key for verifying cookie session data integrity. If you
|
|
||||||
# change this key, all old sessions will become invalid! Make sure the
|
|
||||||
# secret is at least 30 characters and all random, no regular words or
|
|
||||||
# you'll be exposed to dictionary attacks.
|
|
||||||
#
|
|
||||||
# If you have a load-balancing Redmine cluster, you have to use the
|
|
||||||
# same secret token on each machine.
|
|
||||||
#secret_token: 'change it to a long random string'
|
|
||||||
|
|
||||||
# Absolute path (e.g. /usr/bin/convert, c:/im/convert.exe) to
|
|
||||||
# the ImageMagick's `convert` binary. Used to generate attachment thumbnails.
|
|
||||||
imagemagick_convert_command: '/home/pdl/redmine-2.3.2-0/common/bin/convert'
|
|
||||||
|
|
||||||
# Configuration of RMagcik font.
|
|
||||||
#
|
|
||||||
# Redmine uses RMagcik in order to export gantt png.
|
|
||||||
# You don't need this setting if you don't install RMagcik.
|
|
||||||
#
|
|
||||||
# In CJK (Chinese, Japanese and Korean),
|
|
||||||
# in order to show CJK characters correctly,
|
|
||||||
# you need to set this configuration.
|
|
||||||
#
|
|
||||||
# Because there is no standard font across platforms in CJK,
|
|
||||||
# you need to set a font installed in your server.
|
|
||||||
#
|
|
||||||
# This setting is not necessary in non CJK.
|
|
||||||
#
|
|
||||||
# Examples for Japanese:
|
|
||||||
# Windows:
|
|
||||||
# rmagick_font_path: C:\windows\fonts\msgothic.ttc
|
|
||||||
# Linux:
|
|
||||||
# rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf
|
|
||||||
#
|
|
||||||
rmagick_font_path:
|
|
||||||
|
|
||||||
# Maximum number of simultaneous AJAX uploads
|
|
||||||
#max_concurrent_ajax_uploads: 2
|
|
||||||
#pic_types: "bmp,jpeg,jpg,png,gif"
|
|
||||||
|
|
||||||
repository_root_path: '/tmp/htdocs'
|
|
||||||
judge_server: 'http://judge.trustie.net/'
|
|
||||||
|
|
||||||
# Gitlab url
|
|
||||||
gitlab_address: 'https://git.trustie.net'
|
|
||||||
# Sonar url
|
|
||||||
sonar_address: 'http://sonar.trustie.net'
|
|
||||||
#Jenkins url
|
|
||||||
jenkins_address: 'http://jenins.trustie.net'
|
|
||||||
jenkins_username: 'temp'
|
|
||||||
jenkins_password: '123123'
|
|
||||||
|
|
||||||
# specific configuration options for production environment
|
|
||||||
# that overrides the default ones
|
|
||||||
production:
|
|
||||||
# CJK support
|
|
||||||
rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf
|
|
||||||
judge_server: 'http://192.168.80.21:8080/'
|
|
||||||
repository_root_path: '/home/pdl/redmine-2.3.2-0/apache2/htdocs'
|
|
||||||
cookie_domain: ".trustie.net"
|
|
||||||
email_delivery:
|
|
||||||
delivery_method: :smtp
|
|
||||||
smtp_settings:
|
|
||||||
address: mail.trustie.net
|
|
||||||
port: 25
|
|
||||||
domain: mail.trustie.net
|
|
||||||
authentication: :login
|
|
||||||
user_name: "mail@trustie.net"
|
|
||||||
password: "loong2010"
|
|
||||||
|
|
||||||
# specific configuration options for development environment
|
|
||||||
# that overrides the default ones
|
|
||||||
development:
|
|
||||||
email_delivery:
|
|
||||||
delivery_method: :smtp
|
|
||||||
smtp_settings:
|
|
||||||
address: mail.trustie.net
|
|
||||||
port: 25
|
|
||||||
domain: mail.trustie.net
|
|
||||||
authentication: :login
|
|
||||||
user_name: "mail@trustie.net"
|
|
||||||
password: "loong2010"
|
|
4729
db/schema.rb
4729
db/schema.rb
File diff suppressed because it is too large
Load Diff
|
@ -400,8 +400,8 @@ tr.open span.expander {background-image: url(/images/bullet_toggle_minus.png);}
|
||||||
|
|
||||||
/*版本库diff*/
|
/*版本库diff*/
|
||||||
.showing-changes-info {width:710px; padding:10px; padding-top: 0px; background-color:#ffffff; line-height:2;}
|
.showing-changes-info {width:710px; padding:10px; padding-top: 0px; background-color:#ffffff; line-height:2;}
|
||||||
.showing-changes-project {width:710px; padding:10px; border-top:1px solid #dce0e6; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;}
|
.showing-changes-project {padding:10px; border-top:1px solid #dce0e6; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;}
|
||||||
.showing-changes-row {width:710px; padding:10px; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;}
|
.showing-changes-row {padding:10px; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;}
|
||||||
#changed-files-detail {display:none;}
|
#changed-files-detail {display:none;}
|
||||||
#changed-files-detail li {list-style-type:disc; margin-left:15px;}
|
#changed-files-detail li {list-style-type:disc; margin-left:15px;}
|
||||||
.showing-changes-detail {width:670px; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;}
|
.showing-changes-detail {width:670px; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;}
|
||||||
|
@ -497,8 +497,8 @@ a:hover.upload_btn_grey{background:#8a8a8a;}
|
||||||
.image-cir {border-radius:50%;}
|
.image-cir {border-radius:50%;}
|
||||||
.analysis-genral-icon {position:absolute; padding:1px 5px; display:inline-block; top:5px;}
|
.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-avatar {width:80px; vertical-align:middle; text-align:center;}
|
||||||
.contribute-list-code {width:130px; vertical-align:middle; text-align:center;}
|
.contribute-list-code {width:200px; vertical-align:middle; text-align:center;}
|
||||||
.contribute-list-problem {width:130px; vertical-align:middle; text-align:center;}
|
.contribute-list-problem {width:200px; vertical-align:middle; text-align:center;}
|
||||||
.contribute-list-rate {width:168px; vertical-align:middle; text-align:center;}
|
.contribute-list-rate {width:168px; vertical-align:middle; text-align:center;}
|
||||||
.contribute-list-height {height:80px;}
|
.contribute-list-height {height:80px;}
|
||||||
.contribute-list-line-height {line-height:80px;}
|
.contribute-list-line-height {line-height:80px;}
|
||||||
|
@ -507,11 +507,11 @@ a:hover.upload_btn_grey{background:#8a8a8a;}
|
||||||
.analysis-result-list {padding:5px;}
|
.analysis-result-list {padding:5px;}
|
||||||
.analysis-result-list:nth-of-type(odd){background:#fff;}/*奇数行*/
|
.analysis-result-list:nth-of-type(odd){background:#fff;}/*奇数行*/
|
||||||
.analysis-result-list:nth-of-type(even){background:#f5f5f5;}/*偶数行*/
|
.analysis-result-list:nth-of-type(even){background:#f5f5f5;}/*偶数行*/
|
||||||
.analysis-result-name {width:200px;}
|
.analysis-result-name {width:250px;}
|
||||||
.analysis-result-version {width:90px; text-align:right;}
|
.analysis-result-version {width:150px; text-align:right;}
|
||||||
.analysis-result-loc {width:60px; text-align:right;}
|
.analysis-result-loc {width:150px; text-align:right;}
|
||||||
.analysis-result-debt {width:80px; text-align:right;}
|
.analysis-result-debt {width:150px; text-align:right;}
|
||||||
.analysis-result-time {width:150px; text-align:right;}
|
.analysis-result-time {width:178px; text-align:right;}
|
||||||
.analysis-result-edit {width:80px; text-align:right;}
|
.analysis-result-edit {width:80px; text-align:right;}
|
||||||
.analysis-name-icon {background:url(/images/code-analysis-icon.png) -2px -148px no-repeat; width:16px; height:16px; display:inline-block; vertical-align:middle;}
|
.analysis-name-icon {background:url(/images/code-analysis-icon.png) -2px -148px no-repeat; width:16px; height:16px; display:inline-block; vertical-align:middle;}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue