Coala的IO机制

Coala不是直接从项目目录加载文件,而是使用一个名为 File 它提供了一个处理文件的接口。

File 与简单的文件加载相比,提供以下优势。

  • 延迟加载文件:文件不必立即加载到内存中,而是Coala收集所有 File 对象,然后在需要时使用这些对象来访问文件内容。

  • 可以通过各种格式访问内容: File 提供以三种格式访问文件内容的选项。作为字符串使用 File.string ,作为列表使用 File.lines 和RAW格式,使用 File.raw 。要访问文件中的特定行,可以使用``File.line(Line_Number)``。存储原始文件内容的另一个好处是能够轻松部署仅处理原始文件的分析。因为内容不会被解码,只要 File.string 我们不再需要单独的模式来使用RAW文件。

  • 高性能: File 的属性进行缓存,以减少因多次访问同一属性而导致的不必要负载。

高速缓存

File 使用 cached_property 来装饰它的属性。因此,第一次只调用属性一次,然后将其结果存储在绑定到相同属性的缓存中 File 对象。如果再次访问同一对象的属性,则执行缓存查找,并且在不再次加载文件的情况下提供内容。一旦 File 对象被销毁,缓存也随之销毁。