{"published":"2018-08-10 14:34:17","url":"https://gfx.hatenablog.com/entry/2018/08/10/143417","width":"100%","provider_url":"https://hatena.blog","author_name":"gfx","author_url":"https://blog.hatena.ne.jp/gfx/","blog_title":"Islands in the byte stream","categories":[],"provider_name":"Hatena Blog","blog_url":"https://gfx.hatenablog.com/","height":"190","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u56fa\u6709\u306e\u30eb\u30fc\u30eb\u3092\u6307\u5b9a\u3067\u304d\u308bLinter\u3067\u3042\u308b\u3068\u3053\u308d\u306eQuerly\u304c\u3081\u3061\u3083\u4fbf\u5229","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgfx.hatenablog.com%2Fentry%2F2018%2F08%2F10%2F143417\" title=\"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u56fa\u6709\u306e\u30eb\u30fc\u30eb\u3092\u6307\u5b9a\u3067\u304d\u308bLinter\u3067\u3042\u308b\u3068\u3053\u308d\u306eQuerly\u304c\u3081\u3061\u3083\u4fbf\u5229 - Islands in the byte stream\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","image_url":null,"version":"1.0","type":"rich","description":"https://github.com/soutaro/querly Ruby\u3092\u69cb\u6587\u89e3\u6790\u3057\u305fAST\u306b\u5bfe\u3057\u3066\u72ec\u81eaDSL\u3067\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\uff06\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u3059\u30c4\u30fc\u30eb \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u56fa\u6709\u306e\u4e8b\u60c5\u306b\u914d\u616e\u3057\u305fLinter\u3068\u3057\u3066\u4f7f\u3048\u308b false positive \u4e0a\u7b49\u3067\u6ce8\u610f\u559a\u8d77\u3068\u3057\u3066\u4f7f\u3046 \u305f\u3068\u3048\u3070Kibela\u306e querly.yaml \u304b\u3089\u4e00\u90e8\u629c\u7c8b\u3059\u308b\u3068\u3053\u3093\u306a\u611f\u3058\u3067\u3059\u3002 rules: # ... - id: kibela.order_by_string pattern: - \"order(:dstr:)\" - \"where(:dstr:)\" - \"find(:dstr:)\" - \"exists?(:dstr:)\"\u2026"}