瀏覽代碼

Feature/pm/sonar 10554 display issues from external engine (#155)

tags/7.5
Pascal Mugnier 6 年之前
父節點
當前提交
4c9a714da9

+ 2
- 2
server/sonar-web/src/main/js/app/styles/components/badges.css 查看文件

@@ -70,8 +70,8 @@ a.badge {
}

.badge-tiny-height {
height: var(--tinyControlHeight);
line-height: calc(var(--tinyControlHeight) - 1px);
height: var(--tinyControlHeight) !important;
line-height: calc(var(--tinyControlHeight) - 1px) !important;
}

.badge-muted {

+ 4
- 0
server/sonar-web/src/main/js/app/styles/components/issues.css 查看文件

@@ -90,6 +90,10 @@
overflow: hidden;
}

.issue-message .button-link {
height: 16px;
}

.issue-rule {
vertical-align: top;
margin-top: 2px;

+ 4
- 4
server/sonar-web/src/main/js/app/styles/init/misc.css 查看文件

@@ -18,19 +18,19 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
.vertical-top {
vertical-align: top;
vertical-align: top !important;
}

.vertical-bottom {
vertical-align: bottom;
vertical-align: bottom !important;
}

.vertical-middle {
vertical-align: middle;
vertical-align: middle !important;
}

.vertical-text-top {
vertical-align: text-top;
vertical-align: text-top !important;
}

.nowrap {

+ 2
- 0
server/sonar-web/src/main/js/app/types.ts 查看文件

@@ -218,6 +218,7 @@ export interface Issue {
componentUuid: string;
creationDate: string;
effort?: string;
fromExternalRule?: boolean;
key: string;
flows: FlowLocation[][];
line?: number;
@@ -400,6 +401,7 @@ export interface RuleDetails extends Rule {
htmlDesc?: string;
htmlNote?: string;
internalKey?: string;
isExternal?: boolean;
mdDesc?: string;
mdNote?: string;
remFnBaseEffort?: string;

+ 11
- 5
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsDescription.tsx 查看文件

@@ -23,7 +23,7 @@ import { updateRule } from '../../../api/rules';
import { RuleDetails } from '../../../app/types';
import MarkdownTips from '../../../components/common/MarkdownTips';
import { Button, ResetButtonLink } from '../../../components/ui/buttons';
import { translate } from '../../../helpers/l10n';
import { translate, translateWithParameters } from '../../../helpers/l10n';

interface Props {
canWrite: boolean | undefined;
@@ -192,10 +192,16 @@ export default class RuleDetailsDescription extends React.PureComponent<Props, S

return (
<div className="js-rule-description">
<div
className="coding-rules-detail-description rule-desc markdown"
dangerouslySetInnerHTML={{ __html: ruleDetails.htmlDesc || '' }}
/>
{ruleDetails.isExternal ? (
<div className="coding-rules-detail-description rule-desc markdown">
{translateWithParameters('issue.external_issue_description', ruleDetails.name)}
</div>
) : (
<div
className="coding-rules-detail-description rule-desc markdown"
dangerouslySetInnerHTML={{ __html: ruleDetails.htmlDesc || '' }}
/>
)}

{!ruleDetails.templateKey && (
<div className="coding-rules-detail-description coding-rules-detail-description-extra">

+ 7
- 5
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsMeta.tsx 查看文件

@@ -225,11 +225,13 @@ export default class RuleDetailsMeta extends React.PureComponent<Props, State> {
<header className="page-header">
<div className="pull-right">
<span className="note text-middle">{ruleDetails.key}</span>
<Link
className="coding-rules-detail-permalink link-no-underline spacer-left text-middle"
to={getRuleUrl(ruleDetails.key, this.props.organization)}>
<LinkIcon />
</Link>
{!ruleDetails.isExternal && (
<Link
className="coding-rules-detail-permalink link-no-underline spacer-left text-middle"
to={getRuleUrl(ruleDetails.key, this.props.organization)}>
<LinkIcon />
</Link>
)}
{!this.props.hideSimilarRulesFilter && (
<SimilarRulesFilter onFilterChange={this.props.onFilterChange} rule={ruleDetails} />
)}

+ 13
- 3
server/sonar-web/src/main/js/components/issue/components/IssueMessage.js 查看文件

@@ -20,13 +20,15 @@
// @flow
import React from 'react';
import PropTypes from 'prop-types';
import { translate } from '../../../helpers/l10n';
import Tooltip from '../../controls/Tooltip';
import { translate, translateWithParameters } from '../../../helpers/l10n';

export default class IssueMessage extends React.PureComponent {
/*:: props: {
engine?: string;
message: string,
rule: string,
organization: string
organization: string,
rule: string
};
*/

@@ -52,6 +54,14 @@ export default class IssueMessage extends React.PureComponent {
aria-label={translate('issue.rule_details')}
onClick={this.handleClick}
/>
{this.props.engine && (
<Tooltip
overlay={translateWithParameters('issue.from_external_rule_engine', this.props.engine)}>
<div className="outline-badge badge-tiny-height spacer-left vertical-text-top">
{this.props.engine}
</div>
</Tooltip>
)}
</div>
);
}

+ 8
- 3
server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.js 查看文件

@@ -75,7 +75,12 @@ export default function IssueTitleBar(props /*: Props */) {

return (
<div className="issue-row">
<IssueMessage message={issue.message} rule={issue.rule} organization={issue.organization} />
<IssueMessage
engine={issue.externalRuleEngine}
message={issue.message}
organization={issue.organization}
rule={issue.rule}
/>

<div className="issue-row-meta">
<ul className="list-inline issue-meta-list">
@@ -84,8 +89,8 @@ export default function IssueTitleBar(props /*: Props */) {
creationDate={issue.creationDate}
isOpen={props.currentPopup === 'changelog'}
issue={issue}
togglePopup={props.togglePopup}
onFail={props.onFail}
togglePopup={props.togglePopup}
/>
</li>
{issue.textRange != null && (
@@ -120,9 +125,9 @@ export default function IssueTitleBar(props /*: Props */) {
<SimilarIssuesFilter
isOpen={props.currentPopup === 'similarIssues'}
issue={issue}
togglePopup={props.togglePopup}
onFail={props.onFail}
onFilter={props.onFilter}
togglePopup={props.togglePopup}
/>
</li>
)}

+ 1
- 0
server/sonar-web/src/main/js/components/issue/types.js 查看文件

@@ -65,6 +65,7 @@ export type Issue = {
componentUuid: string,
creationDate: string,
effort?: string,
externalRuleEngine?: string,
key: string,
flows: Array<Array<FlowLocation>>,
line?: number,

+ 2
- 0
sonar-core/src/main/resources/org/sonar/l10n/core.properties 查看文件

@@ -610,6 +610,8 @@ issue.effort=Effort:
issue.x_effort={0} effort
issue.filter_similar_issues=Filter Similar Issues
issue.this_issue_involves_x_code_locations=This issue involves {0} code location(s)
issue.from_external_rule_engine=Issue detected by an external rule engine: {0}
issue.external_issue_description=This is external rule {0}. No details are available.
issues.return_to_list=Return to List
issues.bulk_change=All Issues ({0})
issues.bulk_change_selected=Selected Issues ({0})

Loading…
取消
儲存