linter.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include <yql/essentials/ast/yql_errors.h>
  3. #include <util/generic/hash.h>
  4. #include <util/generic/set.h>
  5. #include <yql/essentials/providers/common/provider/yql_provider_names.h>
  6. namespace NYql {
  7. namespace NFastCheck {
  8. enum class ESyntax {
  9. SExpr,
  10. YQL,
  11. PG
  12. };
  13. enum class EMode {
  14. Default,
  15. Main,
  16. Library,
  17. View
  18. };
  19. struct TCheckFilter {
  20. bool Include = true;
  21. TString CheckNameGlob;
  22. };
  23. struct TChecksRequest {
  24. TString Program;
  25. TString File;
  26. THashMap<TString, TString> ClusterMapping;
  27. ESyntax Syntax = ESyntax::YQL;
  28. ui16 SyntaxVersion = 1;
  29. bool IsAnsiLexer = false;
  30. EMode Mode = EMode::Default;
  31. TMaybe<TVector<TCheckFilter>> Filters;
  32. };
  33. struct TCheckResponse {
  34. TString CheckName;
  35. bool Success = false;
  36. TIssues Issues;
  37. };
  38. struct TChecksResponse {
  39. TVector<TCheckResponse> Checks;
  40. };
  41. TVector<TCheckFilter> ParseChecks(const TString& checks);
  42. TSet<TString> ListChecks(const TMaybe<TVector<TCheckFilter>>& filters = Nothing());
  43. TChecksResponse RunChecks(const TChecksRequest& request);
  44. }
  45. }