[ ], /** * A list of directories that should be parsed for class and * method information. After excluding the directories * defined in exclude_analysis_directory_list, the remaining * files will be statically analyzed for errors. * * Thus, both first-party and third-party code being used by * your application should be included in this list. */ 'directory_list' => [ './../../includes', './../../languages', './../../maintenance', './../../vendor', '.' ], /** * A file list that defines files that will be excluded * from parsing and analysis and will not be read at all. * * This is useful for excluding hopelessly unanalyzable * files that can't be removed for whatever reason. */ 'exclude_file_list' => [ ], /** * A list of directories holding code that we want * to parse, but not analyze. Also works for individual * files. */ "exclude_analysis_directory_list" => [ './../../includes', './../../languages', './../../maintenance', './../../vendor', './vendor', ], /** * Backwards Compatibility Checking. This is slow * and expensive, but you should consider running * it before upgrading your version of PHP to a * new version that has backward compatibility * breaks. */ 'backward_compatibility_checks' => false, /** * A set of fully qualified class-names for which * a call to parent::__construct() is required */ 'parent_constructor_required' => [ ], /** * Run a quick version of checks that takes less * time at the cost of not running as thorough * an analysis. You should consider setting this * to true only when you wish you had more issues * to fix in your code base. * * In quick-mode the scanner doesn't rescan a function * or a method's code block every time a call is seen. * This means that the problem here won't be detected: * * ```php * false, /** * By default, Phan will not analyze all node types * in order to save time. If this config is set to true, * Phan will dig deeper into the AST tree and do an * analysis on all nodes, possibly finding more issues. * * See \Phan\Analysis::shouldVisit for the set of skipped * nodes. */ 'should_visit_all_nodes' => true, /** * If enabled, check all methods that override a * parent method to make sure its signature is * compatible with the parent's. This check * can add quite a bit of time to the analysis. */ 'analyze_signature_compatibility' => true, // Emit all issues. They are then suppressed via // suppress_issue_types, rather than a minimum // severity. "minimum_severity" => 0, /** * If true, missing properties will be created when * they are first seen. If false, we'll report an * error message if there is an attempt to write * to a class property that wasn't explicitly * defined. */ 'allow_missing_properties' => false, /** * Allow null to be cast as any type and for any * type to be cast to null. Setting this to false * will cut down on false positives. */ 'null_casts_as_any_type' => true, /** * If enabled, scalars (int, float, bool, string, null) * are treated as if they can cast to each other. * * MediaWiki is pretty lax and uses many scalar * types interchangably. */ 'scalar_implicit_cast' => true, /** * If true, seemingly undeclared variables in the global * scope will be ignored. This is useful for projects * with complicated cross-file globals that you have no * hope of fixing. */ 'ignore_undeclared_variables_in_global_scope' => false, /** * Set to true in order to attempt to detect dead * (unreferenced) code. Keep in mind that the * results will only be a guess given that classes, * properties, constants and methods can be referenced * as variables (like `$class->$property` or * `$class->$method()`) in ways that we're unable * to make sense of. */ 'dead_code_detection' => false, /** * If true, the dead code detection rig will * prefer false negatives (not report dead code) to * false positives (report dead code that is not * actually dead) which is to say that the graph of * references will create too many edges rather than * too few edges when guesses have to be made about * what references what. */ 'dead_code_detection_prefer_false_negative' => true, /** * If disabled, Phan will not read docblock type * annotation comments (such as for @return, @param, * @var, @suppress, @deprecated) and only rely on * types expressed in code. */ 'read_type_annotations' => true, /** * If a file path is given, the code base will be * read from and written to the given location in * order to attempt to save some work from being * done. Only changed files will get analyzed if * the file is read */ 'stored_state_file_path' => null, /** * Set to true in order to ignore issue suppression. * This is useful for testing the state of your code, but * unlikely to be useful outside of that. */ 'disable_suppression' => false, /** * If set to true, we'll dump the AST instead of * analyzing files */ 'dump_ast' => false, /** * If set to a string, we'll dump the fully qualified lowercase * function and method signatures instead of analyzing files. */ 'dump_signatures_file' => null, /** * If true (and if stored_state_file_path is set) we'll * look at the list of files passed in and expand the list * to include files that depend on the given files */ 'expand_file_list' => false, // Include a progress bar in the output 'progress_bar' => false, /** * The probability of actually emitting any progress * bar update. Setting this to something very low * is good for reducing network IO and filling up * your terminal's buffer when running phan on a * remote host. */ 'progress_bar_sample_rate' => 0.005, /** * The number of processes to fork off during the analysis * phase. */ 'processes' => 1, /** * Add any issue types (such as 'PhanUndeclaredMethod') * to this black-list to inhibit them from being reported. */ 'suppress_issue_types' => [ 'PhanDeprecatedClass', 'PhanDeprecatedFunction' ], /** * If empty, no filter against issues types will be applied. * If this white-list is non-empty, only issues within the list * will be emitted by Phan. */ 'whitelist_issue_types' => [ ], /** * Override to hardcode existence and types of (non-builtin) globals in the global scope. * Class names must be prefixed with '\\'. * (E.g. ['_FOO' => '\\FooClass', 'page' => '\\PageClass', 'userId' => 'int']) */ 'globals_type_map' => [ 'wgMessagesDirs' => 'array', ], // Emit issue messages with markdown formatting 'markdown_issue_messages' => false, /** * Enable or disable support for generic templated * class types. */ 'generic_types_enabled' => true, // A list of plugin files to execute 'plugins' => [ ], ];