def apply()

in scrooge-linter/src/main/scala/com/twitter/scrooge/linter/LintRule.scala [183:219]


    def apply(doc: Document): Seq[LintMessage] = {
      val messages = new ArrayBuffer[LintMessage]
      doc.defs.collect {
        case struct: StructLike =>
          languageKeywords.foreach {
            case (lang, keywords) =>
              if (keywords.contains(struct.originalName)) {
                messages += LintMessage(
                  s"Struct name ${struct.originalName}} is a $lang keyword. Avoid using keywords as identifiers.\n" +
                    s"${struct.pos.longString}"
                )
              }
          }

          for {
            (lang, keywords) <- languageKeywords
            fields = struct.fields.filter { f => keywords.contains(f.originalName) }
            if fields.nonEmpty
            fieldNames = fields.map(_.originalName)
          } messages += LintMessage(
            s"Found field names that are $lang keywords: ${fieldNames.mkString(", ")}. " +
              s"Avoid using keywords as identifiers.\n${fields.head.pos.longString}"
          )

        case service: Service =>
          for {
            (lang, keywords) <- languageKeywords
            functions = service.functions.filter { f => keywords.contains(f.originalName) }
            if functions.nonEmpty
            functionNames = functions.map(_.originalName)
          } messages += LintMessage(
            s"Found function names that are $lang keywords: ${functionNames.mkString(", ")}. " +
              s"Avoid using keywords as identifiers.\n"
          )
      }
      messages.toSeq
    }