diff options
13 files changed, 1136 insertions, 167 deletions
diff --git a/server/sonar-web/src/main/js/apps/code/components/App.js b/server/sonar-web/src/main/js/apps/code/components/App.js index 556bbb8e70c..fda516734ca 100644 --- a/server/sonar-web/src/main/js/apps/code/components/App.js +++ b/server/sonar-web/src/main/js/apps/code/components/App.js @@ -67,7 +67,8 @@ export default class App extends React.Component { addComponentBreadcrumbs(component.key, component.breadcrumbs); this.setState({ loading: true }); - retrieveComponentBase(component.key).then(component => { + const isView = component.qualifier === 'VW' || component.qualifier === 'SVW'; + retrieveComponentBase(component.key, isView).then(component => { const prefix = selectCoverageMetric(component.measures); this.coverageMetric = `${prefix}coverage`; this.handleUpdate(); @@ -82,7 +83,8 @@ export default class App extends React.Component { loadComponent (componentKey) { this.setState({ loading: true }); - retrieveComponent(componentKey).then(r => { + const isView = this.props.component.qualifier === 'VW' || this.props.component.qualifier === 'SVW'; + retrieveComponent(componentKey, isView).then(r => { if (this.mounted) { if (['FIL', 'UTS'].includes(r.component.qualifier)) { this.setState({ @@ -122,7 +124,8 @@ export default class App extends React.Component { handleLoadMore () { const { baseComponent, page } = this.state; - loadMoreChildren(baseComponent.key, page + 1).then(r => { + const isView = this.props.component.qualifier === 'VW' || this.props.component.qualifier === 'SVW'; + loadMoreChildren(baseComponent.key, page + 1, isView).then(r => { if (this.mounted) { this.setState({ components: [...this.state.components, ...r.components], diff --git a/server/sonar-web/src/main/js/apps/code/components/Component.js b/server/sonar-web/src/main/js/apps/code/components/Component.js index 5134427d03d..11b975c81c2 100644 --- a/server/sonar-web/src/main/js/apps/code/components/Component.js +++ b/server/sonar-web/src/main/js/apps/code/components/Component.js @@ -24,7 +24,6 @@ import shallowCompare from 'react-addons-shallow-compare'; import ComponentName from './ComponentName'; import ComponentMeasure from './ComponentMeasure'; -import ComponentQualityGate from './ComponentQualityGate'; import ComponentDetach from './ComponentDetach'; import ComponentPin from './ComponentPin'; @@ -83,7 +82,21 @@ export default class Component extends React.Component { } } - /* eslint object-shorthand: 0 */ + const columns = isView ? [ + { metric: 'releasability_rating', type: 'RATING' }, + { metric: 'reliability_rating', type: 'RATING' }, + { metric: 'security_rating', type: 'RATING' }, + { metric: 'sqale_rating', type: 'RATING' }, + { metric: 'ncloc', type: 'SHORT_INT' }, + ] : [ + { metric: 'ncloc', type: 'SHORT_INT' }, + { metric: 'bugs', type: 'SHORT_INT' }, + { metric: 'vulnerabilities', type: 'SHORT_INT' }, + { metric: 'code_smells', type: 'SHORT_INT' }, + { metric: coverageMetric, type: 'PERCENT' }, + { metric: 'duplicated_lines_density', type: 'PERCENT' } + ]; + return ( <tr className={classNames({ selected })}> <td className="thin nowrap"> @@ -92,64 +105,23 @@ export default class Component extends React.Component { </span> </td> <td className="code-name-cell"> - {isView && ( - <ComponentQualityGate - component={component}/> - )} <ComponentName component={component} rootComponent={rootComponent} previous={previous} canBrowse={canBrowse}/> </td> - <td className="thin nowrap text-right"> - <div className="code-components-cell"> - <ComponentMeasure - component={component} - metricKey="ncloc" - metricType="SHORT_INT"/> - </div> - </td> - <td className="thin nowrap text-right"> - <div className="code-components-cell"> - <ComponentMeasure - component={component} - metricKey="bugs" - metricType="SHORT_INT"/> - </div> - </td> - <td className="thin nowrap text-right"> - <div className="code-components-cell"> - <ComponentMeasure - component={component} - metricKey="vulnerabilities" - metricType="SHORT_INT"/> - </div> - </td> - <td className="thin nowrap text-right"> - <div className="code-components-cell"> - <ComponentMeasure - component={component} - metricKey="code_smells" - metricType="SHORT_INT"/> - </div> - </td> - <td className="thin nowrap text-right"> - <div className="code-components-cell"> - <ComponentMeasure - component={component} - metricKey={coverageMetric} - metricType="PERCENT"/> - </div> - </td> - <td className="thin nowrap text-right"> - <div className="code-components-cell"> - <ComponentMeasure - component={component} - metricKey="duplicated_lines_density" - metricType="PERCENT"/> - </div> - </td> + + {columns.map(column => ( + <td key={column.metric} className="thin nowrap text-right"> + <div className="code-components-cell"> + <ComponentMeasure + component={component} + metricKey={column.metric} + metricType={column.type}/> + </div> + </td> + ))} </tr> ); } diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.js b/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.js index a4a31655b74..4938464a414 100644 --- a/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.js +++ b/server/sonar-web/src/main/js/apps/code/components/ComponentMeasure.js @@ -19,15 +19,23 @@ */ import _ from 'underscore'; import React from 'react'; - -import { formatMeasure } from '../../../helpers/measures'; +import Measure from '../../component-measures/components/Measure'; const ComponentMeasure = ({ component, metricKey, metricType }) => { - const measure = _.findWhere(component.measures, { metric: metricKey }); + const isProject = component.qualifier === 'TRK'; + const isReleasability = metricKey === 'releasability_rating'; + + const finalMetricKey = (isProject && isReleasability) ? 'alert_status' : metricKey; + const finalMetricType = (isProject && isReleasability) ? 'LEVEL' : metricType; + + const measure = _.findWhere(component.measures, { metric: finalMetricKey }); + + if (!measure) { + return <span/>; + } + return ( - <span> - {measure ? formatMeasure(measure.value, metricType) : ''} - </span> + <Measure measure={measure} metric={{ key: finalMetricKey, type: finalMetricType }}/> ); }; diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentQualityGate.js b/server/sonar-web/src/main/js/apps/code/components/ComponentQualityGate.js deleted file mode 100644 index 599515ebefd..00000000000 --- a/server/sonar-web/src/main/js/apps/code/components/ComponentQualityGate.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -import _ from 'underscore'; -import React from 'react'; - -import { translate } from '../../../helpers/l10n'; - -const METRIC = 'alert_status'; - -const ComponentQualityGate = ({ component }) => { - const measure = _.findWhere(component.measures, { metric: METRIC }); - return measure ? ( - <span - className="spacer-right" - title={translate('metric.level', measure.value)} - style={{ position: 'relative', top: '-1px' }}> - <i className={`icon-alert-${measure.value.toLowerCase()}`}/> - </span> - ) : <span/>; -}; - -export default ComponentQualityGate; diff --git a/server/sonar-web/src/main/js/apps/code/components/Components.js b/server/sonar-web/src/main/js/apps/code/components/Components.js index 056e1795cd5..dc5a3da84e8 100644 --- a/server/sonar-web/src/main/js/apps/code/components/Components.js +++ b/server/sonar-web/src/main/js/apps/code/components/Components.js @@ -25,7 +25,7 @@ import ComponentsHeader from './ComponentsHeader'; const Components = ({ rootComponent, baseComponent, components, selected, coverageMetric }) => ( <table className="data zebra"> - <ComponentsHeader baseComponent={baseComponent}/> + <ComponentsHeader baseComponent={baseComponent} rootComponent={rootComponent}/> {baseComponent && ( <tbody> <Component diff --git a/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.js b/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.js index 0cd9e667a74..2efd63147a6 100644 --- a/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.js +++ b/server/sonar-web/src/main/js/apps/code/components/ComponentsHeader.js @@ -18,34 +18,39 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import React from 'react'; - import { translate } from '../../../helpers/l10n'; -const ComponentsHeader = ({ baseComponent }) => ( - <thead> - <tr className="code-components-header"> - <th className="thin nowrap"> </th> - <th> </th> - <th className="thin nowrap text-right code-components-cell"> - {baseComponent && translate('metric.ncloc.name')} - </th> - <th className="thin nowrap text-right code-components-cell"> - {baseComponent && translate('metric.bugs.name')} - </th> - <th className="thin nowrap text-right code-components-cell"> - {baseComponent && translate('metric.vulnerabilities.name')} - </th> - <th className="thin nowrap text-right code-components-cell"> - {baseComponent && translate('metric.code_smells.name')} - </th> - <th className="thin nowrap text-right code-components-cell"> - {baseComponent && translate('metric.coverage.name')} - </th> - <th className="thin nowrap text-right code-components-cell"> - {baseComponent && translate('metric.duplicated_lines_density.short_name')} - </th> - </tr> - </thead> -); +const ComponentsHeader = ({ baseComponent, rootComponent }) => { + const isView = rootComponent.qualifier === 'VW' || rootComponent.qualifier === 'SVW'; + + const columns = isView ? [ + translate('metric_domain.Releasability'), + translate('metric_domain.Reliability'), + translate('metric_domain.Security'), + translate('metric_domain.Maintainability'), + translate('metric', 'ncloc', 'name') + ] : [ + translate('metric', 'ncloc', 'name'), + translate('metric', 'bugs', 'name'), + translate('metric', 'vulnerabilities', 'name'), + translate('metric', 'code_smells', 'name'), + translate('metric', 'coverage', 'name'), + translate('metric', 'duplicated_lines_density', 'short_name') + ]; + + return ( + <thead> + <tr className="code-components-header"> + <th className="thin nowrap"> </th> + <th> </th> + {columns.map(column => ( + <th key={column} className="thin nowrap text-right code-components-cell"> + {baseComponent && column} + </th> + ))} + </tr> + </thead> + ); +}; export default ComponentsHeader; diff --git a/server/sonar-web/src/main/js/apps/code/utils.js b/server/sonar-web/src/main/js/apps/code/utils.js index 169f7175ac9..8347f52fe71 100644 --- a/server/sonar-web/src/main/js/apps/code/utils.js +++ b/server/sonar-web/src/main/js/apps/code/utils.js @@ -20,12 +20,12 @@ import without from 'lodash/without'; import { - addComponent, - getComponent as getComponentFromBucket, - addComponentChildren, - getComponentChildren, - addComponentBreadcrumbs, - getComponentBreadcrumbs + addComponent, + getComponent as getComponentFromBucket, + addComponentChildren, + getComponentChildren, + addComponentBreadcrumbs, + getComponentBreadcrumbs } from './bucket'; import { getChildren, getComponent, getBreadcrumbs } from '../../api/components'; import { translate } from '../../helpers/l10n'; @@ -46,19 +46,45 @@ const METRICS_WITH_COVERAGE = [ 'overall_coverage' ]; +const VIEW_METRICS = [ + 'releasability_rating', + 'alert_status', + 'reliability_rating', + 'security_rating', + 'sqale_rating', + 'ncloc' +]; + const PAGE_SIZE = 100; -function expandRootDir ({ components, total, ...other }) { - const rootDir = components.find(component => component.qualifier === 'DIR' && component.name === '/'); - if (rootDir) { - return getChildren(rootDir.key, METRICS_WITH_COVERAGE).then(r => { - const nextComponents = without([...r.components, ...components], rootDir); - const nextTotal = total + r.components.length - /* root dir */ 1; - return { components: nextComponents, total: nextTotal, ...other }; - }); - } else { - return { components, total, ...other }; - } +function requestChildren (componentKey, metrics, page) { + return getChildren(componentKey, metrics, { p: page, ps: PAGE_SIZE }).then(r => { + if (r.paging.total > r.paging.pageSize * r.paging.pageIndex) { + return requestChildren(componentKey, metrics, page + 1).then(moreComponents => { + return [...r.components, ...moreComponents]; + }) + } + return r.components; + }); +} + +function requestAllChildren (componentKey, metrics) { + return requestChildren(componentKey, metrics, 1); +} + +function expandRootDir (metrics) { + return function ({ components, total, ...other }) { + const rootDir = components.find(component => component.qualifier === 'DIR' && component.name === '/'); + if (rootDir) { + return requestAllChildren(rootDir.key, metrics).then(rootDirComponents => { + const nextComponents = without([...rootDirComponents, ...components], rootDir); + const nextTotal = total + rootDirComponents.length - /* root dir */ 1; + return { components: nextComponents, total: nextTotal, ...other }; + }); + } else { + return { components, total, ...other }; + } + }; } function prepareChildren (r) { @@ -89,19 +115,35 @@ function storeChildrenBreadcrumbs (parentComponentKey, children) { } } -export function retrieveComponentBase (componentKey) { +function getMetrics (isView) { + return isView ? VIEW_METRICS : METRICS_WITH_COVERAGE; +} + +/** + * @param {string} componentKey + * @param {boolean} isView + * @returns {Promise} + */ +export function retrieveComponentBase (componentKey, isView) { const existing = getComponentFromBucket(componentKey); if (existing) { return Promise.resolve(existing); } - return getComponent(componentKey, METRICS_WITH_COVERAGE).then(component => { + const metrics = getMetrics(isView); + + return getComponent(componentKey, metrics).then(component => { addComponent(component); return component; }); } -function retrieveComponentChildren (componentKey) { +/** + * @param {string} componentKey + * @param {boolean} isView + * @returns {Promise} + */ +function retrieveComponentChildren (componentKey, isView) { const existing = getComponentChildren(componentKey); if (existing) { return Promise.resolve({ @@ -110,9 +152,11 @@ function retrieveComponentChildren (componentKey) { }); } - return getChildren(componentKey, METRICS_WITH_COVERAGE, { ps: PAGE_SIZE, s: 'name' }) + const metrics = getMetrics(isView); + + return getChildren(componentKey, metrics, { ps: PAGE_SIZE, s: 'name' }) .then(prepareChildren) - .then(expandRootDir) + .then(expandRootDir(metrics)) .then(r => { addComponentChildren(componentKey, r.components, r.total); storeChildrenBase(r.components); @@ -135,10 +179,15 @@ function retrieveComponentBreadcrumbs (componentKey) { }); } -export function retrieveComponent (componentKey) { +/** + * @param {string} componentKey + * @param {boolean} isView + * @returns {Promise} + */ +export function retrieveComponent (componentKey, isView) { return Promise.all([ - retrieveComponentBase(componentKey), - retrieveComponentChildren(componentKey), + retrieveComponentBase(componentKey, isView), + retrieveComponentChildren(componentKey, isView), retrieveComponentBreadcrumbs(componentKey) ]).then(r => { return { @@ -151,10 +200,12 @@ export function retrieveComponent (componentKey) { }); } -export function loadMoreChildren (componentKey, page) { - return getChildren(componentKey, METRICS_WITH_COVERAGE, { ps: PAGE_SIZE, p: page }) +export function loadMoreChildren (componentKey, page, isView) { + const metrics = getMetrics(isView); + + return getChildren(componentKey, metrics, { ps: PAGE_SIZE, p: page }) .then(prepareChildren) - .then(expandRootDir) + .then(expandRootDir(metrics)) .then(r => { addComponentChildren(componentKey, r.components, r.total); storeChildrenBase(r.components); diff --git a/server/sonar-web/src/main/js/components/SelectList/index.js b/server/sonar-web/src/main/js/components/SelectList/index.js index 5506d3e42a9..e99ea016146 100644 --- a/server/sonar-web/src/main/js/components/SelectList/index.js +++ b/server/sonar-web/src/main/js/components/SelectList/index.js @@ -131,7 +131,6 @@ const SelectListItemView = Backbone.View.extend({ statusCode: { // do not show global error 400: null, - 401: null, 403: null, 500: null } diff --git a/server/sonar-web/src/main/js/helpers/l10n.js b/server/sonar-web/src/main/js/helpers/l10n.js index 3f7d48da597..7ea46291181 100644 --- a/server/sonar-web/src/main/js/helpers/l10n.js +++ b/server/sonar-web/src/main/js/helpers/l10n.js @@ -52,12 +52,17 @@ function makeRequest (params) { .setData(params) .submit() .then(response => { - if (response.status === 304) { - return JSON.parse(localStorage.getItem('l10n.bundle')); - } else if (response.status === 200) { - return response.json(); - } else { - throw new Error(response.status); + switch (response.status) { + case 200: + return response.json(); + case 304: + return JSON.parse(localStorage.getItem('l10n.bundle')); + case 401: + window.location = window.baseUrl + '/sessions/new?return_to=' + + encodeURIComponent(window.location.pathname + window.location.search + window.location.hash); + return {}; + default: + throw new Error('Unexpected status code: ' + response.status); } }); } diff --git a/server/sonar-web/src/main/js/helpers/request.js b/server/sonar-web/src/main/js/helpers/request.js index ab92b6aaec3..97e002f0d58 100644 --- a/server/sonar-web/src/main/js/helpers/request.js +++ b/server/sonar-web/src/main/js/helpers/request.js @@ -124,7 +124,11 @@ export function request (url) { * @returns {*} */ export function checkStatus (response) { - if (response.status >= 200 && response.status < 300) { + if (response.status === 401) { + window.location = window.baseUrl + '/sessions/new?return_to=' + + encodeURIComponent(window.location.pathname + window.location.search + window.location.hash); + return {}; + } else if (response.status >= 200 && response.status < 300) { return response; } else { const error = new Error(response.status); diff --git a/server/sonar-web/src/main/js/libs/sonar.js b/server/sonar-web/src/main/js/libs/sonar.js index 023708bfb7b..366925e71fd 100644 --- a/server/sonar-web/src/main/js/libs/sonar.js +++ b/server/sonar-web/src/main/js/libs/sonar.js @@ -37,6 +37,12 @@ jQuery(function () { jQuery.ajaxSetup({ beforeSend: function (jqXHR) { jqXHR.setRequestHeader(request.getCSRFTokenName(), request.getCSRFTokenValue()); + }, + statusCode: { + 401: function () { + window.location = window.baseUrl + '/sessions/new?return_to=' + + encodeURIComponent(window.location.pathname + window.location.search + window.location.hash); + } } }); diff --git a/server/sonar-web/src/main/js/main/processes.js b/server/sonar-web/src/main/js/main/processes.js index 200c2158a21..48f4cfe81ed 100644 --- a/server/sonar-web/src/main/js/main/processes.js +++ b/server/sonar-web/src/main/js/main/processes.js @@ -176,7 +176,6 @@ $.ajaxSetup({ }, statusCode: { 400: handleAjaxError, - 401: handleAjaxError, 403: handleAjaxError, 500: handleAjaxError, 502: handleAjaxError, diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index 9e62b4513b3..c6faa548cb4 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -94,6 +94,7 @@ max=Max max_items_reached=Only the first {0} components are displayed max_results_reached=Only the first {0} results are displayed me=Me +<<<<<<< HEAD min=Min minor=Minor more=More @@ -105,6 +106,557 @@ navigation=Navigation never=Never none=None unassigned=Not assigned +======= +measures.select_components=Please select "Components", "Components of" or "Favorites only" filter to see results. +measure_filter.abbr.date=Last Analysis +measure_filter.abbr.description=Description +measure_filter.abbr.key=Key +measure_filter.abbr.links=Links +measure_filter.abbr.name=Name +measure_filter.abbr.project_creation_date=First Analysis +measure_filter.abbr.short_name=Name +measure_filter.abbr.version=Version +measure_filter.add_column_button=Add Column +measure_filter.are_you_sure_want_delete_filter_x=Are you sure that you want to delete the filter "{0}"? +measure_filter.col.date=Last Analysis +measure_filter.col.description=Description +measure_filter.col.key=Key +measure_filter.col.links=Links +measure_filter.col.name=Name +measure_filter.col.project_creation_date=First Analysis +measure_filter.col.short_name=Short Name +measure_filter.col.version=Version +measure_filter.criteria.age.days=days +measure_filter.criteria.age.days_ago=days ago +measure_filter.criteria.age.more_than=Inspected more than +measure_filter.criteria.age.within_last=Inspected within the last +measure_filter.criteria.age=Age +measure_filter.criteria.alert.error=Error +measure_filter.criteria.alert.ok=Ok +measure_filter.criteria.alert.warn=Warning +measure_filter.criteria.alert=Quality Gate +measure_filter.criteria.components=Components +measure_filter.criteria.components_of=Components of +measure_filter.criteria.components_of_project=Components of project +measure_filter.criteria.date=Date +measure_filter.criteria.date_format=year-month-day (2013-01-31) +measure_filter.criteria.from_date=Inspected since +measure_filter.criteria.key=Key +measure_filter.criteria.key_contains=Key contains +measure_filter.criteria.language=Language +measure_filter.criteria.last_analysis=Last analysis +measure_filter.criteria.metric.not_set=Not set +measure_filter.criteria.metric=Metric +measure_filter.criteria.name=Name +measure_filter.criteria.name_contains=Name contains +measure_filter.criteria.only_favorites=Favorites only +measure_filter.criteria.project=Project +measure_filter.criteria.to_date=Inspected before +measure_filter.criteria.what=What? Projects, files... +measure_filter.delete_column=Delete column +measure_filter.delete_confirm_title=Delete Filter +measure_filter.display.list=List +measure_filter.display.treemap=Treemap +measure_filter.display_as=Display as +measure_filter.error.TOO_MANY_RESULTS=Too many results. Please refine your search. +measure_filter.error.UNKNOWN=Unexpected error. Please contact the administrator. +measure_filter.error.VALUE_SHOULD_BE_A_NUMBER=Value used for metric should be a number. +measure_filter.favourite_filters=Favourite Filters +measure_filter.filter_list=Measures Filters +measure_filter.key_contains=Key contains +measure_filter.languages=Languages +measure_filter.list.change=Change Columns +measure_filter.manage.my_filters=My Measures Filters +measure_filter.manage.shared_filters=Shared Measures Filters +measure_filter.manage_filters=Manage Filters +measure_filter.missing_name=Name is missing +measure_filter.more_criteria=+ More Criteria +measure_filter.name_contains=Name contains +measure_filter.name_too_long=Name is too long +measure_filter.new_search=New Search +measure_filter.no_filters=No filters +measure_filter.private=Private +measure_filter.shared_with_all_users=Shared with all users +measure_filter.sharing=Sharing +measure_filter.title_shared_filters=Shared Filters +measure_filter.treemap.change=Change Treemap +measure_filter.widget.unknown_filter_warning=This widget is configured to display a measure filter that does not exist anymore. +metric.abstractness.description=Abstractness +metric.abstractness.name=Abstractness +metric.accessors.description=Accessors +metric.accessors.name=Accessors +metric.alert_status.abbreviation=QG +metric.alert_status.description=The project status with regard to its quality gate. +metric.alert_status.name=Quality Gate Status +metric.authors_by_line.description=Authors by line +metric.authors_by_line.name=Authors by Line +metric.blocker_violations.description=Blocker issues +metric.blocker_violations.name=Blocker Issues +metric.branch_coverage.description=Condition coverage +metric.branch_coverage.name=Condition Coverage +metric.bugs.description=Bugs +metric.bugs.name=Bugs +metric.ca.description=Afferent couplings +metric.ca.name=Afferent Couplings +metric.ce.description=Efferent couplings +metric.ce.name=Efferent Couplings +metric.classes.description=Classes +metric.classes.name=Classes +metric.class_complexity.abbreviation=Cmpx/class +metric.class_complexity.description=Complexity average by class +metric.class_complexity.name=Complexity / Class +metric.class_complexity_distribution.description=Classes distribution /complexity +metric.class_complexity_distribution.name=Class Distribution / Complexity +metric.code_smells.description=Code Smells +metric.code_smells.name=Code Smells +metric.commented_out_code_lines.description=Commented lines of code +metric.commented_out_code_lines.name=Commented-Out LOC +metric.comment_blank_lines.description=Comments that do not contain comments +metric.comment_blank_lines.name=Blank Comments +metric.comment_lines.description=Number of comment lines +metric.comment_lines.name=Comment Lines +metric.comment_lines_density.description=Comments balanced by ncloc + comment lines +metric.comment_lines_density.name=Comments (%) +metric.complexity.abbreviation=Cmpx +metric.complexity.description=Cyclomatic complexity +metric.complexity.name=Complexity +metric.complexity_in_classes.description=Cyclomatic complexity in classes +metric.complexity_in_classes.name=Complexity in Classes +metric.complexity_in_functions.description=Cyclomatic complexity in functions +metric.complexity_in_functions.name=Complexity in Functions +metric.conditions_by_line.description=Conditions by line +metric.conditions_by_line.name=Conditions by Line +metric.conditions_to_cover.description=Conditions to cover +metric.conditions_to_cover.name=Conditions to Cover +metric.confirmed_issues.description=Confirmed issues +metric.confirmed_issues.name=Confirmed Issues +metric.coverage.description=Coverage by unit tests +metric.coverage.name=Coverage +metric.coverage_line_hits_data.description=Coverage hits by line +metric.coverage_line_hits_data.name=Coverage Hits by Line +metric.covered_conditions.description=Covered conditions +metric.covered_conditions.name=Covered Conditions +metric.covered_conditions_by_line.description=Covered conditions by line +metric.covered_conditions_by_line.name=Covered Conditions by Line +metric.covered_lines.description=Covered lines +metric.covered_lines.name=Covered Lines +metric.critical_violations.description=Critical issues +metric.critical_violations.name=Critical Issues +metric.development_cost.name=SQALE Development Cost +metric.directories.abbreviation=Dirs +metric.directories.description=Directories +metric.directories.name=Directories +metric.distance.description=Distance +metric.distance.name=Distance +metric.dit.description=Depth in Inheritance Tree +metric.dit.name=Depth in Tree +metric.dsm.description=Dependency Matrix +metric.dsm.name=Dependency Matrix +metric.duplicated_blocks.abbreviation=Dup. blocks +metric.duplicated_blocks.description=Duplicated blocks +metric.duplicated_blocks.name=Duplicated Blocks +metric.duplicated_files.abbreviation=Dup. files +metric.duplicated_files.description=Duplicated files +metric.duplicated_files.name=Duplicated Files +metric.duplicated_lines.abbreviation=Dup. lines +metric.duplicated_lines.description=Duplicated lines +metric.duplicated_lines.name=Duplicated Lines +metric.duplicated_lines_density.abbreviation=Dup. lines(%) +metric.duplicated_lines_density.description=Duplicated lines balanced by statements +metric.duplicated_lines_density.name=Duplicated Lines (%) +metric.duplicated_lines_density.short_name=Duplications +metric.duplications_data.description=Duplications details +metric.duplications_data.name=Duplication Details +metric.efficiency.description=Efficiency +metric.efficiency.name=Efficiency +metric.effort_to_reach_maintainability_rating_a.description=Effort to reach maintainability rating A +metric.effort_to_reach_maintainability_rating_a.name=Effort to Reach Maintainability Rating A +metric.false_positive_issues.description=False positive issues +metric.false_positive_issues.name=False Positive Issues +metric.files.description=Number of files +metric.files.name=Files +metric.file_complexity.abbreviation=Cmpx/file +metric.file_complexity.description=Complexity average by file +metric.file_complexity.name=Complexity / File +metric.file_complexity_distribution.description=Files distribution /complexity +metric.file_complexity_distribution.name=File Distribution / Complexity +metric.file_cycles.description=File cycles +metric.file_cycles.name=File Cycles +metric.file_edges_weight.description=File edges weight +metric.file_edges_weight.name=File Edges Weight +metric.file_feedback_edges.description=Suspect file dependencies +metric.file_feedback_edges.name=Suspect File Dependencies +metric.file_tangles.description=Files tangles +metric.file_tangles.name=File Tangles +metric.file_tangle_index.description=File tangle index +metric.file_tangle_index.name=File Tangle Index +metric.functions.description=Functions +metric.functions.name=Functions +metric.function_complexity.abbreviation=Cmpx/function +metric.function_complexity.description=Complexity average by function +metric.function_complexity.name=Complexity / Function +metric.function_complexity_distribution.description=Functions distribution /complexity +metric.function_complexity_distribution.name=Function Distribution / Complexity +metric.generated_lines.abbreviation=Gen. Lines +metric.generated_lines.description=Number of generated lines +metric.generated_lines.name.suffix=generated lines +metric.generated_lines.name=Generated Lines +metric.generated_ncloc.abbreviation=Gen. LOC +metric.generated_ncloc.description=Generated non Commenting Lines of Code +metric.generated_ncloc.name.suffix=generated lines of code +metric.generated_ncloc.name=Generated Lines of Code +metric.info_violations.description=Info issues +metric.info_violations.name=Info Issues +metric.instability.description=Instability +metric.instability.name=Instability +metric.it_branch_coverage.description=Condition coverage by integration tests +metric.it_branch_coverage.name=IT Condition Coverage +metric.it_conditions_by_line.description=IT conditions by line +metric.it_conditions_by_line.name=IT Conditions by Line +metric.it_conditions_to_cover.description=Conditions to cover by integration tests +metric.it_conditions_to_cover.name=IT Conditions to Cover +metric.it_coverage.description=Integration tests coverage +metric.it_coverage.name=IT Coverage +metric.it_coverage_line_hits_data.description=Coverage hits by line by integration tests +metric.it_coverage_line_hits_data.name=IT Coverage Hits by Line +metric.it_covered_conditions_by_line.description=IT covered conditions by line +metric.it_covered_conditions_by_line.name=IT Covered Conditions by Line +metric.it_lines_to_cover.description=Lines to cover by integration tests +metric.it_lines_to_cover.name=IT Lines to Cover +metric.it_line_coverage.description=Line coverage by integration tests +metric.it_line_coverage.name=IT Line Coverage +metric.it_uncovered_conditions.description=Uncovered conditions by integration tests +metric.it_uncovered_conditions.name=IT Uncovered Conditions +metric.it_uncovered_lines.description=Uncovered lines by integration tests +metric.it_uncovered_lines.name=IT Uncovered Lines +metric.last_commit_date.name=Date of Last Commit +metric.last_commit_datetimes_by_line.description=Last commit dates by line +metric.last_commit_datetimes_by_line.name=Last Commit Dates by Line +metric.lcom4.description=Lack of Cohesion of Functions +metric.lcom4.name=LCOM4 +metric.lcom4_blocks.description=LCOM4 blocks +metric.lcom4_blocks.name=LCOM4 Blocks +metric.lcom4_distribution.description=Class distribution /LCOM4 +metric.lcom4_distribution.name=Class Distribution / LCOM4 +metric.level.ERROR=Failed +metric.level.OK=Passed +metric.level.WARN=Warning +metric.lines.description=Lines +metric.lines.name=Lines +metric.lines_to_cover.description=Lines to cover +metric.lines_to_cover.name=Lines to Cover +metric.line_coverage.description=Line coverage +metric.line_coverage.name=Line Coverage +metric.maintainability.description=Maintainability +metric.maintainability.name=Maintainability +metric.major_violations.description=Major issues +metric.major_violations.name=Major Issues +metric.minor_violations.description=Minor issues +metric.minor_violations.name=Minor Issues +metric.ncloc.abbreviation=LOC +metric.ncloc.description=Non Commenting Lines of Code +metric.ncloc.name=Lines of Code +metric.ncloc_language_distribution.description=Non Commenting Lines of Code Distributed By Language +metric.ncloc_language_distribution.name=Lines of Code Per Language +metric.new_blocker_violations.description=New Blocker issues +metric.new_blocker_violations.name=New Blocker Issues +metric.new_branch_coverage.description=Condition coverage of new/changed code +metric.new_branch_coverage.name=Condition Coverage on New Code +metric.new_bugs.description=New Bugs +metric.new_bugs.name=New Bugs +metric.new_code_smells.description=New Code Smells +metric.new_code_smells.name=New Code Smells +metric.new_conditions_to_cover.description=Conditions to cover on new code +metric.new_conditions_to_cover.name=Conditions to Cover on New Code +metric.new_coverage.description=Coverage of new/changed code +metric.new_coverage.name=Coverage on New Code +metric.new_critical_violations.description=New Critical issues +metric.new_critical_violations.name=New Critical Issues +metric.new_info_violations.description=New Info issues +metric.new_info_violations.name=New Info Issues +metric.new_it_branch_coverage.description=Integration tests condition coverage of new/changed code +metric.new_it_branch_coverage.name=Condition Coverage by IT on New Code +metric.new_it_conditions_to_cover.description=New conditions to cover by integration tests +metric.new_it_conditions_to_cover.name=Conditions to Cover by IT on New Code +metric.new_it_coverage.description=Integration tests coverage of new/changed code +metric.new_it_coverage.name=Coverage by IT on New Code +metric.new_it_lines_to_cover.description=Lines to cover on new code by integration tests +metric.new_it_lines_to_cover.name=Lines to Cover by IT on New Code +metric.new_it_line_coverage.description=Integration tests line coverage of added/changed code +metric.new_it_line_coverage.name=Line Coverage by IT on New Code +metric.new_it_uncovered_conditions.description=New conditions that are not covered by integration tests +metric.new_it_uncovered_conditions.name=Uncovered Conditions by IT on New Code +metric.new_it_uncovered_lines.description=New lines that are not covered by integration tests +metric.new_it_uncovered_lines.name=Uncovered Lines by IT on New Code +metric.new_lines_to_cover.description=Lines to cover on new code +metric.new_lines_to_cover.name=Lines to Cover on New Code +metric.new_line_coverage.description=Line coverage of added/changed code +metric.new_line_coverage.name=Line Coverage on New Code +metric.new_major_violations.description=New Major issues +metric.new_major_violations.name=New Major Issues +metric.new_minor_violations.description=New Minor issues +metric.new_minor_violations.name=New Minor Issues +metric.new_overall_branch_coverage.description=Condition coverage of new/changed code by all tests +metric.new_overall_branch_coverage.name=Overall Condition Coverage on New Code +metric.new_overall_conditions_to_cover.description=New conditions to cover by all tests +metric.new_overall_conditions_to_cover.name=Overall Conditions to Cover on New Code +metric.new_overall_coverage.description=Overall coverage of new/changed code +metric.new_overall_coverage.name=Overall Coverage on New Code +metric.new_overall_lines_to_cover.description=New lines to cover by all tests +metric.new_overall_lines_to_cover.name=Overall Lines to Cover on New Code +metric.new_overall_line_coverage.description=Line coverage of added/changed code by all tests +metric.new_overall_line_coverage.name=Overall Line Coverage on New Code +metric.new_overall_uncovered_conditions.description=New conditions that are not covered by any test +metric.new_overall_uncovered_conditions.name=Overall Uncovered Conditions on New Code +metric.new_overall_uncovered_lines.description=New lines that are not covered by any tests +metric.new_overall_uncovered_lines.name=Overall Uncovered Lines on New Code +metric.new_reliability_remediation_effort.description=Reliability remediation effort on new code +metric.new_reliability_remediation_effort.name=Reliability Remediation Effort on New Code +metric.new_security_remediation_effort.description=Security remediation effort on new code +metric.new_security_remediation_effort.name=Security Remediation Effort on New Code +metric.new_sqale_debt_ratio.description=Technical Debt Ratio of new/changed code. +metric.new_sqale_debt_ratio.name=Technical Debt Ratio on New Code +metric.new_sqale_debt_ratio.short_name=Debt Ratio on new code +metric.new_technical_debt.description=Added technical debt +metric.new_technical_debt.name=Added Technical Debt +metric.new_technical_debt.short_name=Added Debt +metric.new_uncovered_conditions.description=Uncovered conditions on new code +metric.new_uncovered_conditions.name=Uncovered Conditions on New Code +metric.new_uncovered_lines.description=Uncovered lines on new code +metric.new_uncovered_lines.name=Uncovered Lines on New Code +metric.new_violations.description=New issues +metric.new_violations.name=New Issues +metric.new_vulnerabilities.description=New Vulnerabilities +metric.new_vulnerabilities.name=New Vulnerabilities +metric.noc.description=Number of Children +metric.noc.name=Number of Children +metric.open_issues.description=Open issues +metric.open_issues.name=Open Issues +metric.overall_branch_coverage.description=Condition coverage by all tests +metric.overall_branch_coverage.name=Overall Condition Coverage +metric.overall_conditions_by_line.description=Overall conditions by all tests and by line +metric.overall_conditions_by_line.name=Overall Conditions by Line +metric.overall_conditions_to_cover.description=Conditions to cover by all tests +metric.overall_conditions_to_cover.name=Overall Conditions to Cover +metric.overall_coverage.description=Overall test coverage +metric.overall_coverage.name=Overall Coverage +metric.overall_coverage_line_hits_data.description=Coverage hits by all tests and by line +metric.overall_coverage_line_hits_data.name=Overall Coverage Hits by Line +metric.overall_covered_conditions_by_line.description=Overall covered conditions by all tests and by line +metric.overall_covered_conditions_by_line.name=Overall Covered Conditions by Line +metric.overall_lines_to_cover.description=Lines to cover by all tests +metric.overall_lines_to_cover.name=Overall Lines to Cover +metric.overall_line_coverage.description=Line coverage by all tests +metric.overall_line_coverage.name=Overall Line Coverage +metric.overall_uncovered_conditions.description=Uncovered conditions by all tests +metric.overall_uncovered_conditions.name=Overall Uncovered Conditions +metric.overall_uncovered_lines.description=Uncovered lines by all tests +metric.overall_uncovered_lines.name=Overall Uncovered Lines +metric.packages.abbreviation=Pkgs +metric.packages.description=Packages +metric.packages.name=Packages +metric.package_cycles.abbreviation=Pkgs cycles +metric.package_cycles.description=Package cycles +metric.package_cycles.name=Package Cycles +metric.package_edges_weight.description=Package edges weight +metric.package_edges_weight.name=Package Edges Weight +metric.package_feedback_edges.abbreviation=Pkgs dpds to cut +metric.package_feedback_edges.description=Package dependencies to cut +metric.package_feedback_edges.name=Package Dependencies to Cut +metric.package_tangles.abbreviation=File dpds to cut +metric.package_tangles.description=File dependencies to cut +metric.package_tangles.name=File Dependencies to Cut +metric.package_tangle_index.abbreviation=Pkgs tangle +metric.package_tangle_index.description=Package tangle index +metric.package_tangle_index.name=Package Tangle Index +metric.portability.description=Portability +metric.portability.name=Portability +metric.profile.description=Selected quality profile +metric.profile.name=Profile +metric.profile_version.description=Selected quality profile version +metric.profile_version.name=Profile Version +metric.projects.description=Number of projects +metric.projects.name=Projects +metric.public_api.description=Public API +metric.public_api.name=Public API +metric.public_documented_api_density.abbreviation=Pub. doc. API(%) +metric.public_documented_api_density.description=Public documented classes and functions balanced by ncloc +metric.public_documented_api_density.name=Public Documented API (%) +metric.public_undocumented_api.abbreviation=Pub. undoc. API +metric.public_undocumented_api.description=Public undocumented classes, functions and variables +metric.public_undocumented_api.name=Public Undocumented API +metric.quality_gate_details.description=The project detailed status with regard to its quality gate +metric.quality_gate_details.name=Quality Gate Details +metric.quality_profiles.description=Details of quality profiles used during analysis +metric.quality_profiles.name=Profiles +metric.reliability.description=Reliability +metric.reliability.name=Reliability +metric.reliability_rating.description=Reliability rating +metric.reliability_rating.name=Reliability Rating +metric.reliability_remediation_effort.description=Reliability Remediation Effort +metric.reliability_remediation_effort.name=Reliability Remediation Effort +metric.reopened_issues.description=Reopened issues +metric.reopened_issues.name=Reopened Issues +metric.revisions_by_line.description=Revisions by line +metric.revisions_by_line.name=Revisions by Line +metric.rfc.description=Response for Class +metric.rfc.name=Response for Class +metric.rfc_distribution.description=Class distribution /RFC +metric.rfc_distribution.name=Class Distribution / RFC +metric.security_rating.description=Security rating +metric.security_rating.name=Security Rating +metric.security_remediation_effort.description=Security remediation effort +metric.security_remediation_effort.name=Security Remediation Effort +metric.skipped_tests.abbreviation=Skipped UTs +metric.skipped_tests.description=Number of skipped unit tests +metric.skipped_tests.name=Skipped Unit Tests +metric.skipped_tests.short_name=Skipped +metric.sqale_debt_ratio.description=Ratio of the actual technical debt compared to the estimated cost to develop the whole source code from scratch +metric.sqale_debt_ratio.name=Technical Debt Ratio +metric.sqale_debt_ratio.short_name=Debt Ratio +metric.sqale_index.description=Total effort (in days) to fix all the issues on the component and therefore to comply to all the requirements. +metric.sqale_index.name=Technical Debt +metric.sqale_index.short_name=Effort +metric.sqale_rating.description=A-to-E rating based on the technical debt ratio +metric.sqale_rating.name=Maintainability Rating +metric.statements.abbreviation=Stmts +metric.statements.description=Number of statements +metric.statements.name=Statements +metric.suspect_lcom4_density.description=Density of classes having LCOM4>1 +metric.suspect_lcom4_density.name=Suspect LCOM4 Density +metric.tests.abbreviation=UTs +metric.tests.description=Number of unit tests +metric.tests.name=Unit Tests +metric.test_data.description=Unit tests details +metric.test_data.name=Unit Test Details +metric.test_errors.abbreviation=UTs errors +metric.test_errors.description=Number of unit test errors +metric.test_errors.name=Unit Test Errors +metric.test_errors.short_name=Errors +metric.test_execution_time.abbreviation=UTs dur. +metric.test_execution_time.description=Execution duration of unit tests +metric.test_execution_time.name=Unit Test Duration +metric.test_execution_time.short_name=Duration +metric.test_failures.abbreviation=UTs failures +metric.test_failures.description=Number of unit test failures +metric.test_failures.name=Unit Test Failures +metric.test_failures.short_name=Failures +metric.test_success_density.abbreviation=UTs success +metric.test_success_density.description=Density of successful unit tests +metric.test_success_density.name=Unit Test Success (%) +metric.test_success_density.short_name=Success +metric.type.BOOL=Boolean +metric.type.DATA=Data +metric.type.DISTRIB=Distribution +metric.type.FLOAT=Float +metric.type.INT=Integer +metric.type.LEVEL=Level +metric.type.MILLISEC=Milliseconds +metric.type.PERCENT=Percent +metric.type.RATING=Rating +metric.type.STRING=String +metric.type.WORK_DUR=Work Duration +metric.uncovered_conditions.description=Uncovered conditions +metric.uncovered_conditions.name=Uncovered Conditions +metric.uncovered_lines.description=Uncovered lines +metric.uncovered_lines.name=Uncovered Lines +metric.usability.description=Usability +metric.usability.name=Usability +metric.violations.description=Issues +metric.violations.name=Issues +metric.vulnerabilities.description=Vulnerabilities +metric.vulnerabilities.name=Vulnerabilities +metric.wont_fix_issues.description=Won't fix issues +metric.wont_fix_issues.name=Won't Fix Issues +metric_domain.Complexity=Complexity +metric_domain.Coverage=Coverage +metric_domain.Design=Design +metric_domain.Documentation=Documentation +metric_domain.Duplication=Duplication +metric_domain.Duplications=Duplications +metric_domain.General=General +metric_domain.Integration Tests=Integration Tests +metric_domain.Issues=Issues +metric_domain.Maintainability=Maintainability +metric_domain.Releasability=Releasability +metric_domain.Reliability=Reliability +metric_domain.Rules=Rules +metric_domain.SCM=SCM +metric_domain.Security=Security +metric_domain.Size=Size +metric_domain.Tests=Tests +min=Min +minor=Minor +Mo=Mo +Mon=Mon +Monday=Monday +more=More +moreCriteria=+ More Criteria +more_actions=More Actions +move_left=Move left +move_right=Move right +my_account.favorite_components=Favorite Components +my_account.favorite_issue_filters=Favorite Issue Filters +my_account.favorite_measure_filters=Favorite Measure Filters +my_account.issue_widget.by_project=My Issues by Project +my_account.issue_widget.by_severity=My Issues by Severity +my_account.issue_widget.leak_last_week=Leak Last Week +my_account.my_issues=My Issues +my_account.notifications=Notifications +my_account.no_favorite_components=You do not have favorite components yet. +my_account.no_favorite_issue_filters=You do not have favorite issue filters yet. +my_account.no_favorite_measure_filters=You do not have favorite measure filters yet. +my_account.no_project_notifications=You have not set project notifications yet. +my_account.page=My Account +my_account.security=Security +my_account.tokens_description=If you want to enforce security by not providing credentials of a real SonarQube user to run your code scan or to invoke web services, you can provide a User Token as a replacement of the user login. This will increase the security of your installation by not letting your analysis user's password going through your network. +my_account.to_fix=To Fix +my_account.to_review=To Review +my_profile.add_project=Add project +my_profile.email=Email +my_profile.favorites.title=Favorites +my_profile.groups=Groups +my_profile.login=Login +my_profile.name=Name +my_profile.notifications.submit=Save changes +my_profile.overall_notifications.title=Overall notifications +my_profile.page=My Profile +my_profile.password.changed=The password has been changed! +my_profile.password.confirm=Confirm Password +my_profile.password.empty=Password can not be empty +my_profile.password.new=New Password +my_profile.password.old=Old Password +my_profile.password.submit=Change password +my_profile.password.title=Change password +my_profile.password.wrong_old=Wrong old password +my_profile.per_project_notifications.title=Notifications per project +my_profile.remove_this_line=Remove this line +my_profile.scm_accounts=SCM Accounts +name=Name +name_too_long_x=Name is too long (maximum is {0} characters) +navigation=Navigation +new_issues=New issues +new_violations=New violations +new_window=New window +Next=Next +none=None +notification.channel.EmailNotificationChannel=Email +notification.dispatcher.ChangesOnMyIssue=Changes in issues assigned to me +notification.dispatcher.information=Receive notifications when specific types of events occur. A notification is never sent to the author of the event. +notification.dispatcher.NewAlerts=New quality gate status +notification.dispatcher.NewFalsePositiveIssue=Issues resolved as false positive or won't fix +notification.dispatcher.NewIssues=New issues +notification.dispatcher.SQ-MyNewIssues=My new issues +not_authorized=You are not authorized. +not_authorized_to_access_project=You are not authorized to access to this '{0}' project +Nov=Nov +November=November +no_data=No data +no_lines_match_your_filter_criteria=No lines match your filter criteria. +no_results=No results +Oct=Oct +October=October +>>>>>>> branch-5.6 off=Off on=On open=Open @@ -112,18 +664,422 @@ open_verb=Open operations=Operations optional=Optional order=Order +<<<<<<< HEAD owner=Owner package=Package packages=Packages +======= +overall_coverage_viewer.by=by all tests +overview.complexity_tooltip.file={0} files have complexity around {1} +overview.complexity_tooltip.function={0} functions have complexity around {1} +overview.coverage_on=Coverage on +overview.domain.duplications=Duplications +overview.domain.size=Size +overview.gate.ERROR=Failed +overview.gate.OK=Passed +overview.gate.view.errors=The view failed the quality gate on the following conditions: {0}. +overview.gate.view.no_alert=The view has passed the quality gate. +overview.gate.view.warnings=The view has warnings on the following quality gate conditions: {0}. +overview.gate.WARN=Warning +overview.leak_period_x=Leak Period: {0} +overview.metric.bugs=Bugs +overview.metric.code_smells=Code Smells +overview.metric.coverage=Coverage +overview.metric.duplicated_blocks=Duplicated Blocks +overview.metric.duplications=Duplications +overview.metric.effort=Debt +overview.metric.files=Files +overview.metric.issues=Issues +overview.metric.ncloc=Lines of Code +overview.metric.new_bugs=New Bugs +overview.metric.new_code_smells=New Code Smells +overview.metric.new_coverage=Coverage on New Code +overview.metric.new_effort=New Debt +overview.metric.new_issues=New Issues +overview.metric.new_ncloc=New Lines of Code +overview.metric.new_vulnerabilities=New Vulnerabilities +overview.metric.tests=Tests +overview.metric.vulnerabilities=Vulnerabilities +overview.on_new_code=On New Code +overview.page=Overview +overview.period.date=since {0} +overview.period.days=last {0} days +overview.period.previous_analysis=since previous analysis +overview.period.previous_version=since {0} +overview.period.previous_version_only_date=since previous version +overview.period.version=since {0} +overview.quality_gate=Quality Gate +overview.quality_profiles=Quality Profiles +overview.started_on_x=Started on {0} +overview.started_x=started {0} +overview.you_should_define_quality_gate=You should define a quality gate on this project. +over_x_days.short={0} days +over_x_days=over {0} days +over_x_days_detailed.short={0} days ({1}) +over_x_days_detailed=over {0} days ({1}) +owner=Owner +package=Package +packages=Packages +page_size=Page size +paging_first=First +paging_last=Last +paging_next=Next +paging_previous=Previous +>>>>>>> branch-5.6 parameters=Parameters password=Password path=Path permalink=Permanent Link permalinks=Permalinks +<<<<<<< HEAD plugin=Plugin project=Project projects=Projects quality_profile=Quality Profile +======= +permissions.page=Permissions +permission_template.create_template=Create +permission_template.default_for=Default for {0} +permission_template.delete_confirm_title=Delete Permission Template +permission_template.delete_template=Delete +permission_template.do_you_want_to_delete_template_xxx=Are you sure that you want to delete permission template "{0}"? +permission_template.edit_permissions=Edit Permissions: {0} +permission_template.edit_template=Edit Permission Template +permission_template.key_pattern=Project key pattern +permission_template.new_template=Create Permission Template +permission_template.no_results=No template to display +permission_template.set_default_templates=Set Default Templates +permission_template.update_permissions=Save +permission_template.update_template=Update +permission_templates.page=Permission Templates +permission_templates=Permission Templates +plugin=Plugin +Prev=Prev +process.fail=Failed +process.still_working=Still Working... +project=Project +projects=Projects +projects_role.admin.desc=Access project settings and perform administration tasks. (Users will also need "Browse" permission) +projects_role.admin=Administer +projects_role.apply_template=Apply Permission Template +projects_role.apply_template_to_xxx=Apply Permission Template To "{0}" +projects_role.bulk_change=Bulk Change +projects_role.codeviewer.desc=View the project's source code. (Users will also need "Browse" permission) +projects_role.codeviewer=See Source Code +projects_role.criteria.key=Key contains +projects_role.criteria.name=Name contains +projects_role.groups=Groups +projects_role.issueadmin.desc=Perform advanced editing on issues: marking an issue False Positive / Won't Fix, and changing an Issue's severity. (Users will also need "Browse" permission) +projects_role.issueadmin=Administer Issues +projects_role.no_projects=There are currently no results to apply the permission template to. +projects_role.role=Role Membership For New +projects_role.scan.desc=Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the SonarQube server. +projects_role.scan=Execute Analysis +projects_role.user.desc=Access a project, browse its measures, and create/edit issues for it. +projects_role.user=Browse +project_deletion.delete_resource_confirmation=Are you sure you want to delete this {0}? +project_deletion.operation_cannot_be_undone=This operation can not be undone. +project_deletion.page.description=Delete this project from the SonarQube database. +project_deletion.page=Delete {0} +project_history.are_you_sure_delete_snapshot_x=Are you sure you want to delete the snapshot created on "{0}"? +project_history.col.action=Action +project_history.col.alert=Quality Gate Status +project_history.col.day=Day +project_history.col.events=Events +project_history.col.month=Month +project_history.col.profile=Profile +project_history.col.time=Time +project_history.col.version=Version +project_history.col.year=Year +project_history.create_event=Create +project_history.create_version=Create +project_history.delete=Delete +project_history.delete_snapshot=Delete +project_history.do_you_want_to_remove_version=Are you sure you want to remove "{0}" from this snapshot? +project_history.event_already_exists=Event "{0}" already exists. +project_history.event_created=Event "{0}" was created. +project_history.event_deleted=Event "{0}" was deleted. +project_history.event_updated=Event was successfully updated. +project_history.last_snapshot=Last Analysis +project_history.page.description=Edit snapshot metadata, or delete snapshots from the project history. +project_history.page=History +project_history.remove_event=Remove +project_history.remove_version=Remove +project_history.rename_event=Rename +project_history.rename_version=Rename +project_history.snapshot_deleted=The snapshot is deleted. +project_history.version_already_exists=Version "{0}" already exists. +project_history.version_created=Version "{0}" was created for current project and all its sub-projects. +project_history.version_removed=Version "{0}" was removed from current project and all its sub-projects. +project_history.version_updated=Version was updated to "{0}" for current project and all its sub-projects. +project_links.ci=Continuous integration +project_links.homepage=Home +project_links.issue=Bug Tracker +project_links.page.description=Edit some links associated with this project. +project_links.page=Links +project_links.scm=Sources +project_links.scm_dev=Developer connection +project_links.scm_ro=Read-only connection +project_name=Project name +project_quality_gate.default_qgate=Default +project_quality_gate.page.description=Choose which quality gate is associated with this project. +project_quality_gate.page=Quality Gate +project_quality_profile.default_profile=Default +project_quality_profiles.page.description=Choose which profile is associated with this project on a language-by-language basis. (Note that you will only need to select profiles for multiple languages for multi-language projects.) +project_quality_profiles.page=Quality Profiles +project_roles.page.description2=Grant and revoke project-level permissions. Permissions can be granted to groups or individual users. +project_roles.page.description=Grant and revoke permissions to this project to Browse (view a project's metrics), See Source Code, and Administer. Permissions can be granted to groups or individual users. +project_roles.page=Project Permissions +project_settings.page.description=Edit project settings. +project_settings.page=General Settings +property.category.codeCoverage=Code Coverage +property.category.differentialViews=Differential Views +property.category.duplications=Duplications +property.category.exclusions.coverage.description=Configure the files that should be ignored by code coverage calculations. +property.category.exclusions.coverage=Code Coverage +property.category.exclusions.duplications.description=Configure the files that should be ignored by duplication detection. +property.category.exclusions.duplications=Duplications +property.category.exclusions.files.description=Configure the files that should be completely ignored by the analysis. +property.category.exclusions.files=Files +property.category.exclusions.issues.description=Configure the conditions under which issues should not be reported. +property.category.exclusions.issues=Issues +property.category.exclusions=Analysis Scope +property.category.general.databaseCleaner=Database Cleaner +property.category.general.differentialViews=Differential Views +property.category.general.duplications=Duplications +property.category.general.email=Email +property.category.general.issues=Issues +property.category.general.localization=Localization +property.category.general.looknfeel=Look & Feel +property.category.general=General +property.category.java=Java +property.category.licenses.description=In case of any issue or question about licenses, please send an email to <a href="mailto:contact@sonarsource.com?subject=Question about license">contact@sonarsource.com</a>. +property.category.licenses.server_id=Server ID +property.category.licenses=Licenses +property.category.localization=Localization +property.category.scm=SCM +property.category.security.encryption=Encryption +property.category.security=Security +property.category.server_id=Server ID +property.category.technicalDebt=Technical Debt +property.error.notBoolean=Valid options are "true" and "false" +property.error.notFloat=Not a floating point number +property.error.notInOptions=Not a valid option +property.error.notInteger=Only digits are allowed +property.sonar.coverage.exclusions.description=Patterns used to exclude some files from coverage report. +property.sonar.coverage.exclusions.name=Coverage Exclusions +property.sonar.exclusions.description=Patterns used to exclude some source files from analysis. +property.sonar.exclusions.name=Source File Exclusions +property.sonar.global.exclusions.description=Patterns used to exclude some source files from analysis. They apply to every project and cannot be overridden. +property.sonar.global.exclusions.name=Global Source File Exclusions +property.sonar.global.test.exclusions.description=Patterns used to exclude some test files from analysis. They apply to every project and cannot be overridden. +property.sonar.global.test.exclusions.name=Global Test File Exclusions +property.sonar.includedModules.description=This property is deprecated since version 4.3 and should not be used anymore. +property.sonar.includedModules.name=Module Inclusions +property.sonar.inclusions.description=Patterns used to include some source files and only these ones in analysis. +property.sonar.inclusions.name=Source File Inclusions +property.sonar.skippedModules.description=This property is deprecated since version 4.3 and should not be used anymore. +property.sonar.skippedModules.name=Module Exclusions +property.sonar.test.exclusions.description=Patterns used to exclude some test files from analysis. +property.sonar.test.exclusions.name=Test File Exclusions +property.sonar.test.inclusions.description=Patterns used to include some test files and only these ones in analysis. +property.sonar.test.inclusions.name=Test File Inclusions +provisioning.missing.key=Key is missing +provisioning.missing.name=Name is missing +provisioning.no_analysis=No analysis has been performed since creation. The only available section is the configuration. +provisioning.no_results=There is currently no provisioned project. +provisioning.page.description=Use this page to initialize projects if you would like to configure them before the first analysis. Once a project is provisioned, you have access to perform all project configurations on it. +provisioning.page=Provisioning +qualifier.BRC=Sub-project +qualifier.CLA=File +qualifier.configuration.BRC=Sub-project Configuration +qualifier.configuration.CLA=File Configuration +qualifier.configuration.DEV=Developer Configuration +qualifier.configuration.DIR=Directory Configuration +qualifier.configuration.FIL=File Configuration +qualifier.configuration.PAC=Package Configuration +qualifier.configuration.SVW=Sub-view Configuration +qualifier.configuration.TRK=Project Configuration +qualifier.configuration.UTS=Unit Test File Configuration +qualifier.configuration.VW=View Configuration +qualifier.DEV=Developer +qualifier.DIR=Directory +qualifier.FIL=File +qualifier.PAC=Package +qualifier.SVW=Sub-view +qualifier.TRK=Project +qualifier.UTS=Unit Test File +qualifier.VW=View +qualifiers.all.DEV=All Developers +qualifiers.all.TRK=All Projects +qualifiers.all.VW=All Views +qualifiers.BRC=Sub-projects +qualifiers.CLA=Files +qualifiers.create.DEV=Create Developer +qualifiers.create.TRK=Create Project +qualifiers.create.VW=Create View +qualifiers.delete.DEV=Delete Developer +qualifiers.delete.TRK=Delete Project +qualifiers.delete.VW=Delete View +qualifiers.delete_confirm.DEV=Do you want to delete this developer? +qualifiers.delete_confirm.TRK=Do you want to delete this project? +qualifiers.delete_confirm.VW=Do you want to delete this view? +qualifiers.DEV=Developers +qualifiers.DIR=Directories +qualifiers.FIL=Files +qualifiers.new.DEV=New Developer +qualifiers.new.TRK=New Project +qualifiers.new.VW=New View +qualifiers.PAC=Packages +qualifiers.SVW=Sub-views +qualifiers.TRK=Projects +qualifiers.update.DEV=Update Developer +qualifiers.update.VW=Update View +qualifiers.UTS=Unit Test Files +qualifiers.VW=Views +quality_gates.add_condition=Add Condition +quality_gates.condition.leak.no=No +quality_gates.condition.leak.unconditional=Always +quality_gates.condition.leak.yes=Yes +quality_gates.conditions.error=Error +quality_gates.conditions.leak=Over Leak Period +quality_gates.conditions.metric=Metric +quality_gates.conditions.operator=Operator +quality_gates.conditions.warning=Warning +quality_gates.conditions=Conditions +quality_gates.copy=Copy Quality Gate +quality_gates.create=Create Quality Gate +quality_gates.delete.confirm.default=Are you sure you want to delete the "{0}" quality gate, which is the default quality gate? +quality_gates.delete.confirm.message=Are you sure you want to delete the "{0}" quality gate? +quality_gates.delete=Delete Quality Gate +quality_gates.delete_condition.confirm.message=Are you sure you want to delete the "{0}" condition? +quality_gates.delete_condition=Delete Condition +quality_gates.duplicated_conditions=This quality gate has duplicated conditions: +quality_gates.error_tooltip=Error Threshold +quality_gates.health_icons=Project health icons represent: +quality_gates.intro.1=Quality Gates are collections of simple boolean thresholds set on project measures. A project must pass each of the thresholds in order to pass the Quality Gate as a whole. +quality_gates.intro.2=It is possible to set a default Quality Gate, which will be applied to all projects not explicitly assigned to some other gate. +quality_gates.introduction=Only project measures are checked against thresholds. Sub-projects, directories and files are ignored. +quality_gates.metric=Metric +quality_gates.noQualityGates=No Quality Gates +quality_gates.no_conditions=No Conditions +quality_gates.operator.EQ.short== +quality_gates.operator.EQ=equals +quality_gates.operator.GT.short=> +quality_gates.operator.GT=is greater than +quality_gates.operator.LT.short=< +quality_gates.operator.LT=is less than +quality_gates.operator.NE.short=\u2260 +quality_gates.operator.NE=is not +quality_gates.page=Quality Gates +quality_gates.projects.all=All +quality_gates.projects.deselect_hint=Click to remove association between this project and the quality gate +quality_gates.projects.noResults=No Projects +quality_gates.projects.select_hint=Click to associate this project with the quality gate +quality_gates.projects.with=With +quality_gates.projects.without=Without +quality_gates.projects=Projects +quality_gates.projects_for_default.edit=You must not select specific projects for the default quality gate. +quality_gates.projects_for_default=Every project not specifically associated to a quality gate will be associated to this one by default. +quality_gates.project_period=over period {0} - defined at project level +quality_gates.rename=Rename Quality Gate +quality_gates.threshold=Threshold +quality_gates.warning_tooltip=Warning Threshold +quality_profile.x_active_rules={0} active rules +quality_profiles.activate_more=Activate More +quality_profiles.add_project_action=Add Project +quality_profiles.all_profiles=All Profiles +quality_profiles.already_exists=This profile already exists. +quality_profiles.are_you_sure_want_delete_profile_x=Are you sure that you want to delete the profile "{0}"? +quality_profiles.are_you_sure_want_delete_profile_x_and_descendants=Are you sure that you want to delete the profile "{0}" and all its descendants? +quality_profiles.are_you_sure_want_x_profile_as_default=Are you sure that you want to set the profile "{0}" as default? +quality_profiles.associated_projects=Associated projects +quality_profiles.available_projects=Available projects +quality_profiles.changelog.ACTIVATED=Activated +quality_profiles.changelog.DEACTIVATED=Deactivated +quality_profiles.changelog.empty=No changes have been done. +quality_profiles.changelog.parameter_reset_to_default_value_x=Parameter <strong>{0}</strong> reset to default value +quality_profiles.changelog.UPDATED=Updated +quality_profiles.changelog_from=Changelog from +quality_profiles.change_parent=Change Parent +quality_profiles.compare_profiles=Compare Profiles +quality_profiles.copy_new_name=New name +quality_profiles.copy_overwrite_x=You are about to copy this quality profile into the existing "{0}" profile, which will fully overwrite it. Please confirm the name if you want to overwrite, or choose another name. +quality_profiles.copy_x_overwritten=Profile '{0}' has been overwritten. +quality_profiles.copy_x_title=Copy Profile {0} - {1} +quality_profiles.create_x_language_profile=Create {0} Profile +quality_profiles.default_profile_is_x=Default profile is "{0}". +quality_profiles.deleted_profile=The profile {0} doesn't exist anymore +quality_profiles.delete_confirm_title=Delete Profile +quality_profiles.deprecated=deprecated +quality_profiles.editing_profile=Editing profile +quality_profiles.including=including +quality_profiles.including_x_overriding.suffix=, incl. {0} overriding +quality_profiles.inherits=Inherits "{0}" +quality_profiles.inherit_rules_from_profile=Inherit rules configuration from the profile +quality_profiles.intro1=Quality Profiles are collections of rules to apply during an analysis. +quality_profiles.intro2=For each language there is a default profile. All projects not explicitly assigned to some other profile will be analyzed with the default. +quality_profiles.last_version_x_with_date=last version {0} ({1}) +quality_profiles.manage_rules_tooltip=Manage rules of this profile +quality_profiles.manage_rules_tooltip_x_profile=Manage rules of profile '{0}' +quality_profiles.name_for_new_profile=Name for the new profile +quality_profiles.new_name=New name +quality_profiles.new_profile=New Profile +quality_profiles.no_profiles_for_comparison=There are no profiles for comparison +quality_profiles.no_projects_associated_to_profile_x=No projects are explicitly associated to the profile "{0}". +quality_profiles.no_results=No profiles found. Try installing a language plugin. +quality_profiles.no_version=no version +quality_profiles.only_in_profile_x=Only in {0} +quality_profiles.optional_configuration_file=Optional configuration file +quality_profiles.page=Quality Profiles +quality_profiles.parameter_set_to_x=Parameter <strong>{0}</strong> set to <strong>{1}</strong> +quality_profiles.please_type_profile_name=Please type a profile name. +quality_profiles.please_upload_backup_file=Please upload a backup file. +quality_profiles.profile_inheritance=Inheritance +quality_profiles.profile_name_cant_be_blank=Profile name can not be blank. +quality_profiles.profile_x_already_exists=Profile "{0}" already exists. +quality_profiles.profile_x_associated_to_x_projects=Profile "{0}" associated to {1} projects. +quality_profiles.profile_x_created=Profile "{0}" created. Set it as default or link it to a project to use it for next measures. +quality_profiles.profile_x_deleted=Profile "{0}" is deleted. +quality_profiles.profile_x_not_activated=Profile "{0}" is created but not activated. +quality_profiles.projects.deselect_hint=Click to remove association between this project and the quality profile +quality_profiles.projects.select_hint=Click to associate this project with the quality profile +quality_profiles.projects_for_default.edit=You must not select specific projects for the default quality profile. +quality_profiles.projects_for_default=Every project not specifically associated to a quality profile will be associated to this one by default. +quality_profiles.projects_warning=List of projects explicitly associated to this Quality profile : +quality_profiles.quality_profiles=Quality Profiles +quality_profiles.remove_projects_action=Remove All +quality_profiles.remove_projects_confirm_button=Remove All +quality_profiles.remove_projects_confirm_message=Are you sure that you want to dissociate all the projects from this profile? The default profile will be used during next analysis of these projects. +quality_profiles.remove_projects_confirm_title=Remove All Projects from Profile +quality_profiles.remove_project_action=Remove +quality_profiles.remove_project_confirm_button=Remove +quality_profiles.remove_project_confirm_message=Are you sure that you want to dissociate the project "{0}" from this profile? The default profile will be used during next analysis of this project. +quality_profiles.remove_project_confirm_title=Remove Project from Profile +quality_profiles.rename_x_title=Rename Profile {0} - {1} +quality_profiles.restore_built_in_profiles=Restore Built-in Profiles +quality_profiles.restore_built_in_profiles_confirmation=Are you sure you want to restore "{0}" profile(s) for {1}? +quality_profiles.restore_built_in_profiles_success_message={0} built-in profiles have been restored. +quality_profiles.restore_profile.success={1} rule(s) restored in profile "{0}" +quality_profiles.restore_profile.warning={1} rule(s) restored, {2} rule(s) ignored in profile "{0}" +quality_profiles.restore_profile=Restore Profile +quality_profiles.restore_submit=Restore +quality_profiles.see_rules_tooltip=See rules of this profile +quality_profiles.see_rules_tooltip_x_profile=See rules of profile '{0}' +quality_profiles.set_parent=Set parent +quality_profiles.severity_set_to_x=Severity set to <strong>{0}</strong> +quality_profiles.this_profile_has_descendants=This profile has descendants. +quality_profiles.version_x=version {0} +quality_profiles.version_x_with_date=version {0} ({1}) +quality_profiles.with_different_configuration=With different configuration +quality_profiles.with_same_configuration=With same configuration +quality_profiles.x_language_profiles={0} Profiles +quality_profiles.x_overridden_rules={0} overridden rules +quality_profiles.x_profiles={0} Profiles +quality_profiles.x_projects={0} projects +quality_profiles.x_rules_have_different_configuration={0} rules have a different configuration +quality_profiles.x_rules_only_in={0} rules only in +>>>>>>> branch-5.6 raw=Raw recent_history=Recent History refresh=Refresh |