diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-03-11 17:24:42 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-03-11 17:24:53 +0100 |
commit | 27fb37bfd24954971ca9cc3dab3ae7e8065a827b (patch) | |
tree | 22d70b7af3e146059eddc4ffbcd6978052761c1a /sonar-server/src | |
parent | 339c8f6b3cd44c5c305ee6e82b4c55c958fb1788 (diff) | |
download | sonarqube-27fb37bfd24954971ca9cc3dab3ae7e8065a827b.tar.gz sonarqube-27fb37bfd24954971ca9cc3dab3ae7e8065a827b.zip |
SONAR-5056 Add migration to copy data on requirements from characteristics to rules and remove requirement columns from characteristics
Diffstat (limited to 'sonar-server/src')
9 files changed, 116 insertions, 26 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistration.java b/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistration.java index 7e66966c775..9175a47e8a2 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistration.java +++ b/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistration.java @@ -97,7 +97,7 @@ public class RuleRegistration implements Startable { try { RuleDefinitions.Context context = defLoader.load(); Buffer buffer = new Buffer(system.now()); - List<CharacteristicDto> characteristicDtos = characteristicDao.selectCharacteristics(); + List<CharacteristicDto> characteristicDtos = characteristicDao.selectEnabledCharacteristics(); selectRulesFromDb(buffer, sqlSession); enableRuleDefinitions(context, buffer, characteristicDtos, sqlSession); List<RuleDto> removedRules = processRemainingDbRules(buffer, sqlSession); diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/521_copy_debt_to_rules.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/521_copy_debt_to_rules.rb new file mode 100644 index 00000000000..5f6ed481448 --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/521_copy_debt_to_rules.rb @@ -0,0 +1,64 @@ +# +# SonarQube, open source software quality management tool. +# Copyright (C) 2008-2013 SonarSource +# mailto:contact AT sonarsource DOT com +# +# SonarQube 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. +# +# SonarQube 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. +# + +# +# Sonar 4.3 +# SONAR-5056 +# +class CopyDebtToRules < ActiveRecord::Migration + + class Characteristic < ActiveRecord::Base + end + + class Rule < ActiveRecord::Base + end + + def self.up + Rule.reset_column_information + + requirements = Characteristic.all( + :conditions => ['rule_id IS NOT NULL AND function_key IS NOT NULL AND enabled=?', true] + ) + requirements.each do |requirement| + rule = Rule.find_by_id(requirement.rule_id) + if rule + rule.characteristic_id = requirement.parent_id + # functions are now store in upper case + rule.remediation_function = requirement.function_key.upcase + rule.remediation_factor = to_new_remediation(requirement.factor_value, requirement.factor_unit) + rule.remediation_offset = to_new_remediation(requirement.offset_value, requirement.offset_unit) + rule.save + end + end + end + + def self.to_new_remediation(old_value, old_unit) + if old_value + unit = old_unit || 'd' + unit = unit == 'mn' ? 'min' : unit + # As value is stored in double, we have to round it in order to have an integer (for instance, if it was 1.6, we'll use 2) + old_value.to_f.ceil.to_s + unit + else + '0d' + end + end + +end + diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/522_delete_requirements.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/522_delete_requirements.rb new file mode 100644 index 00000000000..c7312af1c16 --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/522_delete_requirements.rb @@ -0,0 +1,46 @@ +# +# SonarQube, open source software quality management tool. +# Copyright (C) 2008-2013 SonarSource +# mailto:contact AT sonarsource DOT com +# +# SonarQube 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. +# +# SonarQube 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. +# + +# +# Sonar 4.3 +# SONAR-5056 +# +class DeleteRequirements < ActiveRecord::Migration + + class Characteristic < ActiveRecord::Base + end + + def self.up + Characteristic.reset_column_information + + Characteristic.delete_all('rule_id IS NOT NULL') + + # Remove columns on debt + remove_column('characteristics', 'root_id') + remove_column('characteristics', 'rule_id') + remove_column('characteristics', 'function_key') + remove_column('characteristics', 'factor_value') + remove_column('characteristics', 'factor_unit') + remove_column('characteristics', 'offset_value') + remove_column('characteristics', 'offset_unit') + end + +end + diff --git a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/ignore_rule_debt_definitions_if_rule_is_linked_on_root_characteristic.xml b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/ignore_rule_debt_definitions_if_rule_is_linked_on_root_characteristic.xml index 8c99f5e4404..3a010942f21 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/ignore_rule_debt_definitions_if_rule_is_linked_on_root_characteristic.xml +++ b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/ignore_rule_debt_definitions_if_rule_is_linked_on_root_characteristic.xml @@ -1,6 +1,6 @@ <dataset> - <characteristics id="2" kee="MEMORY_EFFICIENCY" name="Efficiency" root_id="[null]" characteristic_order="[null]" enabled="[true]"/> + <characteristics id="2" kee="MEMORY_EFFICIENCY" name="Efficiency" parent_id="[null]" characteristic_order="[null]" enabled="[true]"/> <rules id="1" plugin_rule_key="rule1" plugin_name="fake" plugin_config_key="old_config_key" name="old name" description="old description" status="READY" priority="2" cardinality="SINGLE" parent_id="[null]" diff --git a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/remove_rule_debt_definitions_if_characteristic_not_found.xml b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/remove_rule_debt_definitions_if_characteristic_not_found.xml index f926443c2de..6de51e77092 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/remove_rule_debt_definitions_if_characteristic_not_found.xml +++ b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/remove_rule_debt_definitions_if_characteristic_not_found.xml @@ -1,6 +1,6 @@ <dataset> - <characteristics id="999" kee="NEW" name="New" root_id="1" characteristic_order="1" enabled="[true]"/> + <characteristics id="999" kee="NEW" name="New" parent_id="1" characteristic_order="1" enabled="[true]"/> <rules id="1" plugin_rule_key="rule1" plugin_name="fake" plugin_config_key="old_config_key" name="old name" description="old description" status="READY" priority="2" cardinality="SINGLE" parent_id="[null]" diff --git a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/shared.xml b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/shared.xml index f652085767c..d74823494b0 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/shared.xml +++ b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/shared.xml @@ -1,6 +1,6 @@ <dataset> - <characteristics id="2" kee="MEMORY_EFFICIENCY" name="Memory Efficiency" parent_id="1" root_id="1" characteristic_order="1" enabled="[true]"/> + <characteristics id="2" kee="MEMORY_EFFICIENCY" name="Memory Efficiency" parent_id="1" characteristic_order="1" enabled="[true]"/> <rules id="1" plugin_rule_key="deprecated-key" plugin_name="deprecated-repo" plugin_config_key="[null]" name="Deprecated" description="[null]" status="READY" priority="4" cardinality="SINGLE" parent_id="[null]"/> diff --git a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_rule_fields.xml b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_rule_fields.xml index 52e585b5fe9..6ab04c32b61 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_rule_fields.xml +++ b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_rule_fields.xml @@ -1,6 +1,6 @@ <dataset> - <characteristics id="200" kee="MEMORY_EFFICIENCY" name="Memory Efficiency" root_id="1" parent_id="1" characteristic_order="1" enabled="[true]"/> + <characteristics id="200" kee="MEMORY_EFFICIENCY" name="Memory Efficiency" parent_id="1" characteristic_order="1" enabled="[true]"/> <rules id="1" plugin_rule_key="rule1" plugin_name="fake" plugin_config_key="old_config_key" name="old name" description="old description" status="READY" priority="2" cardinality="SINGLE" parent_id="[null]" diff --git a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language-result.xml b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language-result.xml index 210511b46e1..7821240a5c7 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language-result.xml +++ b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language-result.xml @@ -1,23 +1,3 @@ -<!-- - ~ SonarQube, open source software quality management tool. - ~ Copyright (C) 2008-2013 SonarSource - ~ mailto:contact AT sonarsource DOT com - ~ - ~ SonarQube 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. - ~ - ~ SonarQube 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. - --> - <dataset> <rules id="1" plugin_rule_key="rule1" plugin_name="fake" plugin_config_key="config1" name="One" description="Description of One" diff --git a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language.xml b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language.xml index a4f65e79ca4..51e70c311d4 100644 --- a/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language.xml +++ b/sonar-server/src/test/resources/org/sonar/server/rule/RuleRegistrationTest/update_template_rule_language.xml @@ -1,6 +1,6 @@ <dataset> - <characteristics id="100" kee="MEMORY_EFFICIENCY" name="Memory Efficiency" root_id="1" parent_id="1" characteristic_order="1" enabled="[true]"/> + <characteristics id="100" kee="MEMORY_EFFICIENCY" name="Memory Efficiency" parent_id="1" characteristic_order="1" enabled="[true]"/> <rules id="1" plugin_rule_key="rule1" plugin_name="fake" plugin_config_key="[null]" name="Rule one" description="[null]" status="READY" priority="4" cardinality="MULTIPLE" parent_id="[null]" language="[null]" |