#angular #typescript #sonarqube
#угловатый #машинопись #сонаркобе
Вопрос:
SonarQube идентифицирует эти 4 функции как дубликаты в некоторых определенных строках:
- бенефициары.forEach(бенефициар => {
- () => {
Вот мои функции:
affectPercentageToBeneficiares(beneficiaires: BeneficiaryData[], sum: number) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100.02 - sum) / numberOfBeneficiaresWithEmptyPrecentage;
beneficiaires.forEach(beneficiaire => {
if (beneficiaire.percentage == "") {
valueToAffecte = Math.round(valueToAffecte * 100) / 100;
beneficiaire.percentage = "" valueToAffecte;
}
})
}
affectPercentageToBeneficiaresInZeroCase(beneficiaires: BeneficiaryData[]) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100) / numberOfBeneficiaresWithEmptyPrecentage;
beneficiaires.forEach(beneficiaire => {
if (beneficiaire.percentage == "") {
valueToAffecte = Math.round(valueToAffecte * 100) / 100;
beneficiaire.percentage = "" valueToAffecte;
}
});
}
this.userProfilService.updateUser(this.UpdatedUser)
.subscribe(
() => {
this.toastr.success('User has been updated successfully', null, {
enableHtml: true,
});
},
(err) => {
this.toastr.error('erreur dans la modification utilisateur', null, {
enableHtml: true,
});
}
);
this.userProfilService.addUser(this.User)
.subscribe(
() => {
this.toastr.success('User has been created', null, {
enableHtml: true,
});
},
(err) => {
throw err;
}
);
есть ли решение для устранения проблемы для первых двух функций без необходимости объединять их в одну?
Спасибо
Ответ №1:
Вам не нужно объединять функции, проблема в том, что у вас есть точно такая же функция в двух местах ( forEach
обратный вызов). Поместите это обновление бенефициаров в свою собственную функцию или метод и вызовите его из обоих мест:
// Outside the class
function updateBeneficiaires(beneficiaires, valueToAffecte) {
beneficiaires.forEach(beneficiaire => {
if (beneficiaire.percentage == "") {
valueToAffecte = Math.round(valueToAffecte * 100) / 100;
beneficiaire.percentage = "" valueToAffecte;
}
});
}
// In the class
affectPercentageToBeneficiares(beneficiaires: BeneficiaryData[], sum: number) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100.02 - sum) / numberOfBeneficiaresWithEmptyPrecentage;
updateBeneficiaires(beneficiaires, valueToAffecte);
}
affectPercentageToBeneficiaresInZeroCase(beneficiaires: BeneficiaryData[]) {
let numberOfBeneficiaresWithEmptyPrecentage = this.getBeneficiaresWithEmptyPercentageNumber(beneficiaires);
let valueToAffecte = (100) / numberOfBeneficiaresWithEmptyPrecentage;
updateBeneficiaires(beneficiaires, valueToAffecte);
}
(Или сделайте это методом класса, но он не использует какое-либо состояние класса, поэтому, возможно, частный статический.)