From 5c92f776148a6868199a163ba3905a74793a6fbf Mon Sep 17 00:00:00 2001 From: joaquimg Date: Wed, 30 Apr 2025 20:21:46 -0300 Subject: [PATCH 1/3] Change max issues default --- src/ModelAnalyzer.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ModelAnalyzer.jl b/src/ModelAnalyzer.jl index 7f4040b..39f32ae 100644 --- a/src/ModelAnalyzer.jl +++ b/src/ModelAnalyzer.jl @@ -25,7 +25,7 @@ See [`summarize`](@ref), [`list_of_issues`](@ref), and function analyze end """ - summarize([io::IO,] AbstractData; verbose = true, max_issues = typemax(Int), kwargs...) + summarize([io::IO,] AbstractData; verbose = true, max_issues = 10, kwargs...) Print a summary of the analysis results contained in `AbstractData` to the specified IO stream. If no IO stream is provided, it defaults to `stdout`. @@ -84,12 +84,16 @@ function summarize( io::IO, issues::Vector{T}; verbose = true, - max_issues = typemax(Int), + max_issues = 10, ) where {T<:AbstractIssue} summarize(io, T, verbose = verbose) print(io, "\n## Number of issues\n\n") print(io, "Found ", length(issues), " issues") print(io, "\n\n## List of issues\n\n") + if length(issues) > max_issues + print(io, "Showing first ", max_issues, " issues " * + "($(length(issues) - max_issues) issues ommitted)\n\n") + end for issue in first(issues, max_issues) print(io, " * ") summarize(io, issue, verbose = verbose) From 2a73fce394de7c5163f0a56cbeb3acff9daff41c Mon Sep 17 00:00:00 2001 From: joaquimg Date: Thu, 1 May 2025 01:41:51 -0300 Subject: [PATCH 2/3] format --- src/ModelAnalyzer.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ModelAnalyzer.jl b/src/ModelAnalyzer.jl index 39f32ae..5f0e789 100644 --- a/src/ModelAnalyzer.jl +++ b/src/ModelAnalyzer.jl @@ -91,8 +91,12 @@ function summarize( print(io, "Found ", length(issues), " issues") print(io, "\n\n## List of issues\n\n") if length(issues) > max_issues - print(io, "Showing first ", max_issues, " issues " * - "($(length(issues) - max_issues) issues ommitted)\n\n") + print( + io, + "Showing first ", + max_issues, + " issues " * "($(length(issues) - max_issues) issues ommitted)\n\n", + ) end for issue in first(issues, max_issues) print(io, " * ") From 1880f23ef1022319cde0ff5d01ae29a81bc303b2 Mon Sep 17 00:00:00 2001 From: joaquimg Date: Thu, 1 May 2025 03:38:36 -0300 Subject: [PATCH 3/3] add missing test --- src/ModelAnalyzer.jl | 6 ++++-- src/feasibility.jl | 2 +- src/infeasibility.jl | 2 +- src/numerical.jl | 2 +- test/numerical.jl | 21 +++++++++++++++++++++ 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/ModelAnalyzer.jl b/src/ModelAnalyzer.jl index 5f0e789..04769cc 100644 --- a/src/ModelAnalyzer.jl +++ b/src/ModelAnalyzer.jl @@ -80,11 +80,13 @@ function summarize(io::IO, issue::AbstractIssue; verbose = true) end end +const DEFAULT_MAX_ISSUES = 10 + function summarize( io::IO, issues::Vector{T}; verbose = true, - max_issues = 10, + max_issues = DEFAULT_MAX_ISSUES, ) where {T<:AbstractIssue} summarize(io, T, verbose = verbose) print(io, "\n## Number of issues\n\n") @@ -95,7 +97,7 @@ function summarize( io, "Showing first ", max_issues, - " issues " * "($(length(issues) - max_issues) issues ommitted)\n\n", + " issues ($(length(issues) - max_issues) issues ommitted)\n\n", ) end for issue in first(issues, max_issues) diff --git a/src/feasibility.jl b/src/feasibility.jl index cb38584..089eaf2 100644 --- a/src/feasibility.jl +++ b/src/feasibility.jl @@ -685,7 +685,7 @@ function ModelAnalyzer.summarize( io::IO, data::Data; verbose = true, - max_issues = typemax(Int), + max_issues = ModelAnalyzer.DEFAULT_MAX_ISSUES, configurations = true, ) print(io, "## Feasibility Analysis\n\n") diff --git a/src/infeasibility.jl b/src/infeasibility.jl index 079c8e1..bec6055 100644 --- a/src/infeasibility.jl +++ b/src/infeasibility.jl @@ -677,7 +677,7 @@ function ModelAnalyzer.summarize( io::IO, data::Data; verbose = true, - max_issues = typemax(Int), + max_issues = ModelAnalyzer.DEFAULT_MAX_ISSUES, ) print(io, "## Infeasibility Analysis\n\n") diff --git a/src/numerical.jl b/src/numerical.jl index 35d9677..89cf660 100644 --- a/src/numerical.jl +++ b/src/numerical.jl @@ -2042,7 +2042,7 @@ function ModelAnalyzer.summarize( io::IO, data::Data; verbose = true, - max_issues = typemax(Int), + max_issues = ModelAnalyzer.DEFAULT_MAX_ISSUES, configurations = true, dimensions = true, ranges = true, diff --git a/test/numerical.jl b/test/numerical.jl index 1a6e98d..4077bf7 100644 --- a/test/numerical.jl +++ b/test/numerical.jl @@ -995,6 +995,27 @@ function test_qp_range() return end +function test_more_than_max_issues() + model = Model() + @variable(model, xg[1:20] <= 2e9) + data = ModelAnalyzer.analyze(ModelAnalyzer.Numerical.Analyzer(), model) + list = ModelAnalyzer.list_of_issue_types(data) + @test length(list) >= 1 + ret = ModelAnalyzer.list_of_issues( + data, + ModelAnalyzer.Numerical.LargeBoundCoefficient, + ) + @test length(ret) == 20 + + buf = IOBuffer() + ModelAnalyzer.summarize(buf, data) + str = String(take!(buf)) + @test occursin("Showing first ", str) + @test occursin(" issues ommitted)\n\n", str) + + return +end + end # module TestNumerical.runtests()