我与 IntelliJ 一起使用的 Sonarlint 向我发送警告
S1602
“删除语句周围无用的花括号”此语句:
communes.foreachPartition(
partition -> {
partition.forEachRemaining(commune -> this.validator.validerRowCommune(historique, commune));
}
);
(其中:
communes
是 org.apache.spark.sql.Dataset<Row>
partition
是 Iterator<Row>
commune
是 Row
)
在下一个函数中:
public Dataset<Row> rowCommunes(OptionsCreationLecture optionsCreationLecture, HistoriqueExecution historique, int anneeCOG, boolean inclureCommunesDelegueesAssociees, Verification... verifications) {
OptionsCreationLecture options = optionsCreationLecture != null ? optionsCreationLecture : optionsCreationLecture();
if (historique != null) {
historique.addReglesValidation(this.session, this.validator);
}
Supplier<Dataset<Row>> worker = () -> {
super.setStageDescription(this.messageSource, "row.cog.libelle.long", "row.cog.libelle.court", anneeCOG, inclureCommunesDelegueesAssociees);
LOGGER.info(this.messageSource.getMessage("row.cog.libelle.long", new Object[] {anneeCOG, inclureCommunesDelegueesAssociees}, Locale.getDefault()));
// Lier les codes communes et codes communes parents à leurs siren
Dataset<Row> c = this.cogCsvLoader.loadOpenData(anneeCOG, inclureCommunesDelegueesAssociees);
Dataset<Row> s = this.datasetSirenCommunaux.rowSirenCommunes(options, new SirenCommunesTriDepartementCommuneSiren(), anneeCOG);
Dataset<Row> communes = lierCommunesEtSiren(c,s).union(lierCommunesParentesEtSiren(c,s));
communes = communes.dropDuplicates("codeCommune", "typeCommune", "nomCommune");
communes = populationEtStrateCommunale(communes);
communes = liercontoursCommunes(communes, anneeCOG, verifications);
// Associer à chaque commune son code intercommunalité, si elle en a un (les communes-communautés peuvent ne pas en avoir).
Dataset<Row> perimetres = this.datasetPerimetres.rowPerimetres(this.session, anneeCOG, EPCIPerimetreDataset.TriPerimetresEPCI.CODE_COMMUNE_MEMBRE).selectExpr("sirenCommuneMembre", "sirenGroupement as codeEPCI", "nomGroupement as nomEPCI");
Column conditionJoinPerimetres = communes.col("sirenCommune").equalTo(perimetres.col("sirenCommuneMembre"));
verificateur().verifications("jonction communes et périmètres", communes, null, perimetres, conditionJoinPerimetres, verifications, Verification.SHOW_REJETS, Verification.COMPTAGES_ET_STATISTIQUES);
communes = communes.join(perimetres, conditionJoinPerimetres, "left");
// Y associer les départements.
communes = this.datasetDepartements.withDepartement("codeDepartementRetabli", communes, "codeDepartement", null, true, anneeCOG)
.drop("codeRegionDepartement")
.drop("codeDepartementRetabli");
communes.foreachPartition(
partition -> {
partition.forEachRemaining(commune -> this.validator.validerRowCommune(historique, commune));
}
);
return communes;
};
return constitutionStandard(options, worker,
new CacheParqueteur<>(options, this.session,
"cog-communes", "FILTRE-annee_{0,number,#0}_COMD-COMA_{1}",
new CogTriDepartementCommune(), anneeCOG, inclureCommunesDelegueesAssociees));
}
我做了很多尝试,但没有找到移除这些牙套的方法。
例如,它不是:
communes.foreachPartition(
partition -> partition.forEachRemaining(commune -> this.validator.validerRowCommune(historique, commune));
);
您只能将 lambda 表达式的主体缩短为单个语句,如果:
显然你的第二个代码片段没有满足这些规则之一,或者你可能想投资一个新的 linter。