public static void notifyAboutMissingConfig()

in src/com/jetbrains/php/tools/quality/psalm/PsalmGlobalInspection.java [86:133]


  public static void notifyAboutMissingConfig(@NotNull Project project, @NotNull String path) {
    final Notification notification =
      new Notification(GROUP_ID, PsalmQualityToolType.INSTANCE.getDisplayName(),
                       PsalmBundle.message("psalm.config.not.found", path), WARNING);

    notification.addAction(new AnAction(PsalmBundle.message("action.show.inspection.settings.text")) {
      @Override
      public void actionPerformed(@NotNull AnActionEvent e) {
        editToolSettings(project, ProjectInspectionProfileManager.getInstance(project).getCurrentProfile(),
                         PsalmQualityToolType.INSTANCE.getInspectionShortName(project));
        notification.expire();
      }
    });
    //noinspection DialogTitleCapitalization
    notification.addAction(new AnAction(PsalmBundle.message("action.generate.psalm.xml.in.project.root.text")) {
      @Override
      public void actionPerformed(@NotNull AnActionEvent e) {
        try {
          final PsalmConfiguration configuration = PsalmProjectConfiguration.getInstance(project).findSelectedConfiguration(project, false);
          if (configuration == null) {
            return;
          }
          getToolOutput(project, configuration.getInterpreterId(), configuration.getToolPath(), configuration.getTimeout(),
                        PsalmBundle.message("action.generate.psalm.xml.in.project.root"), null, "--init", ".", "3");
          final Path configPath = Paths.get(project.getBasePath(), "psalm.xml");
          markDirtyAndRefresh(true, false, false, new File(configPath.toString()));
          updateInspectionSettings(configPath);
          notification.expire();
        }
        catch (QualityToolValidationException | ExecutionException exception) {
          Notifications.Bus.notify(new Notification(GROUP_ID, PsalmQualityToolType.INSTANCE.getDisplayName(),
                                                  PsalmBundle.message("psalm.config.not.generated"), WARNING));
          
        }
      }

      private void updateInspectionSettings(Path configPath) {
        VirtualFile projectDir = project.getBaseDir();
        if (projectDir == null) return;
        final PsiDirectory file = PsiManager.getInstance(project).findDirectory(projectDir);
        if (file == null) return;
        InspectionProfileManager.getInstance(project).getCurrentProfile().modifyToolSettings(
          Key.<PsalmGlobalInspection>create(PsalmQualityToolType.INSTANCE.getInspectionId()), file,
          inspection -> PsalmOptionsConfiguration.getInstance(project).setConfig(configPath.toString()));
      }
    });
    Notifications.Bus.notify(notification);
  }