PhpStorm过度缩进多行功能

时间:2017-11-21 16:47:18

标签: phpstorm phpstorm-2017.2

我目前正在尝试配置PhpStorm以生成完全符合PSR-2的代码,但是它的格式化程序在包含多个参数的函数的长行上绊倒。

当我运行格式化程序时,它将转换为:

return ($thisIsALongLine || functionCall($arg1, $arg2));

进入这个:

return ($thisIsALongLine || functionCall(
        $arg1,
        $arg2
    ));

然而,我想要的是:

return ($thisIsALongLine || functionCall(
    $arg1,
    $arg2
));

有谁知道哪个格式化程序选项告诉它在这个实例中进一步缩进多行函数调用?

注意:通常,我将上述内容格式化为:

return ($thisIsALongLine
    || functionCall($arg1, $arg2));

然而,这只是绕过了额外的缩进问题,我还需要解决其他问题。

编辑:这是Wrapping和Braces的状态,正如@LazyOne所要求的那样:

Wrapping and Braces, part 1 Wrapping and Braces, part 2

编辑2: PhpStorm的格式化程序无法正确处理的两种不同类型的行的示例。 (免责声明:这是旧系统的旧代码。)

首先,这个:

if ($validateBudget && $this->getFinancialPeriodService()->validateBudget($formModel->action, $formModel->estimatedBudget, $formModel->startDate, $formModel->endDate, $formModel->isFirstPeriod)) {

成为这个:

if ($validateBudget && $this->getFinancialPeriodService()
    ->validateBudget($formModel->action, $formModel->estimatedBudget,
        $formModel->startDate, $formModel->endDate, $formModel->isFirstPeriod)) {

根据上述设置,我希望如此:

if ($validateBudget && $this->getFinancialPeriodService()
    ->validateBudget(
        $formModel->action,
        $formModel->estimatedBudget,
        $formModel->startDate,
        $formModel->endDate,
        $formModel->isFirstPeriod
    )
) {

其次,如果在链式方法上启用对齐,那么:

if ($evaluation->getExpert() != NULL && ($evaluation->getExpert()->getStatusId() == Evaluation::STATUS_ASSIGNED || $evaluation->getEvaluationStage() == Evaluation::STAGE_PROPOSED && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage1StartDate()) == false || $evaluation->getEvaluationStage() == Evaluation::STAGE_IN_PROGRESS && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage2StartDate()) == false)) {

重新格式化为:

if ($evaluation->getExpert() != null && ($evaluation->getExpert()
                                                    ->getStatusId() == Evaluation::STATUS_ASSIGNED || $evaluation->getEvaluationStage() == Evaluation::STAGE_PROPOSED && CoreDateUtils::dateIsPast($proposal->getCalendar()
                                                                                                                                                                                                            ->getStage1StartDate()) == false || $evaluation->getEvaluationStage() == Evaluation::STAGE_IN_PROGRESS && CoreDateUtils::dateIsPast($proposal->getCalendar()
                                                                                                                                                                                                                                                                                                                                                            ->getStage2StartDate()) == false)) {

我希望如此:

if ($evaluation->getExpert() != null
    && ($evaluation->getExpert()->getStatusId() == Evaluation::STATUS_ASSIGNED
    || $evaluation->getEvaluationStage() == Evaluation::STAGE_PROPOSED
    && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage1StartDate()) == false
    || $evaluation->getEvaluationStage() == Evaluation::STAGE_IN_PROGRESS
    && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage2StartDate()) == false)
) {

说实话,此时我怀疑格式化程序中有一个错误,因此会打开一张JetBrains的票,但是如果有人确实知道为什么它会过度/不足格式化,我会把它打开。

0 个答案:

没有答案