Scala有哪些可用的代码覆盖率工具?
我有Scala规范测试和Hudson持续集成设置.有什么东西可以挂钩到这个设置来测量和跟踪代码覆盖率?
continuous-integration unit-testing scala code-coverage hudson
我在Scala中有一个Set(我可以选择任何实现,因为我正在创建Set.我正在使用的Java库需要一个java.util.Set [String].
以下是在Scala中执行此操作的正确方法(使用scala.collection.jcl.HashSet#underlyinges):
import com.javalibrary.Animals
var classes = new scala.collection.jcl.HashSet[String]
classes += "Amphibian"
classes += "Reptile"
Animals.find(classes.underlying)
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但由于我是Scala的新手,我想知道这是否是首选方式(我尝试的任何其他方式都会出现类型不匹配错误):
error: type mismatch;
found : scala.collection.jcl.HashSet[String]
required: java.util.Set[_]
Run Code Online (Sandbox Code Playgroud) scala type-conversion scala-2.8 scala-java-interop scala-collections
我看到两种风格都被广泛使用:#1 lambda { raise "Boom" }.should raise_error和#2 expect { raise "Boom" }.to raise_error.我喜欢期待..因为它读得更好并且隐藏了proc的创建.
我看了一下rspec代码,似乎期待..来建议,但我经常遇到使用lambda ... should的库.期待..更新,因此不是"着名的"呢?
一种快速/ git高效的方式来打开large()repo(〜9.8k文件)下的任何文件.
我尝试了各种解决方案,比如Textmate.el和find-file-in-repository.我通过之前的SO问题找到了这些解决方案,例如this和this以及LocateFilesAnywhere EmacsWiki.
虽然这两种解决方案都适用于小型到mdeium回收,但在这种情况下,它们几乎无法使用.当我开始输入文件名时,在看到任何结果之前有几秒钟的延迟.而改变搜索的任何部分也非常滞后.
我认为主要问题是在键入任何字符时,emacs/ find-file-in-repository启动一个shell命令(git ls-files...).当我停止打字时,我真的只需要这样做.
find-file-in-repository,我希望只有在我停止输入时才调用find-command(比如说300ms的间隙).我有一个文件层次结构,一些子目录是相对符号链接.我正在使用RubyFind.find来抓取这些目录并找到一些特定的文件.然而,它不会查看任何符号链接的目录(它遵循符号链接的文件).
看看源代码似乎问题是因为它File.lstat(file).directory?用于测试某些东西是否是目录.这将返回false符号链接但File.stat.directory?返回true.
我如何制作Find.find跟随符号链接,缺少猴子修补它File.stat而不是File.lstat?
我想在Go中创建一个2d数组:
board := make([][]string, m)
for i := range board {
board[i] = make([]string, n)
}
Run Code Online (Sandbox Code Playgroud)
但是,鉴于其详细程度,我想知道是否有更好或更简洁的方法来处理这个问题(要么生成动态数组,要么使用不同/惯用的数据结构来处理这样的棋盘游戏数据)?
背景:
在Python中遇到了这个方便的正则表达式实用程序(我是Python的初学者).例如,使用正则表达式
(?P<id>[a-zA-Z_]\w*)
Run Code Online (Sandbox Code Playgroud)
我可以将匹配的数据称为
m.group('id')
Run Code Online (Sandbox Code Playgroud)
(完整文档:在这里查找"符号组名称" )
在Ruby中,我们可以使用$1, $2或使用MatchData对象(m[1], m[2]等)访问匹配的引用.在Ruby中有类似于Python的Symbolic Group Names吗?
我看到在#filter上定义了它Map,但是我不知道如何使用它。有人愿意分享一个例子吗?
我有一个深度嵌套的TreeMap实例(TreeMap<String, Map<String, Map<*, *>>>),我想要filter/find第一个(这是该域中唯一的)顶级键,该键具有某些与值更深的内容相关的特征。
数据如下所示:
{
"i1": {
"aliases": {}
},
"i2": {
"aliases": {}
},
"i3": {
"aliases": {}
},
"i4": {
"aliases": {
"alias-im-looking-for": {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有以下以下非功能性代码可立即解决该问题:
val indexToAliasMappingType = LinkedTreeMap<String, Map<String, Map<*, *>>>()
val indexToAliasMappings = Gson().fromJson(response.jsonString, indexToAliasMappingType.javaClass)
var currentIndexName = ""
for ((index, aliasMappings) in indexToAliasMappings) {
val hasCurrentAlias = aliasMappings.get("aliases")?.containsKey(alias)
if (hasCurrentAlias != null && hasCurrentAlias) {
currentIndexName = index
}
}
return currentIndexName
Run Code Online (Sandbox Code Playgroud) 我可以运行emacs并启动slime(with M-x slime).此时,我在劣质lisp缓冲区中获取REPL 并可以在那里运行lisp.但是,当我在另一个缓冲区没有粘液,善良作品(的开拓Lisp代码C-x C-e,C-c C-k等等),我一直在看到这个消息的缓冲区(用编码器脉冲数数):
粘连:未连接.
轮询 "/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202" ..(中止与`的Mx煤泥中止连接".)[69倍]
让我觉得slime没有连接到正确的lisp解释器,但由于我对emacs和lisp很新,我被困在这里.我的设置是:
我计划从网页中提取(基本上是在获得许可的情况下抓取)一些数据并将其存储在 elasticsearch 中(您知道,用于搜索)。
虽然我有权从网站上抓取数据,
当我将其存储在 es 中时,我计划将其放入一个索引和映射类型中,例如thing.
但是,随着时间的推移,源(HTML 网页)可能会随着它们添加/删除/更改其中一些条目的内容而发生变化。由于源中没有标识符,我无法轻松识别新的(更糟糕的是,已删除或已更改的)。
我想让我的 es 索引保持最新,我在想的是某种蓝绿色机制:
index-prod,进程构建的新索引是index-rc(候选发布)index-rc基于一些启发式进行验证(对条目数量的灵活速度检查、我们知道应该工作的示例查询等)我计划使用AWS Elastisearch Service托管elasticsearch集群,并且可能会使用Route 53 CNAMEs (也许是 ELB?)来制作一些东西,但我想知道 elasticsearch 本身是否有更隐式的支持来这样做?
本质上,我想将一个索引的数据交换为另一个。
deployment amazon-web-services elasticsearch blue-green-deployment
我有两个集合x,并y均具有不同数量的项目.我想在循环中循环x并做一些有副作用的事情y.y循环时我不想重复x.双方doseq并for重复y:
(for [x (range 5)
y ["A" "B"]]
[x y])
Run Code Online (Sandbox Code Playgroud)
这产生了([0 "A"] [0 "B"] [1 "A"] [1 "B"] [2 "A"] [2 "B"] [3 "A"] [3 "B"] [4 "A"] [4 "B"]).
我想要的是会产生的东西:([0 "A"] [1 "B"] [2 "A"] [3 "B"] [4 "A"]).
背景,我有来自文件和core.async频道的行(比如5),我想把每一行放到我的集合中的下一个频道,如:
(defn load-data
[file chans]
(with-open [rdr (io/reader file)]
(go
(doseq [l (line-seq rdr)
ch chans] …Run Code Online (Sandbox Code Playgroud) 我有一个列表,directions并希望在我向右或向左转弯时找到下一个方向.这是我的工作代码:
enum class Turn { R, L }
enum class Direction { N, E, S, W }
val directionsInRightTurnOrder = listOf(Direction.N, Direction.E, Direction.S, Direction.W)
private fun calculateNextHeading(heading: Direction, turn: Turn): Direction {
val currentIndex = directionsInRightTurnOrder.indexOf(heading)
var nextIndex = currentIndex + if (turn == Turn.R) 1 else -1
if (nextIndex >= directionsInRightTurnOrder.size)
nextIndex = directionsInRightTurnOrder.size - nextIndex
if (nextIndex < 0)
nextIndex += directionsInRightTurnOrder.size
return directionsInRightTurnOrder.get(nextIndex)
}
Run Code Online (Sandbox Code Playgroud)
directionsInRightTurnOrder列表并无限地(并且懒洋洋地)遍历它,那么这将更加简单和易于阅读.在Clojure中,我可以使用clojure.core/cycle来做到这一点:(take 5 (cycle ["a" "b"]))
# …Run Code Online (Sandbox Code Playgroud) ruby ×3
clojure ×2
emacs ×2
kotlin ×2
scala ×2
arrays ×1
common-lisp ×1
core.async ×1
deployment ×1
find ×1
go ×1
gson ×1
hudson ×1
installation ×1
java ×1
lisp ×1
python ×1
regex ×1
rspec ×1
rspec2 ×1
scala-2.8 ×1
slime ×1
symlink ×1
unit-testing ×1